// RUN: %target-typecheck-verify-swift -swift-version 4 // SR-1661: Dollar was accidentally allowed as an identifier in Swift 3. // SE-0144: Reject this behavior in the future. func dollarVar() { var $ : Int = 42 // expected-error {{'$' is not an identifier; use backticks to escape it}} {{7-8=`$`}} $ += 1 // expected-error {{'$' is not an identifier; use backticks to escape it}} {{3-4=`$`}} print($) // expected-error {{'$' is not an identifier; use backticks to escape it}} {{9-10=`$`}} } func dollarLet() { let $ = 42 // expected-error {{'$' is not an identifier; use backticks to escape it}} {{7-8=`$`}} print($) // expected-error {{'$' is not an identifier; use backticks to escape it}} {{9-10=`$`}} } func dollarClass() { class $ {} // expected-error {{'$' is not an identifier; use backticks to escape it}} {{9-10=`$`}} } func dollarEnum() { enum $ {} // expected-error {{'$' is not an identifier; use backticks to escape it}} {{8-9=`$`}} } func dollarStruct() { struct $ {} // expected-error {{'$' is not an identifier; use backticks to escape it}} {{10-11=`$`}} } func dollarFunc() { func $($ dollarParam: Int) {} // expected-error@-1 {{'$' is not an identifier; use backticks to escape it}} {{8-9=`$`}} // expected-error@-2 {{'$' is not an identifier; use backticks to escape it}} {{10-11=`$`}} $($: 24) // expected-error@-1 {{'$' is not an identifier; use backticks to escape it}} {{3-4=`$`}} // expected-error@-2 {{'$' is not an identifier; use backticks to escape it}} {{5-6=`$`}} } func escapedDollarVar() { var `$` : Int = 42 // no error `$` += 1 print(`$`) } func escapedDollarLet() { let `$` = 42 // no error print(`$`) } func escapedDollarClass() { class `$` {} // no error } func escapedDollarEnum() { enum `$` {} // no error } func escapedDollarStruct() { struct `$` {} // no error } func escapedDollarFunc() { func `$`(`$`: Int) {} // no error `$`(`$`: 25) // no error } func escapedDollarAnd() { // FIXME: Bad diagnostics. `$0` = 1 // expected-error {{expected expression}} `$$` = 2 // expected-error {{expected numeric value following '$'}} `$abc` = 3 // expected-error {{expected numeric value following '$'}} }