From da586f2bd47052f8786bd1de91ac8305076b109e Mon Sep 17 00:00:00 2001 From: stevenwong Date: Fri, 4 Aug 2023 08:45:12 +0800 Subject: [PATCH] Remove syntax classification lit-based tests Also remove `lit-test-helper` in the codebase --- Package.swift | 9 - .../CommandLineArguments.swift | 92 ---- Sources/lit-test-helper/main.swift | 192 --------- build-script.py | 5 - lit_tests/coloring.swift | 404 ------------------ lit_tests/coloring_comments.swift | 233 ---------- lit_tests/coloring_configs.swift | 379 ---------------- lit_tests/coloring_keywords.swift | 11 - lit_tests/coloring_unclosed_hash_if.swift | 13 - lit_tests/lit.cfg | 2 - 10 files changed, 1340 deletions(-) delete mode 100644 Sources/lit-test-helper/CommandLineArguments.swift delete mode 100644 Sources/lit-test-helper/main.swift delete mode 100644 lit_tests/coloring.swift delete mode 100644 lit_tests/coloring_comments.swift delete mode 100644 lit_tests/coloring_configs.swift delete mode 100644 lit_tests/coloring_keywords.swift delete mode 100644 lit_tests/coloring_unclosed_hash_if.swift diff --git a/Package.swift b/Package.swift index 15eb17c0785..68acd814616 100644 --- a/Package.swift +++ b/Package.swift @@ -269,15 +269,6 @@ let package = Package( // MARK: - Deprecated targets - // MARK: lit-test-helper - // TODO: All the lit-based tests should be migrated to XCTest so we don't have a - // dependency on FileCheck - - .executableTarget( - name: "lit-test-helper", - dependencies: ["SwiftIDEUtils", "SwiftSyntax", "SwiftParser"] - ), - // MARK: PerformanceTest // TODO: Should be included in SwiftParserTest/SwiftSyntaxTest diff --git a/Sources/lit-test-helper/CommandLineArguments.swift b/Sources/lit-test-helper/CommandLineArguments.swift deleted file mode 100644 index 9912cacd90b..00000000000 --- a/Sources/lit-test-helper/CommandLineArguments.swift +++ /dev/null @@ -1,92 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// This source file is part of the Swift.org open source project -// -// Copyright (c) 2014 - 2023 Apple Inc. and the Swift project authors -// Licensed under Apache License v2.0 with Runtime Library Exception -// -// See https://swift.org/LICENSE.txt for license information -// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors -// -//===----------------------------------------------------------------------===// - -struct CommandLineArguments { - struct MissingArgumentError: Error, CustomStringConvertible { - let argName: String - - var description: String { - return "Missing required argument: \(argName)" - } - } - struct UnkeyedArgumentError: Error, CustomStringConvertible { - let argName: String - - var description: String { - return "Unexpectedly found command line argument \(argName) without a key" - } - } - struct InvalidArgumentValueError: Error, CustomStringConvertible { - let argName: String - let value: String - - var description: String { - return "\(value) is not a valid value for \(argName)" - } - } - - private let args: [String: [String]] - - static func parse(_ args: T) throws -> CommandLineArguments - where T.Element == String { - var parsedArgs: [String: [String]] = [:] - let addArg = { (key: String, val: String) in - parsedArgs[key, default: []].append(val) - } - var currentKey: String? = nil - for arg in args { - if arg.hasPrefix("-") { - // Parse a new key - if let currentKey = currentKey { - // The last key didn't have a value. Just add it with an empty string as - // the value to the parsed args - addArg(currentKey, "") - } - currentKey = arg - } else { - if let currentKey = currentKey { - addArg(currentKey, arg) - } else { - throw UnkeyedArgumentError(argName: arg) - } - currentKey = nil - } - } - if let currentKey { - // The last key didn't have a value. Just add it with an empty string as - // the value to the parsed args - addArg(currentKey, "") - } - return CommandLineArguments(args: parsedArgs) - } - - subscript(key: String) -> String? { - let keyargs = args[key, default: []] - return keyargs.last - } - - func getRequired(_ key: String) throws -> String { - if let value = self[key] { - return value - } else { - throw MissingArgumentError(argName: key) - } - } - - func has(_ key: String) -> Bool { - return self[key] != nil - } - - func getValues(_ key: String) throws -> [String] { - return args[key, default: []] - } -} diff --git a/Sources/lit-test-helper/main.swift b/Sources/lit-test-helper/main.swift deleted file mode 100644 index 486491138c1..00000000000 --- a/Sources/lit-test-helper/main.swift +++ /dev/null @@ -1,192 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// This source file is part of the Swift.org open source project -// -// Copyright (c) 2014 - 2023 Apple Inc. and the Swift project authors -// Licensed under Apache License v2.0 with Runtime Library Exception -// -// See https://swift.org/LICENSE.txt for license information -// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors -// -//===----------------------------------------------------------------------===// - -import SwiftSyntax -import SwiftParser -import Foundation - -extension Parser { - public static func parse(_ url: URL) throws -> SourceFileSyntax { - let source = try String(contentsOf: url) - return Self.parse(source: source) - } -} - -/// Print the given message to stderr -func printerr(_ message: String, terminator: String = "\n") { - FileHandle.standardError.write((message + terminator).data(using: .utf8)!) -} - -/// Print the help message -func printHelp() { - print( - """ - Utility to test SwiftSyntax syntax tree creation. - - Actions (must specify one): - -classify-syntax - Parse the given source file (-source-file) and output it with - tokens classified for syntax colouring. - -roundtrip - Parse the given source file (-source-file) and print it out using - its syntax tree. - -print-tree - Parse the given source file (-source-file) and output its syntax - tree. - -help - Print this help message - - Arguments: - -source-file FILENAME - The path to a Swift source file to parse - -out FILENAME - The file to which the source representation of the post-edit syntax - tree shall be written. - -swift-version - Interpret input according to a specific Swift language version - number - -enable-bare-slash-regex [0|1] - Enable or disable the use of forward slash regular-expression - literal syntax - """ - ) -} - -/// Rewrites a parsed tree with all constructed nodes. -class TreeReconstructor: SyntaxRewriter { - override func visit(_ token: TokenSyntax) -> TokenSyntax { - let token = TokenSyntax( - token.tokenKind, - leadingTrivia: token.leadingTrivia, - trailingTrivia: token.trailingTrivia, - presence: token.presence - ) - return token - } -} - -func performClassifySyntax(args: CommandLineArguments) throws { - let treeURL = URL(fileURLWithPath: try args.getRequired("-source-file")) - - let tree = try Parser.parse(treeURL) - let result = ClassifiedSyntaxTreePrinter.print(Syntax(tree)) - do { - // Sanity check that we get the same result if the tree has constructed nodes. - let ctorTree = TreeReconstructor(viewMode: .sourceAccurate).visit(tree) - let ctorResult = ClassifiedSyntaxTreePrinter.print(Syntax(ctorTree)) - if ctorResult != result { - throw TestingError.classificationVerificationFailed(result, ctorResult) - } - } - - if let outURL = args["-out"].map(URL.init(fileURLWithPath:)) { - try result.write(to: outURL, atomically: false, encoding: .utf8) - } else { - print(result) - } -} - -enum TestingError: Error, CustomStringConvertible { - case classificationVerificationFailed(String, String) - case readingSourceFileFailed(URL) - case roundTripFailed - - public var description: String { - switch self { - case .classificationVerificationFailed(let parsed, let constructed): - return """ - parsed vs constructed tree resulted in different classification output - --- PARSED: - \(parsed) - --- CONSTRUCTED: - \(constructed) - """ - case .readingSourceFileFailed(let url): - return "Reading the source file at \(url) failed" - case .roundTripFailed: - return "Round-tripping the source file failed" - } - } -} - -func performRoundtrip(args: CommandLineArguments) throws { - let sourceURL = URL(fileURLWithPath: try args.getRequired("-source-file")) - let tree = try Parser.parse(sourceURL) - let treeText = tree.description - - if let outURL = args["-out"].map(URL.init(fileURLWithPath:)) { - try treeText.write(to: outURL, atomically: false, encoding: .utf8) - } else { - print(treeText) - } -} - -class NodePrinter: SyntaxAnyVisitor { - init() { - super.init(viewMode: .sourceAccurate) - } - - override func visitAny(_ node: Syntax) -> SyntaxVisitorContinueKind { - print("<\(type(of: node.asProtocol(SyntaxProtocol.self)))>", terminator: "") - return .visitChildren - } - override func visitAnyPost(_ node: Syntax) { - print("", terminator: "") - } - override func visit(_ token: TokenSyntax) -> SyntaxVisitorContinueKind { - print("<\(type(of: token))>", terminator: "") - print(token, terminator: "") - return .visitChildren - } -} - -func printSyntaxTree(args: CommandLineArguments) throws { - let treeURL = URL(fileURLWithPath: try args.getRequired("-source-file")) - let tree = try Parser.parse(treeURL) - let printer = NodePrinter() - printer.walk(tree) -} - -/// Write the given string to stderr **without** appending a newline character. -func writeToStderr(_ msg: String) { - FileHandle.standardError.write(msg.data(using: .utf8)!) -} - -do { - let args = try CommandLineArguments.parse(CommandLine.arguments.dropFirst()) - - if args.has("-classify-syntax") { - try performClassifySyntax(args: args) - } else if args.has("-roundtrip") { - try performRoundtrip(args: args) - } else if args.has("-print-tree") { - try printSyntaxTree(args: args) - } else if args.has("-help") { - printHelp() - } else { - printerr( - """ - No action specified. - See -help for information about available actions - """ - ) - exit(1) - } - exit(0) -} catch let error as TestingError { - printerr("\(error)") - exit(1) -} catch { - printerr("\(error)") - printerr("Run lit-test-helper -help for more help.") - exit(1) -} diff --git a/build-script.py b/build-script.py index 3951322ef1d..980e0fbc4e9 100755 --- a/build-script.py +++ b/build-script.py @@ -405,15 +405,11 @@ def run_lit_tests(toolchain: str, build_dir: Optional[str], release: bool, examples_bin_path = find_examples_bin_path( toolchain=toolchain, build_dir=build_dir, release=release) - lit_test_helper_exec = os.path.join(product_bin_path, "lit-test-helper") - lit_call = ["python3", LIT_EXEC] lit_call.append(os.path.join(PACKAGE_DIR, "lit_tests")) if filecheck_exec: lit_call.extend(["--param", "FILECHECK=" + filecheck_exec]) - if lit_test_helper_exec: - lit_call.extend(["--param", "LIT_TEST_HELPER=" + lit_test_helper_exec]) lit_call.extend(["--param", "EXAMPLES_BIN_PATH=" + examples_bin_path]) lit_call.extend(["--param", "TOOLCHAIN=" + toolchain]) @@ -537,7 +533,6 @@ def test_command(args: argparse.Namespace) -> None: disable_sandbox=args.disable_sandbox, ) - builder.buildProduct("lit-test-helper") builder.buildExample("ExamplePlugin") run_tests( diff --git a/lit_tests/coloring.swift b/lit_tests/coloring.swift deleted file mode 100644 index f75a69a704d..00000000000 --- a/lit_tests/coloring.swift +++ /dev/null @@ -1,404 +0,0 @@ -// RUN: %lit-test-helper -classify-syntax -source-file %s | %FileCheck %s - -// https://github.com/apple/swift-syntax/issues/829 -// XFAIL: * - -enum List { - case Nil - // rdar://21927124 - // CHECK: indirect case Cons(T, List) - indirect case Cons(T, List) -} - -// CHECK: struct S { -struct S { - // CHECK: var x : Int - var x : Int - // CHECK: var y : Int.Int - var y : Int.Int - // CHECK: var a, b : Int - var a, b : Int -} - -enum EnumWithDerivedEquatableConformance : Int { -// CHECK-LABEL: enum EnumWithDerivedEquatableConformance : {{()}}Int{{()?}} { - case CaseA -// CHECK-NEXT: case CaseA - case CaseB, CaseC -// CHECK-NEXT: case CaseB, CaseC - case CaseD = 30, CaseE -// CHECK-NEXT: case CaseD = 30, CaseE -} -// CHECK-NEXT: } - -// CHECK: class MyCls { -class MyCls { - // CHECK: var www : Int - var www : Int - - // CHECK: func foo(x: Int) {} - func foo(x: Int) {} - // CHECK: var aaa : Int { - var aaa : Int { - // CHECK: get {} - get {} - // CHECK: set {} - set {} - } - // CHECK: var bbb : Int { - var bbb : Int { - // CHECK: set { - set { - // CHECK: var tmp : Int - var tmp : Int - } - // CHECK: get { - get { - // CHECK: var tmp : Int - var tmp : Int - } - } - - // CHECK: subscript (i : Int, j : Int) -> Int { - subscript (i : Int, j : Int) -> Int { - // CHECK: get { - get { - // CHECK: return i + j - return i + j - } - // CHECK: set(v) { - set(v) { - // CHECK: v + i - j - v + i - j - } - } - - // CHECK: func multi(_ name: Int, otherpart x: Int) {} - func multi(_ name: Int, otherpart x: Int) {} -} - -// CHECK-LABEL: class Attributes { -class Attributes { -// CHECK: @IBOutlet var v0: Int - @IBOutlet var v0: Int - -// CHECK: @IBOutlet @IBOutlet var v1: String - @IBOutlet @IBOutlet var v1: String - -// CHECK: @objc @IBOutlet var v2: String - @objc @IBOutlet var v2: String - -// CHECK: @IBOutlet @objc var v3: String - @IBOutlet @objc var v3: String - -// CHECK: @available(*, unavailable) func f1() {} - @available(*, unavailable) func f1() {} - -// CHECK: @available(*, unavailable) @IBAction func f2() {} - @available(*, unavailable) @IBAction func f2() {} - -// CHECK: @IBAction @available(*, unavailable) func f3() {} - @IBAction @available(*, unavailable) func f3() {} - -// CHECK: mutating func func_mutating_1() {} - mutating func func_mutating_1() {} - -// CHECK: nonmutating func func_mutating_2() {} - nonmutating func func_mutating_2() {} -} - -func stringLikeLiterals() { -// CHECK: var us1: UnicodeScalar = "a" - var us1: UnicodeScalar = "a" -// CHECK: var us2: UnicodeScalar = "ы" - var us2: UnicodeScalar = "ы" - -// CHECK: var ch1: Character = "a" - var ch1: Character = "a" -// CHECK: var ch2: Character = "あ" - var ch2: Character = "あ" - -// CHECK: var s1 = "abc абвгд あいうえお" - var s1 = "abc абвгд あいうえお" -} - -// CHECK: var globComp : Int -var globComp : Int { - // CHECK: get { - get { - // CHECK: return 0 - return 0 - } -} - -// CHECK: func foo(n: Float) -> Int { -func foo(n: Float) -> Int { - // CHECK: var fnComp : Int - var fnComp : Int { - // CHECK: get { - get { - // CHECK: var a: Int - // CHECK: return 0 - var a: Int - return 0 - } - } - // CHECK: var q = MyCls() - var q = MyCls() - // CHECK: var ee = "yoo"; - var ee = "yoo"; - // CHECK: return 100009 - return 100009 -} - -// CHECK: protocol Prot -protocol Prot { - // CHECK: typealias Blarg - typealias Blarg - // CHECK: func protMeth(x: Int) - func protMeth(x: Int) - // CHECK: var protocolProperty1: Int { get } - var protocolProperty1: Int { get } - // CHECK: var protocolProperty2: Int { get set } - var protocolProperty2: Int { get set } -} - -// CHECK: infix operator *-* : FunnyPrecedence{{$}} -infix operator *-* : FunnyPrecedence - -// CHECK: precedencegroup FunnyPrecedence -// CHECK-NEXT: associativity: left{{$}} -// CHECK-NEXT: higherThan: MultiplicationPrecedence -precedencegroup FunnyPrecedence { - associativity: left - higherThan: MultiplicationPrecedence -} - -// CHECK: func *-*(l: Int, r: Int) -> Int { return l }{{$}} -func *-*(l: Int, r: Int) -> Int { return l } - -// CHECK: infix operator *-+* : FunnyPrecedence -infix operator *-+* : FunnyPrecedence - -// CHECK: func *-+*(l: Int, r: Int) -> Int { return l }{{$}} -func *-+*(l: Int, r: Int) -> Int { return l } - -// CHECK: infix operator *--*{{$}} -infix operator *--* - -// CHECK: func *--*(l: Int, r: Int) -> Int { return l }{{$}} -func *--*(l: Int, r: Int) -> Int { return l } - -// CHECK: protocol Prot2 : Prot {} -protocol Prot2 : Prot {} - -// CHECK: class SubCls : MyCls, Prot {} -class SubCls : MyCls, Prot {} - -// CHECK: func genFn<T : Prot>(_: T) -> Int where T.Blarg : Prot2 {}{{$}} -func genFn(_: T) -> Int where T.Blarg : Prot2 {} - -func f(x: Int) -> Int { - // CHECK: "This is string \(genFn({(a:Int -> Int) in a})) interpolation" - "This is string \(genFn({(a:Int -> Int) in a})) interpolation" - - // CHECK: "This is unterminated - "This is unterminated - - // CHECK: "This is unterminated with ignored \(interpolation) in it - "This is unterminated with ignored \(interpolation) in it - - // CHECK: "This is terminated with invalid \(interpolation" + "in it" - "This is terminated with invalid \(interpolation" + "in it" - - // CHECK: """ - // CHECK-NEXT: This is a multiline string. - // CHECK-NEXT: """ - """ - This is a multiline string. -""" - - // CHECK: """ - // CHECK-NEXT: This is a multiline\( "interpolated" )string - // CHECK-NEXT: \( - // CHECK-NEXT: """ - // CHECK-NEXT: inner - // CHECK-NEXT: """ - // CHECK-NEXT: ) - // CHECK-NEXT: """ - """ - This is a multiline\( "interpolated" )string - \( - """ - inner - """ - ) - """ - - // CHECK: "\(1)\(1)" - "\(1)\(1)" -} - -// CHECK: func bar(x: Int) -> (Int, Float) { -func bar(x: Int) -> (Int, Float) { - // CHECK: foo(Float()) - foo(Float()) -} - -class GenC {} - -func test() { - // CHECK: {{()?}}GenC{{()?}}<Int, Float>() - var x = GenC() -} - -// CHECK: typealias MyInt = Int -typealias MyInt = Int - -func test2(x: Int) { - // CHECK: "\(x)" - "\(x)" -} - -// CHECK: class Observers { -class Observers { - // CHECK: var p1 : Int { - var p1 : Int { - // CHECK: willSet(newValue) {} - willSet(newValue) {} - // CHECK: didSet {} - didSet {} - } - // CHECK: var p2 : Int { - var p2 : Int { - // CHECK: didSet {} - didSet {} - // CHECK: willSet {} - willSet {} - } -} - -// CHECK: func test3(o: AnyObject) { -func test3(o: AnyObject) { - // CHECK: _ = o is MyCls ? o as MyCls : o as! MyCls as MyCls + 1 - _ = o is MyCls ? o as MyCls : o as! MyCls as MyCls + 1 -} - -// CHECK: class MySubClass : MyCls { -class MySubClass : MyCls { - // CHECK: override func foo(x: Int) {} - override func foo(x: Int) {} - - // CHECK: convenience init(a: Int) {} - convenience init(a: Int) {} -} - -// CHECK: var g1 = { (x: Int) -> Int in return 0 } -var g1 = { (x: Int) -> Int in return 0 } - -// CHECK: infix operator ~~ { -infix operator ~~ {} -// CHECK: prefix operator *~~ { -prefix operator *~~ {} -// CHECK: postfix operator ~~* { -postfix operator ~~* {} - -func test_defer() { - defer { - // CHECK: let x : Int = 0 - let x : Int = 0 - } -} - -func test6(x: T) {} -// CHECK: func test6<T : Prot>(x: T) {}{{$}} - -// CHECK: func <#test1#> () {} -func <#test1#> () {} - -func funcTakingFor(for internalName: Int) {} -// CHECK: func funcTakingFor(for internalName: Int) {} - -func funcTakingIn(in internalName: Int) {} -// CHECK: func funcTakingIn(in internalName: Int) {} - -_ = 123 -// CHECK: 123 -_ = -123 -// CHECK: -123 -_ = -1 -// CHECK: -1 -_ = -0x123 -// CHECK: -0x123 -_ = -3.1e-5 -// CHECK: -3.1e-5 - -"--\"\(x) --" -// CHECK: "--\"\(x) --" - -func keywordAsLabel1(in: Int) {} -// CHECK: func keywordAsLabel1(in: Int) {} -func keywordAsLabel2(for: Int) {} -// CHECK: func keywordAsLabel2(for: Int) {} -func keywordAsLabel3(if: Int, for: Int) {} -// CHECK: func keywordAsLabel3(if: Int, for: Int) {} -func keywordAsLabel4(_: Int) {} -// CHECK: func keywordAsLabel4(_: Int) {} -func keywordAsLabel5(_: Int, for: Int) {} -// CHECK: func keywordAsLabel5(_: Int, for: Int) {} -func keywordAsLabel6(if func: Int) {} -// CHECK: func keywordAsLabel6(if func: Int) {} - -func foo1() { -// CHECK: func foo1() { - keywordAsLabel1(in: 1) -// CHECK: keywordAsLabel1(in: 1) - keywordAsLabel2(for: 1) -// CHECK: keywordAsLabel2(for: 1) - keywordAsLabel3(if: 1, for: 2) -// CHECK: keywordAsLabel3(if: 1, for: 2) - keywordAsLabel5(1, for: 2) -// CHECK: keywordAsLabel5(1, for: 2) - - _ = (if: 0, for: 2) -// CHECK: _ = (if: 0, for: 2) - _ = (_: 0, _: 2) -// CHECK: _ = (_: 0, _: 2) -} - -func foo2(O1 : Int?, O2: Int?, O3: Int?) { - guard let _ = O1, var _ = O2, let _ = O3 else { } -// CHECK: guard let _ = O1, var _ = O2, let _ = O3 else { } - if let _ = O1, var _ = O2, let _ = O3 {} -// CHECK: if let _ = O1, var _ = O2, let _ = O3 {} -} - -func keywordInCaseAndLocalArgLabel(_ for: Int, for in: Int, class _: Int) { -// CHECK: func keywordInCaseAndLocalArgLabel(_ for: Int, for in: Int, class _: Int) { - switch(`for`, `in`) { - case (let x, let y): -// CHECK: case (let x, let y): - print(x, y) - } -} - -// CHECK: class Ownership { -class Ownership { - // CHECK: weak var w - weak var w - // CHECK: unowned var u - unowned var u - // CHECK: unowned(unsafe) var uu - unowned(unsafe) var uu -} -// FIXME: CHECK: let closure = { [weak x=bindtox, unowned y=bindtoy, unowned(unsafe) z=bindtoz] in } -let closure = { [weak x=bindtox, unowned y=bindtoy, unowned(unsafe) z=bindtoz] in } - -protocol FakeClassRestrictedProtocol : `class` {} -// CHECK: protocol FakeClassRestrictedProtocol : `class` {} - -// CHECK: func foo() -> some P {} -func foo() -> some P {} - -// CHECK: func foo() -> some P & Q {} -func foo() -> some P & Q {} diff --git a/lit_tests/coloring_comments.swift b/lit_tests/coloring_comments.swift deleted file mode 100644 index 2ebdc70222c..00000000000 --- a/lit_tests/coloring_comments.swift +++ /dev/null @@ -1,233 +0,0 @@ -// RUN: %lit-test-helper -classify-syntax -source-file %s | %FileCheck %s - -// CHECK: /* foo is the best */ -/* foo is the best */ -func foo(n: Float) {} - -///- returns: single-line, no space -// CHECK: ///- returns: single-line, no space - -/// - returns: single-line, 1 space -// CHECK: /// - returns: single-line, 1 space - -/// - returns: single-line, 2 spaces -// CHECK: /// - returns: single-line, 2 spaces - -/// - returns: single-line, more spaces -// CHECK: /// - returns: single-line, more spaces - -// CHECK: protocol Prot -protocol Prot {} - -func f(x: Int) -> Int { - // CHECK: // string interpolation is the best - // string interpolation is the best - "This is string \(x) interpolation" -} - -// FIXME: blah. -// FIXME: blah blah -// Something something, FIXME: blah - -// CHECK: // FIXME: blah. -// CHECK: // FIXME: blah blah -// CHECK: // Something something, FIXME: blah - - - -/* FIXME: blah*/ - -// CHECK: /* FIXME: blah*/ - -/* - * FIXME: blah - * Blah, blah. - */ - -// CHECK: /* -// CHECK: * FIXME: blah -// CHECK: * Blah, blah. -// CHECK: */ - -// TODO: blah. -// TTODO: blah. -// MARK: blah. - -// CHECK: // TODO: blah. -// CHECK: // TTODO: blah. -// CHECK: // MARK: blah. - -// CHECK: func test5() -> Int { -func test5() -> Int { - // CHECK: // TODO: something, something. - // TODO: something, something. - // CHECK: return 0 - return 0 -} - -// http://whatever.com?ee=2&yy=1 and radar://123456 -/* http://whatever.com FIXME: see in http://whatever.com/fixme - http://whatever.com */ - -// CHECK: // http://whatever.com?ee=2&yy=1 and radar://123456 -// CHECK: /* http://whatever.com FIXME: see in http://whatever.com/fixme -// CHECK: http://whatever.com */ - -// CHECK: // http://whatever.com/what-ever -// http://whatever.com/what-ever - -/// Brief. -/// -/// Simple case. -/// -/// - parameter x: A number -/// - parameter y: Another number -/// - PaRamEteR z-hyphen-q: Another number -/// - parameter : A strange number... -/// - parameternope1: Another number -/// - parameter nope2 -/// - parameter: nope3 -/// -parameter nope4: Another number -/// * parameter nope5: Another number -/// - parameter nope6: Another number -/// - Parameters: nope7 -/// - seealso: yes -/// - seealso: yes -/// - seealso: -/// -seealso: nope -/// - seealso : nope -/// - seealso nope -/// - returns: `x + y` -func foo(x: Int, y: Int) -> Int { return x + y } -// CHECK: /// Brief. -// CHECK: /// -// CHECK: /// Simple case. -// CHECK: /// -// CHECK: /// - parameter x: A number -// CHECK: /// - parameter y: Another number -// CHECK: /// - PaRamEteR z-hyphen-q: Another number -// CHECK: /// - parameter : A strange number... -// CHECK: /// - parameternope1: Another number -// CHECK: /// - parameter nope2 -// CHECK: /// - parameter: nope3 -// CHECK: /// -parameter nope4: Another number -// CHECK: /// * parameter nope5: Another number -// CHECK: /// - parameter nope6: Another number -// CHECK: /// - Parameters: nope7 -// CHECK: /// - seealso: yes -// CHECK: /// - seealso: yes -// CHECK: /// - seealso: -// CHECK: /// -seealso: nope -// CHECK: /// - seealso : nope -// CHECK: /// - seealso nope -// CHECK: /// - returns: `x + y` -// CHECK: func foo(x: Int, y: Int) -> Int { return x + y } - - -/// Brief. -/// -/// Simple case. -/// -/// - Parameters: -/// - x: A number -/// - y: Another number -/// -///- note: NOTE1 -/// -/// - NOTE: NOTE2 -/// - note: Not a Note field (not at top level) -/// - returns: `x + y` -func bar(x: Int, y: Int) -> Int { return x + y } -// CHECK: /// Brief. -// CHECK: /// -// CHECK: /// Simple case. -// CHECK: /// -// CHECK: /// - Parameters: -// CHECK: /// - x: A number -// CHECK: /// - y: Another number -// CHECK: /// -// CHECK: ///- note: NOTE1 -// CHECK: /// -// CHECK: /// - NOTE: NOTE2 -// CHECK: /// - note: Not a Note field (not at top level) -// CHECK: /// - returns: `x + y` -// CHECK: func bar(x: Int, y: Int) -> Int { return x + y } - -/** - Does pretty much nothing. - - Not a parameter list: improper indentation. - - Parameters: sdfadsf - - - WARNING: - WARNING: Should only have one field - - - $$$: Not a field. - - Empty field, OK: -*/ -func baz() {} -// CHECK: /** -// CHECK: Does pretty much nothing. -// CHECK: Not a parameter list: improper indentation. -// CHECK: - Parameters: sdfadsf -// CHECK: - WARNING: - WARNING: Should only have one field -// CHECK: - $$$: Not a field. -// CHECK: Empty field, OK: -// CHECK: */ -// CHECK: func baz() {} - -/***/ -func emptyDocBlockComment() {} -// CHECK: /***/ -// CHECK: func emptyDocBlockComment() {} - -/** -*/ -func emptyDocBlockComment2() {} -// CHECK: /** -// CHECK: */ -// CHECK: func emptyDocBlockComment2() {} - -/** */ -func emptyDocBlockComment3() {} -// CHECK: /** */ -// CHECK: func emptyDocBlockComment3() {} - - -/**/ -func malformedBlockComment(f : () throws -> ()) rethrows {} -// CHECK: /**/ - -// CHECK: func malformedBlockComment(f : () throws -> ()) rethrows {} - -//: playground doc comment line -func playgroundCommentLine(f : () throws -> ()) rethrows {} -// CHECK: //: playground doc comment line - -/*: - playground doc comment multi-line -*/ -func playgroundCommentMultiLine(f : () throws -> ()) rethrows {} -// CHECK: /*: -// CHECK: playground doc comment multi-line -// CHECK: */ - -/// [strict weak ordering](http://en.wikipedia.org/wiki/Strict_weak_order#Strict_weak_orderings) -// CHECK: /// [strict weak ordering](http://en.wikipedia.org/wiki/Strict_weak_order#Strict_weak_orderings) - -/** aaa - - - returns: something - */ -// CHECK: - returns: something -let blah = 0 - -// Keep this as the last test -/** - Trailing off ... -func unterminatedBlockComment() {} -// CHECK: // Keep this as the last test -// CHECK: /** -// CHECK: Trailing off ... -// CHECK: func unterminatedBlockComment() {} -// CHECK: diff --git a/lit_tests/coloring_configs.swift b/lit_tests/coloring_configs.swift deleted file mode 100644 index 88113785596..00000000000 --- a/lit_tests/coloring_configs.swift +++ /dev/null @@ -1,379 +0,0 @@ -// RUN: %lit-test-helper -classify-syntax -source-file %s | %FileCheck %s - -// https://github.com/apple/swift-syntax/issues/1044 -// XFAIL: * - -// CHECK: var f : Int -var f : Int - -// CHECK: <#kw>#if <#id>os(<#id>macOS) -#if os(macOS) -#endif - -// CHECK: <#kw>#if <#id>CONF -#if CONF - // CHECK: var x : Int - var x : Int -// CHECK: <#kw>#else -#else - // CHECK: var x : Float - var x : Float -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if <#id>CONF -#if CONF - // CHECK: var x2 : Int - var x2 : Int -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if !<#id>CONF -#if !CONF - // CHECK: var x3 : Int - var x3 : Int -// CHECK: <#kw>#else -#else - // CHECK: var x3 : Float - var x3 : Float -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if !<#id>CONF -#if !CONF - // CHECK: var x4 : Int - var x4 : Int -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if <#id>CONF -#if CONF - // CHECK: var y1 : Int - var y1 : Int -// CHECK: <#kw>#elseif <#id>BAZ -#elseif BAZ - // CHECK: var y1 : String - var y1 : String -// CHECK: <#kw>#else -#else - // CHECK: var y1 : Float - var y1 : Float -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if !<#id>CONF -#if !CONF - // CHECK: var y2 : Int - var y2 : Int -// CHECK: <#kw>#elseif <#id>BAZ -#elseif BAZ - // CHECK: var y2 : String - var y2 : String -// CHECK: <#kw>#else -#else - // CHECK: var y2 : Float - var y2 : Float -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if !<#id>CONF -#if !CONF - // CHECK: var y3 : Int - var y3 : Int -// CHECK: <#kw>#elseif <#id>CONF -#elseif CONF - // CHECK: var y3 : String - var y3 : String -// CHECK: <#kw>#else -#else - // CHECK: var y3 : Float - var y3 : Float -// CHECK: <#kw>#endif -#endif - -// CHECK: var l : Int -var l : Int - -// CHECK: class C1 { -class C1 { - // CHECK: var f : Int - var f : Int - -// CHECK: <#kw>#if <#id>CONF -#if CONF - // CHECK: var x : Int - var x : Int -// CHECK: <#kw>#else -#else - // CHECK: var x : Float - var x : Float -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if <#id>CONF -#if CONF - // CHECK: var x2 : Int - var x2 : Int -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if !<#id>CONF -#if !CONF - // CHECK: var x3 : Int - var x3 : Int -// CHECK: <#kw>#else -#else - // CHECK: var x3 : Float - var x3 : Float -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if !<#id>CONF -#if !CONF - // CHECK: var x4 : Int - var x4 : Int -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if <#id>CONF -#if CONF - // CHECK: var y1 : Int - var y1 : Int -// CHECK: <#kw>#elseif <#id>BAZ -#elseif BAZ - // CHECK: var y1 : String - var y1 : String -// CHECK: <#kw>#else -#else - // CHECK: var y1 : Float - var y1 : Float -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if !<#id>CONF -#if !CONF - // CHECK: var y2 : Int - var y2 : Int -// CHECK: <#kw>#elseif <#id>BAZ -#elseif BAZ - // CHECK: var y2 : String - var y2 : String -// CHECK: <#kw>#else -#else - // CHECK: var y2 : Float - var y2 : Float -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if !<#id>CONF -#if !CONF - // CHECK: var y3 : Int - var y3 : Int -// CHECK: <#kw>#elseif <#id>CONF -#elseif CONF - // CHECK: var y3 : String - var y3 : String -// CHECK: <#kw>#else -#else - // CHECK: var y3 : Float - var y3 : Float -// CHECK: <#kw>#endif -#endif - - // CHECK: var l : Int - var l : Int -} - -// CHECK: func test1() { -func test1() { - // CHECK: var f : Int - var f : Int -// CHECK: <#kw>#if <#id>CONF -#if CONF - // CHECK: var x : Int - var x : Int -// CHECK: <#kw>#else -#else - // CHECK: var x : Float - var x : Float -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if <#id>CONF -#if CONF - // CHECK: var x2 : Int - var x2 : Int -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if !<#id>CONF -#if !CONF - // CHECK: var x3 : Int - var x3 : Int -// CHECK: <#kw>#else -#else - // CHECK: var x3 : Float - var x3 : Float -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if !<#id>CONF -#if !CONF - // CHECK: var x4 : Int - var x4 : Int -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if <#id>CONF -#if CONF - // CHECK: var y1 : Int - var y1 : Int -// CHECK: <#kw>#elseif <#id>BAZ -#elseif BAZ - // CHECK: var y1 : String - var y1 : String -// CHECK: <#kw>#else -#else - // CHECK: var y1 : Float - var y1 : Float -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if !<#id>CONF -#if !CONF - // CHECK: var y2 : Int - var y2 : Int -// CHECK: <#kw>#elseif <#id>BAZ -#elseif BAZ - // CHECK: var y2 : String - var y2 : String -// CHECK: <#kw>#else -#else - // CHECK: var y2 : Float - var y2 : Float -// CHECK: <#kw>#endif -#endif - -// CHECK: <#kw>#if !<#id>CONF -#if !CONF - // CHECK: var y3 : Int - var y3 : Int -// CHECK: <#kw>#elseif <#id>CONF -#elseif CONF - // CHECK: var y3 : String - var y3 : String -// CHECK: <#kw>#else -#else - // CHECK: var y3 : Float - var y3 : Float -// CHECK: <#kw>#endif -#endif - - // CHECK: var l : Int - var l : Int -} - -// CHECK: class C2 { -class C2 { - // CHECK: <#kw>#if <#id>os(<#id>iOS) - #if os(iOS) - // CHECK: func foo() {} - func foo() {} - #endif -} - -class NestedPoundIf { -// CHECK: class NestedPoundIf { - func foo1() { -// CHECK: func foo1() { - #if os(macOS) -// CHECK: <#kw>#if <#id>os(<#id>macOS) - var a = 1 -// CHECK: var a = 1 - #if USE_METAL -// CHECK: <#kw>#if <#id>USE_METAL - var b = 2 -// CHECK: var b = 2 - #if os(iOS) -// CHECK: <#kw>#if <#id>os(<#id>iOS) - var c = 3 -// CHECK: var c = 3 - #else -// CHECK: <#kw>#else - var c = 3 -// CHECK: var c = 3 - #endif -// CHECK: <#kw>#endif - #else -// CHECK: <#kw>#else - var b = 2 -// CHECK: var b = 2 - #endif -// CHECK: <#kw>#endif - #else -// CHECK: <#kw>#else - var a = 1 -// CHECK: var a = 1 - #endif -// CHECK: <#kw>#endif - } - func foo2() {} -// CHECK: func foo2() {} - func foo3() {} -// CHECK: func foo3() {} -} - -// CHECK: <#kw>#error("Error") -#error("Error") -// CHECK: <#kw>#warning("Warning") -#warning("Warning") -// CHECK: <#kw>#sourceLocation(file: "x", line: 1) -#sourceLocation(file: "x", line: 1) -// CHECK: #line 17 "abc.swift" -#line 17 "abc.swift" - -@available(iOS 8.0, OSX 10.10, *) -// CHECK: @available(iOS 8.0, OSX 10.10, *) -func foo() { -// CHECK: if #available (OSX 10.10, iOS 8.01, *) {let _ = "iOS"} - if #available (OSX 10.10, iOS 8.01, *) {let _ = "iOS"} -} - -// CHECK: func test4(a: inout Int) {{{$}} -func test4(a: inout Int) { - // CHECK-OLD: if #available (OSX >= 10.10, iOS >= 8.01) {let OSX = "iOS"}}{{$}} - // CHECK-NEW: if #available (OSX >= 10.10, iOS >= 8.01) {let OSX = "iOS"}}{{$}} - if #available (OSX >= 10.10, iOS >= 8.01) {let OSX = "iOS"}} - -// CHECK: func test4b(a: inout Int) {{{$}} -func test4b(a: inout Int) { -} - -let filename = #file -// CHECK: let filename = #file -let line = #line -// CHECK: let line = #line -let column = #column -// CHECK: let column = #column -let function = #function -// CHECK: let function = #function - -let image = #imageLiteral(resourceName: "cloud.png") -// CHECK-OLD: let image = #imageLiteral(resourceName: "cloud.png") -// CHECK-NEW: let image = #imageLiteral(resourceName: "cloud.png") -let file = #fileLiteral(resourceName: "cloud.png") -// CHECK-OLD: let file = #fileLiteral(resourceName: "cloud.png") -// CHECK-NEW: let file = #fileLiteral(resourceName: "cloud.png") -let black = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1) -// CHECK-OLD: let black = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1) -// CHECK-NEW: let black = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1) - -let rgb = [#colorLiteral(red: 1, green: 0, blue: 0, alpha: 1), - #colorLiteral(red: 0, green: 1, blue: 0, alpha: 1), - #colorLiteral(red: 0, green: 0, blue: 1, alpha: 1)] -// CHECK-OLD: let rgb = [#colorLiteral(red: 1, green: 0, blue: 0, alpha: 1), -// CHECK-OLD: #colorLiteral(red: 0, green: 1, blue: 0, alpha: 1), -// CHECK-OLD: #colorLiteral(red: 0, green: 0, blue: 1, alpha: 1)] -// CHECK-NEW: let rgb = [#colorLiteral(red: 1, green: 0, blue: 0, alpha: 1), -// CHECK-NEW: #colorLiteral(red: 0, green: 1, blue: 0, alpha: 1), -// CHECK-NEW: #colorLiteral(red: 0, green: 0, blue: 1, alpha: 1)] diff --git a/lit_tests/coloring_keywords.swift b/lit_tests/coloring_keywords.swift deleted file mode 100644 index 0329678429f..00000000000 --- a/lit_tests/coloring_keywords.swift +++ /dev/null @@ -1,11 +0,0 @@ -// RUN: %lit-test-helper -classify-syntax -source-file %s | %FileCheck %s - -// CHECK: return c.return - -class C { - var `return` = 2 -} - -func foo(_ c: C) -> Int { - return c.return -} diff --git a/lit_tests/coloring_unclosed_hash_if.swift b/lit_tests/coloring_unclosed_hash_if.swift deleted file mode 100644 index 6bda63ad065..00000000000 --- a/lit_tests/coloring_unclosed_hash_if.swift +++ /dev/null @@ -1,13 +0,0 @@ -// RUN: %lit-test-helper -classify-syntax -source-file %s | %FileCheck %s - -// CHECK: <#kw>#if <#id>d -// CHECK-NEXT: func bar() { -// CHECK-NEXT: <#kw>#if <#id>d -// CHECK-NEXT: } -// CHECK-NEXT: func foo() {} - -#if d -func bar() { - #if d -} -func foo() {} diff --git a/lit_tests/lit.cfg b/lit_tests/lit.cfg index f293ae68432..81700f1c0ca 100644 --- a/lit_tests/lit.cfg +++ b/lit_tests/lit.cfg @@ -61,7 +61,6 @@ config.test_exec_root = tempfile.gettempdir() config.examples_bin_path = lit_config.params.get("EXAMPLES_BIN_PATH") config.filecheck = inferSwiftBinary("FileCheck") -config.lit_test_helper = inferSwiftBinary("lit-test-helper") config.swift = inferSwiftBinary("swift") config.swiftc = inferSwiftBinary("swiftc") config.swift_frontend = inferSwiftBinary("swift-frontend") @@ -77,7 +76,6 @@ config.substitutions.append( ("%empty-directory\(([^)]+)\)", 'rm -rf "\\1" && mkdir -p "\\1"') ) config.substitutions.append(("%FileCheck", config.filecheck)) -config.substitutions.append(("%lit-test-helper", config.lit_test_helper)) config.substitutions.append(("%swiftc", config.swiftc)) config.substitutions.append(("%swift", config.swift)) config.substitutions.append(("%swift-frontend", config.swift_frontend))