Skip to content

Commit cabb6dd

Browse files
committed
Revert "libSyntax: Root parsing context should hold a reference to the current token in the parser, NFC."
This reverts commit 19caca7.
1 parent 407db56 commit cabb6dd

File tree

5 files changed

+14
-15
lines changed

5 files changed

+14
-15
lines changed

include/swift/Syntax/SyntaxParsingContext.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,11 @@ enum class SyntaxParsingContextKind: uint8_t {
5858
/// create syntax nodes.
5959
class SyntaxParsingContext {
6060
protected:
61-
SyntaxParsingContext(SourceFile &SF, unsigned BufferID, Token &Tok);
61+
SyntaxParsingContext(SourceFile &SF, unsigned BufferID);
6262
SyntaxParsingContext(SyntaxParsingContext &Another);
6363
public:
6464
struct ContextInfo;
6565
ContextInfo &ContextData;
66-
const Token &Tok;
6766

6867
// Add a token syntax at the given source location to the context; this
6968
// token node can be used to build more complex syntax nodes in later call
@@ -87,8 +86,8 @@ class SyntaxParsingContext {
8786
class SyntaxParsingContextRoot: public SyntaxParsingContext {
8887
SourceFile &File;
8988
public:
90-
SyntaxParsingContextRoot(SourceFile &File, unsigned BufferID, Token &Tok):
91-
SyntaxParsingContext(File, BufferID, Tok), File(File) {}
89+
SyntaxParsingContextRoot(SourceFile &File, unsigned BufferID):
90+
SyntaxParsingContext(File, BufferID), File(File) {}
9291
~SyntaxParsingContextRoot();
9392
void addTokenSyntax(SourceLoc Loc) override {};
9493
void makeNode(SyntaxKind Kind) override {};
@@ -110,9 +109,10 @@ class SyntaxParsingContextChild: public SyntaxParsingContext {
110109
SyntaxParsingContext *Parent;
111110
SyntaxParsingContext *&ContextHolder;
112111
const SyntaxContextKind Kind;
112+
Token &Tok;
113113
public:
114114
SyntaxParsingContextChild(SyntaxParsingContext *&ContextHolder,
115-
SyntaxContextKind Kind);
115+
SyntaxContextKind Kind, Token &Tok);
116116
~SyntaxParsingContextChild();
117117
void makeNode(SyntaxKind Kind) override;
118118
void addTokenSyntax(SourceLoc Loc) override;

lib/Parse/ParseDecl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2148,7 +2148,7 @@ ParserResult<Decl>
21482148
Parser::parseDecl(ParseDeclOptions Flags,
21492149
llvm::function_ref<void(Decl*)> Handler) {
21502150
SyntaxParsingContextChild DeclParsingContext(SyntaxContext,
2151-
SyntaxContextKind::Decl);
2151+
SyntaxContextKind::Decl, Tok);
21522152
if (Tok.is(tok::pound_if)) {
21532153
auto IfConfigResult = parseIfConfig(
21542154
[&](SmallVectorImpl<ASTNode> &Decls, bool IsActive) {

lib/Parse/ParseExpr.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ using namespace swift::syntax;
4141
ParserResult<Expr> Parser::parseExprImpl(Diag<> Message, bool isExprBasic) {
4242
// Start a context for creating expression syntax.
4343
SyntaxParsingContextChild ExprParsingContext(SyntaxContext,
44-
SyntaxContextKind::Expr);
44+
SyntaxContextKind::Expr, Tok);
4545

4646
// If we are parsing a refutable pattern, check to see if this is the start
4747
// of a let/var/is pattern. If so, parse it to an UnresolvedPatternExpr and
@@ -1806,7 +1806,7 @@ ParserResult<Expr> Parser::parseExprStringLiteral() {
18061806
SyntaxContext->addTokenSyntax(Tok.getLoc());
18071807
SyntaxContext->makeNode(SyntaxKind::StringLiteralExpr);
18081808
SyntaxParsingContextChild LocalContext(SyntaxContext,
1809-
SyntaxContextKind::Expr);
1809+
SyntaxContextKind::Expr, Tok);
18101810

18111811
// FIXME: Avoid creating syntax nodes for string interpolation.
18121812
LocalContext.disable();

lib/Parse/Parser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ Parser::Parser(std::unique_ptr<Lexer> Lex, SourceFile &SF,
434434
TokReceiver(SF.shouldKeepTokens() ?
435435
new TokenRecorder(SF) :
436436
new ConsumeTokenReceiver()),
437-
SyntaxContext(new syntax::SyntaxParsingContextRoot(SF, L->getBufferID(), Tok)) {
437+
SyntaxContext(new syntax::SyntaxParsingContextRoot(SF, L->getBufferID())) {
438438

439439
State = PersistentState;
440440
if (!State) {

lib/Syntax/SyntaxParsingContext.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -180,13 +180,12 @@ SyntaxParsingContext::ContextInfo::createFromBack(SyntaxKind Kind, unsigned N) {
180180
assert(Size - N + 1 == PendingSyntax.size());
181181
}
182182

183-
SyntaxParsingContext::
184-
SyntaxParsingContext(SourceFile &SF, unsigned BufferID, Token &Tok):
185-
ContextData(*new ContextInfo(SF, BufferID)), Tok(Tok) {}
183+
SyntaxParsingContext::SyntaxParsingContext(SourceFile &SF, unsigned BufferID):
184+
ContextData(*new ContextInfo(SF, BufferID)) {}
186185

187186
SyntaxParsingContext::SyntaxParsingContext(SyntaxParsingContext &Another):
188187
ContextData(*new ContextInfo(Another.ContextData.allTokens(),
189-
Another.ContextData.Enabled)), Tok(Another.Tok) {}
188+
Another.ContextData.Enabled)) {}
190189

191190
SyntaxParsingContext::~SyntaxParsingContext() { delete &ContextData; }
192191

@@ -241,9 +240,9 @@ SyntaxParsingContextRoot &SyntaxParsingContextChild::getRoot() {
241240

242241
SyntaxParsingContextChild::
243242
SyntaxParsingContextChild(SyntaxParsingContext *&ContextHolder,
244-
SyntaxContextKind Kind):
243+
SyntaxContextKind Kind, Token &Tok):
245244
SyntaxParsingContext(*ContextHolder), Parent(ContextHolder),
246-
ContextHolder(ContextHolder), Kind(Kind) {
245+
ContextHolder(ContextHolder), Kind(Kind), Tok(Tok) {
247246
ContextHolder = this;
248247
if (ContextData.Enabled)
249248
ContextData.setContextStart(Tok.getLoc());

0 commit comments

Comments
 (0)