// RUN: %target-run-simple-swift // REQUIRES: executable_test // REQUIRES: OS=macosx // REQUIRES: objc_interop 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()