aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Parse/ParseDecl.cpp
diff options
context:
space:
mode:
authorVassil Vassilev <v.g.vassilev@gmail.com>2022-12-11 21:08:30 +0000
committerVassil Vassilev <v.g.vassilev@gmail.com>2023-02-17 09:09:04 +0000
commit159073bc0a873b9aa2bc559a8ceba970b049cda2 (patch)
tree34c1d36ebf7f491afdbd4f07ab4b6dee6c6d58f8 /clang/lib/Parse/ParseDecl.cpp
parenteb2f946e780cc0e82260c775930fa0509885b1ea (diff)
downloadllvm-159073bc0a873b9aa2bc559a8ceba970b049cda2.zip
llvm-159073bc0a873b9aa2bc559a8ceba970b049cda2.tar.gz
llvm-159073bc0a873b9aa2bc559a8ceba970b049cda2.tar.bz2
[clang-repl] Support compound statement as a top-level statement.
This patch teaches our incremental compilation infrastructure to push and pop a fake function scope making the Parser happy when parsing compound statements as part of a top-leve statement declaration. Differential revision: https://reviews.llvm.org/D139798
Diffstat (limited to 'clang/lib/Parse/ParseDecl.cpp')
-rw-r--r--clang/lib/Parse/ParseDecl.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp
index d32f26b..6465d859 100644
--- a/clang/lib/Parse/ParseDecl.cpp
+++ b/clang/lib/Parse/ParseDecl.cpp
@@ -5400,7 +5400,9 @@ Parser::DeclGroupPtrTy Parser::ParseTopLevelStmtDecl() {
// Parse a top-level-stmt.
Parser::StmtVector Stmts;
ParsedStmtContext SubStmtCtx = ParsedStmtContext();
+ Actions.PushFunctionScope();
StmtResult R = ParseStatementOrDeclaration(Stmts, SubStmtCtx);
+ Actions.PopFunctionScopeInfo();
if (!R.isUsable())
return nullptr;