blob: a3e50c0c699b271dcc8bd6e14cc4b8402384fc4a [file] [log] [blame]
// RUN: %target-run-simple-swift
// REQUIRES: executable_test
// REQUIRES: OS=macosx
// REQUIRES: rdar33888321
import StdlibUnittest
import Foundation
import Dispatch
import SwiftSyntax
var LazyCaching = TestSuite("LazyCaching")
LazyCaching.test("Pathological") {
let tuple = SyntaxFactory.makeVoidTupleType()
DispatchQueue.concurrentPerform(iterations: 100) { _ in
expectEqual(tuple.leftParen, tuple.leftParen)
}
}
LazyCaching.test("TwoAccesses") {
let tuple = SyntaxFactory.makeVoidTupleType()
let queue1 = DispatchQueue(label: "queue1")
let queue2 = DispatchQueue(label: "queue2")
var node1: TokenSyntax?
var node2: TokenSyntax?
let group = DispatchGroup()
queue1.async(group: group) {
node1 = tuple.leftParen
}
queue2.async(group: group) {
node2 = tuple.leftParen
}
group.wait()
let final = tuple.leftParen
expectNotNil(node1)
expectNotNil(node2)
expectEqual(node1, node2)
expectEqual(node1, final)
expectEqual(node2, final)
}
runAllTests()