forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdump-parse.swift
30 lines (28 loc) · 1.24 KB
/
dump-parse.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// RUN: not %target-swift-frontend -dump-parse %s 2>&1 | FileCheck %s
// RUN: not %target-swift-frontend -dump-ast %s 2>&1 | FileCheck %s -check-prefix=CHECK-AST
// CHECK-LABEL: (func_decl "foo(_:)"
// CHECK-AST-LABEL: (func_decl "foo(_:)"
func foo(n: Int) -> Int {
// CHECK: (brace_stmt
// CHECK: (return_stmt
// CHECK: (integer_literal_expr type='<null>' value=42)))
// CHECK-AST: (brace_stmt
// CHECK-AST: (return_stmt
// CHECK-AST: (call_expr implicit type='Int'
// CHECK-AST: (integer_literal_expr type='{{[^']+}}' {{.*}} value=42)
return 42
}
// -dump-parse should print an AST even though this code is invalid.
// CHECK-LABEL: (func_decl "bar()"
// CHECK-AST-LABEL: (func_decl "bar()"
func bar() {
// CHECK: (brace_stmt
// CHECK-NEXT: (unresolved_decl_ref_expr type='{{[^']+}}' name=foo
// CHECK-NEXT: (unresolved_decl_ref_expr type='{{[^']+}}' name=foo
// CHECK-NEXT: (unresolved_decl_ref_expr type='{{[^']+}}' name=foo
// CHECK-AST: (brace_stmt
// CHECK-AST-NEXT: (declref_expr type='{{[^']+}}' {{.*}} decl=main.(file).foo
// CHECK-AST-NEXT: (declref_expr type='{{[^']+}}' {{.*}} decl=main.(file).foo
// CHECK-AST-NEXT: (declref_expr type='{{[^']+}}' {{.*}} decl=main.(file).foo
foo foo foo
}