[clang] [clang-repl] Names declared in if conditions and for-init statements are local to the inner context (C++ 3.3.2p4) (PR #84150)
Vassil Vassilev via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 6 06:21:22 PST 2024
Stefan =?utf-8?q?Gränitz?= <stefan.graenitz at gmail.com>,
Stefan =?utf-8?q?Gränitz?= <stefan.graenitz at gmail.com>,
Stefan =?utf-8?q?Gränitz?= <stefan.graenitz at gmail.com>,
Stefan =?utf-8?q?Gränitz?= <stefan.graenitz at gmail.com>,
Stefan =?utf-8?q?Gränitz?= <stefan.graenitz at gmail.com>,
Stefan =?utf-8?q?Gränitz?= <stefan.graenitz at gmail.com>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/84150 at github.com>
================
@@ -5676,24 +5676,32 @@ Parser::DeclGroupPtrTy Parser::ParseTopLevelStmtDecl() {
// Parse a top-level-stmt.
Parser::StmtVector Stmts;
ParsedStmtContext SubStmtCtx = ParsedStmtContext();
- Actions.PushFunctionScope();
+ ParseScope FnScope(this, Scope::FnScope | Scope::DeclScope |
----------------
vgvassilev wrote:
It's a bit awkward to push scoping state in two places. I am wondering if moving the `FnScope` down in `ActOnStartTopLevelStmtDecl` and `ActOnFinishTopLevelStmtDecl` would be a good idea. It would make the implementation look cleaner but if an error occurs the state of the scopes will be inconsistent (the `R.isUsable` branch). Maybe it is fine as it is...
https://github.com/llvm/llvm-project/pull/84150
More information about the cfe-commits
mailing list