File tree Expand file tree Collapse file tree 3 files changed +13
-2
lines changed Expand file tree Collapse file tree 3 files changed +13
-2
lines changed Original file line number Diff line number Diff line change @@ -166,7 +166,7 @@ class Identifier {
166
166
}
167
167
168
168
bool hasDollarPrefix () const {
169
- return str ().startswith (" $" );
169
+ return str ().startswith (" $" ) && !( getLength () == 1 ) ;
170
170
}
171
171
172
172
const void *getAsOpaquePointer () const {
Original file line number Diff line number Diff line change 40
40
#include " swift/Basic/TopCollection.h"
41
41
#include " swift/Parse/Lexer.h"
42
42
#include " swift/Parse/LocalContext.h"
43
+ #include " swift/Parse/Parser.h"
43
44
#include " swift/Sema/IDETypeChecking.h"
44
45
#include " swift/Syntax/TokenKinds.h"
45
46
#include " llvm/ADT/DenseMap.h"
@@ -2080,6 +2081,13 @@ bool TypeChecker::typeCheckClosureBody(ClosureExpr *closure) {
2080
2081
TypeChecker::checkClosureAttributes (closure);
2081
2082
TypeChecker::checkParameterList (closure->getParameters (), closure);
2082
2083
2084
+ for (auto *param : *closure->getParameters ()) {
2085
+ if (!param->isImplicit () && param->getName ().hasDollarPrefix () &&
2086
+ !param->hasAttachedPropertyWrapper ()) {
2087
+ param->diagnose (diag::dollar_identifier_decl, param->getName ());
2088
+ }
2089
+ }
2090
+
2083
2091
BraceStmt *body = closure->getBody ();
2084
2092
2085
2093
Optional<FunctionBodyTimer> timer;
Original file line number Diff line number Diff line change @@ -77,9 +77,12 @@ func $declareWithDollar() { // expected-error{{cannot declare entity named '$dec
77
77
$b c: Int ) { } // expected-error{{cannot declare entity named '$b'}}
78
78
let _: ( Int ) -> Int = {
79
79
[ $capture = 0 ] // expected-error{{cannot declare entity named '$capture'}}
80
- $a in // expected-error{{cannot declare entity named '$a'}}
80
+ $a in // diagnosed after type checking the closure
81
81
$capture
82
82
}
83
+ let _: ( Int ) -> Void = {
84
+ $a in // expected-error{{cannot declare entity named '$a'}}
85
+ }
83
86
let ( $a: _, _) = ( 0 , 0 ) // expected-error{{cannot declare entity named '$a'}}
84
87
$label: if true { // expected-error{{cannot declare entity named '$label'}}
85
88
break $label
You can’t perform that action at this time.
0 commit comments