Files
swift-mirror/test/Macros/macro_expand_throwing.swift
Ben Barham e5a28caa9a [Test] Fix swift_swift_parser feature and use in tests
The macro tests were all using "REQUIRES: OS=macosx" as a proxy for
"have the Swift Swift parser". There was an existing feature for this,
but it was just checking whether the path was passed through. Fix that
to use the same variable as in CMake.

Also remove all extraneous `-I` and `-L` to the host libs in the target
invocations.
2023-04-03 09:25:03 -07:00

33 lines
1.4 KiB
Swift

// REQUIRES: swift_swift_parser
// RUN: %empty-directory(%t)
// RUN: %host-build-swift -swift-version 5 -emit-library -o %t/%target-library-name(MacroDefinition) -module-name=MacroDefinition %S/Inputs/syntax_macro_definitions.swift -g -no-toolchain-stdlib-rpath -swift-version 5
// Make sure the diagnostic comes through...
// RUN: %target-typecheck-verify-swift -swift-version 5 -load-plugin-library %t/%target-library-name(MacroDefinition) -module-name MacroUser -DTEST_DIAGNOSTICS
// Make sure the diagnostic doesn't crash in SILGen
// RUN: not %target-swift-frontend -swift-version 5 -emit-sil -load-plugin-library %t/%target-library-name(MacroDefinition) %s -module-name MacroUser -o - -g
@freestanding(expression) macro myWarning(_ message: String) = #externalMacro(module: "MacroDefinition", type: "WarningMacro")
@freestanding(expression) macro myError(_ message: String) = #externalMacro(module: "MacroDefinition", type: "ErrorMacro")
func testThrownError() {
let name = "hello"
#myWarning (name) // expected-error{{#myWarning macro requires a string literal (from macro 'myWarning')}}
#myWarning("experimental features ahead") // expected-warning{{experimental features ahead}}
}
#if TEST_DIAGNOSTICS
func testThrownErrors() {
let name = "hello"
#myError(
name
) // expected-error@-1{{macro requires a string literal (from macro 'myError')}}
#myError("experimental features ahead") // expected-error{{experimental features ahead}}
}
#endif