Skip to content

Commit bce19d4

Browse files
committed
Merge pull request #955 from dduan/SR-510-2
[SR-510][Parser] complain for invalid enum raw value
2 parents 03015c2 + 5a778b1 commit bce19d4

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

lib/Parse/ParseDecl.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4398,6 +4398,7 @@ ParserStatus Parser::parseDeclEnumCase(ParseDeclOptions Flags,
43984398

43994399
// See if there's a raw value expression.
44004400
SourceLoc EqualsLoc;
4401+
auto NextLoc = peekToken().getLoc();
44014402
ParserResult<Expr> RawValueExpr;
44024403
LiteralExpr *LiteralRawValueExpr = nullptr;
44034404
if (Tok.is(tok::equal)) {
@@ -4412,6 +4413,7 @@ ParserStatus Parser::parseDeclEnumCase(ParseDeclOptions Flags,
44124413
return Status;
44134414
}
44144415
if (RawValueExpr.isNull()) {
4416+
diagnose(NextLoc, diag::nonliteral_enum_case_raw_value);
44154417
Status.setIsParseError();
44164418
return Status;
44174419
}

test/decl/enum/enumtest.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,5 +290,9 @@ func testSimpleEnum() {
290290
let _ : SimpleEnum=.X // expected-error {{'=' must have consistent whitespace on both sides}}
291291
}
292292

293+
enum SR510: String {
294+
case Thing = "thing"
295+
case Bob = {"test"} // expected-error {{not a proper raw value expression}}
296+
}
293297

294298

0 commit comments

Comments
 (0)