|
1 | 1 | // REQUIRES: swift_swift_parser, executable_test
|
| 2 | +// REQUIRES: swift_feature_ABIAttribute |
2 | 3 |
|
3 | 4 | // RUN: %empty-directory(%t)
|
4 | 5 | // RUN: %host-build-swift -swift-version 5 -emit-library -o %t/%target-library-name(MacroDefinition) -module-name=MacroDefinition %S/Inputs/syntax_macro_definitions.swift
|
5 | 6 |
|
6 | 7 | // Diagnostics testing
|
7 |
| -// RUN: %target-typecheck-verify-swift -swift-version 5 -load-plugin-library %t/%target-library-name(MacroDefinition) -module-name MacroUser -DTEST_DIAGNOSTICS |
| 8 | +// RUN: %target-typecheck-verify-swift -swift-version 5 -load-plugin-library %t/%target-library-name(MacroDefinition) -module-name MacroUser -DTEST_DIAGNOSTICS -enable-experimental-feature ABIAttribute |
8 | 9 |
|
9 | 10 | // Diagnostics testing by importing macros from a module
|
10 | 11 | // RUN: %target-swift-frontend -swift-version 5 -emit-module -o %t/freestanding_macro_library.swiftmodule %S/Inputs/freestanding_macro_library.swift -module-name freestanding_macro_library -load-plugin-library %t/%target-library-name(MacroDefinition)
|
11 | 12 | // RUN: %target-swift-frontend -swift-version 5 -emit-module -o %t/freestanding_macro_library_2.swiftmodule %S/Inputs/freestanding_macro_library_2.swift -module-name freestanding_macro_library_2 -load-plugin-library %t/%target-library-name(MacroDefinition) -I %t
|
12 | 13 |
|
13 |
| -// RUN: %target-typecheck-verify-swift -swift-version 5 -load-plugin-library %t/%target-library-name(MacroDefinition) -module-name MacroUser -DTEST_DIAGNOSTICS -I %t -DIMPORT_MACRO_LIBRARY |
| 14 | +// RUN: %target-typecheck-verify-swift -swift-version 5 -load-plugin-library %t/%target-library-name(MacroDefinition) -module-name MacroUser -DTEST_DIAGNOSTICS -I %t -DIMPORT_MACRO_LIBRARY -enable-experimental-feature ABIAttribute |
14 | 15 |
|
15 |
| -// RUN: not %target-swift-frontend -swift-version 5 -typecheck -load-plugin-library %t/%target-library-name(MacroDefinition) -module-name MacroUser -DTEST_DIAGNOSTICS -serialize-diagnostics-path %t/macro_expand.dia %s -emit-macro-expansion-files no-diagnostics -Rmacro-loading > %t/macro-printing.txt |
| 16 | +// RUN: not %target-swift-frontend -swift-version 5 -typecheck -load-plugin-library %t/%target-library-name(MacroDefinition) -module-name MacroUser -DTEST_DIAGNOSTICS -serialize-diagnostics-path %t/macro_expand.dia %s -emit-macro-expansion-files no-diagnostics -Rmacro-loading > %t/macro-printing.txt -enable-experimental-feature ABIAttribute |
16 | 17 | // RUN: c-index-test -read-diagnostics %t/macro_expand.dia 2>&1 | %FileCheck -check-prefix CHECK-DIAGS -dump-input=always %s
|
17 | 18 |
|
18 | 19 | // RUN: %FileCheck %s --check-prefix CHECK-MACRO-PRINTED < %t/macro-printing.txt
|
19 | 20 |
|
20 |
| -// RUN: not %target-swift-frontend -swift-version 5 -typecheck -diagnostic-style=swift -load-plugin-library %t/%target-library-name(MacroDefinition) -module-name MacroUser -DTEST_DIAGNOSTICS %s > %t/pretty-macro-diagnostics.txt 2>&1 |
| 21 | +// RUN: not %target-swift-frontend -swift-version 5 -typecheck -diagnostic-style=swift -load-plugin-library %t/%target-library-name(MacroDefinition) -module-name MacroUser -DTEST_DIAGNOSTICS %s -enable-experimental-feature ABIAttribute > %t/pretty-macro-diagnostics.txt 2>&1 |
21 | 22 | // RUN: %FileCheck %s --check-prefix PRETTY-DIAGS < %t/pretty-macro-diagnostics.txt
|
22 | 23 |
|
23 | 24 | // Debug info SIL testing
|
@@ -707,6 +708,29 @@ func testPropertyWrapperMacro() {
|
707 | 708 | #hasPropertyWrapperParam($x: .init(wrappedValue: 0))
|
708 | 709 | }
|
709 | 710 |
|
| 711 | +#if swift(>=1.0) && TEST_DIAGNOSTICS |
| 712 | +// Test that macros can't be used in @abi |
| 713 | + |
| 714 | +struct ABIAttrWithFreestandingMacro1 { |
| 715 | + // expected-error@+1 {{cannot use pound literal in '@abi'}} |
| 716 | + @abi(#varValue) |
| 717 | + #varValue |
| 718 | + // expected-note@-1 {{in expansion of macro 'varValue' here}} |
| 719 | +} |
| 720 | + |
| 721 | +struct ABIAttrWithFreestandingMacro2 { |
| 722 | + // expected-error@+1 {{cannot use pound literal in '@abi'}} |
| 723 | + @abi(#varValue) |
| 724 | + var value: Int { 0 } |
| 725 | +} |
| 726 | + |
| 727 | +struct ABIAttrWithFreestandingMacro3 { |
| 728 | + @abi(var value: Int) |
| 729 | + #varValue |
| 730 | +} |
| 731 | + |
| 732 | +#endif |
| 733 | + |
710 | 734 | #if TEST_DIAGNOSTICS
|
711 | 735 | @freestanding(expression)
|
712 | 736 | macro missingMacro() = #externalMacro(module: "MacroDefinition", type: "BluhBlah")
|
|
0 commit comments