Skip to content

Commit 725db10

Browse files
committed
[Parser] Explicit keyword allow-list for contextual keyword prefixed
1 parent 295997a commit 725db10

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

Sources/SwiftParser/Statements.swift

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -938,14 +938,19 @@ extension TokenConsumer {
938938
return true
939939

940940
case .keyword:
941+
// Some lexer-classified keywords can start expressions.
941942
switch Keyword(next.tokenText) {
942-
case .as, .is, .in:
943-
// E.g. <word> is <expr>
944-
return false
945-
default:
946-
// Other lexer-classified keywords are identifier-like.
947-
// E.g. <word> self
943+
case .Any, .Self, .self, .super, .`init`, .true, .false, .nil:
944+
return true
945+
case .repeat, .try:
946+
return true
947+
case .if, .switch:
948948
return true
949+
case .do where self.experimentalFeatures.contains(.doExpressions):
950+
return true
951+
952+
default:
953+
return false
949954
}
950955

951956
case .binaryOperator, .equal, .arrow, .infixQuestionMark:

0 commit comments

Comments
 (0)