|
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
|
@@ -719,6 +720,29 @@ func testPropertyWrapperMacro() {
|
719 | 720 | #hasPropertyWrapperParam($x: .init(wrappedValue: 0))
|
720 | 721 | }
|
721 | 722 |
|
| 723 | +#if swift(>=1.0) && TEST_DIAGNOSTICS |
| 724 | +// Test that macros can't be used in @abi |
| 725 | + |
| 726 | +struct ABIAttrWithFreestandingMacro1 { |
| 727 | + // expected-error@+1 {{cannot use pound literal in '@abi'}} |
| 728 | + @abi(#varValue) |
| 729 | + #varValue |
| 730 | + // expected-note@-1 {{in expansion of macro 'varValue' here}} |
| 731 | +} |
| 732 | + |
| 733 | +struct ABIAttrWithFreestandingMacro2 { |
| 734 | + // expected-error@+1 {{cannot use pound literal in '@abi'}} |
| 735 | + @abi(#varValue) |
| 736 | + var value: Int { 0 } |
| 737 | +} |
| 738 | + |
| 739 | +struct ABIAttrWithFreestandingMacro3 { |
| 740 | + @abi(var value: Int) |
| 741 | + #varValue |
| 742 | +} |
| 743 | + |
| 744 | +#endif |
| 745 | + |
722 | 746 | #if TEST_DIAGNOSTICS
|
723 | 747 | @freestanding(expression)
|
724 | 748 | macro missingMacro() = #externalMacro(module: "MacroDefinition", type: "BluhBlah")
|
|
0 commit comments