mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Allow freestanding macros to be used at top-level. - Parse top-level `#…` as `MacroExpansionDecl` when we are not in scripting mode. - Add macro expansion decls to the source lookup cache with name-driven lazy expansion. Not supporting arbitrary name yet. - Experimental support for script mode and brace-level declaration macro expansions: When type-checking a `MacroExpansionExpr`, assign it a substitute `MacroExpansionDecl` if the macro reference resolves to a declaration macro. This doesn’t work quite fully yet and will be enabled in a future fix.
38 lines
1.4 KiB
Swift
38 lines
1.4 KiB
Swift
// RUN: %target-typecheck-verify-swift
|
|
|
|
let _ = "foo\(#"bar"##)baz"
|
|
// expected-error@-1{{too many '#' characters in closing delimiter}}
|
|
// expected-error@-2{{expected ',' separator}}
|
|
// expected-error@-3{{expected a macro identifier}}
|
|
|
|
let _ = #"\##("invalid")"#
|
|
// expected-error@-1{{too many '#' characters in delimited escape}}
|
|
// expected-error@-2{{invalid escape sequence in literal}}
|
|
|
|
let _ = ###"""invalid"######
|
|
// expected-error@-1{{too many '#' characters in closing delimiter}}{{26-29=}}
|
|
// expected-error@-2{{consecutive statements on a line must be separated by ';'}}
|
|
// expected-error@-3 3 {{expected a macro identifier}}
|
|
|
|
let _ = ####"invalid"###
|
|
// expected-error@-1{{unterminated string literal}}
|
|
|
|
let _ = ###"invalid"######
|
|
// expected-error@-1{{too many '#' characters in closing delimiter}}{{24-27=}}
|
|
// expected-error@-2{{consecutive statements on a line must be separated by ';'}}
|
|
// expected-error@-3 3 {{expected a macro identifier}}
|
|
|
|
let _ = ##"""aa
|
|
foobar
|
|
aa"""##
|
|
// expected-error@-3{{multi-line string literal content must begin on a new line}}{{14-14=\n}}
|
|
// expected-error@-2{{multi-line string literal closing delimiter must begin on a new line}}{{5-5=\n}}
|
|
|
|
let _ = #""" foo "bar" #baz
|
|
"""#
|
|
// expected-error@-2{{multi-line string literal content must begin on a new line}}{{13-13=\n}}
|
|
|
|
let _ = ###""" "# "##
|
|
"""###
|
|
// expected-error@-2{{multi-line string literal content must begin on a new line}}{{15-15=\n}}
|