Skip to content

Commit 043c2e0

Browse files
authored
[Parse] Parse SE-0117's contextual 'open' keyword. (#3875)
This will allow us to start writing 'open' in downstream projects while John finishes the implementation. (This patch is extracted from his full WIP.)
1 parent 2c8f11d commit 043c2e0

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

include/swift/Parse/Token.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ class Token {
167167
case 'n':
168168
return Text == "nonmutating";
169169
case 'o':
170-
return Text == "optional" || Text == "override";
170+
return Text == "open" || Text == "override" || Text == "optional";
171171
case 'p':
172172
return Text == "prefix" || Text == "postfix";
173173
case 'r':

lib/Parse/ParseDecl.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,8 @@ bool Parser::parseNewDeclAttribute(DeclAttributes &Attributes, SourceLoc AtLoc,
504504
.Case("private", Accessibility::Private)
505505
.Case("fileprivate", Accessibility::FilePrivate)
506506
.Case("internal", Accessibility::Internal)
507-
.Case("public", Accessibility::Public);
507+
.Case("public", Accessibility::Public)
508+
.Case("open", Accessibility::Public); // FIXME: Actually implement this.
508509

509510
if (access == Accessibility::FilePrivate &&
510511
!Context.LangOpts.EnableSwift3Private) {
@@ -1971,6 +1972,10 @@ ParserStatus Parser::parseDecl(ParseDeclOptions Flags,
19711972
case tok::identifier:
19721973
// FIXME: This is ridiculous, this all needs to be sucked into the
19731974
// declparsing goop.
1975+
if (Tok.isContextualKeyword("open")) {
1976+
parseNewDeclAttribute(Attributes, /*AtLoc=*/{}, DAK_Accessibility);
1977+
continue;
1978+
}
19741979
if (Tok.isContextualKeyword("weak") ||
19751980
Tok.isContextualKeyword("unowned")) {
19761981
parseNewDeclAttribute(Attributes, /*AtLoc=*/{}, DAK_Ownership);

0 commit comments

Comments
 (0)