================
@@ -8508,10 +8525,17 @@ void Sema::CheckShadow(NamedDecl *D, NamedDecl 
*ShadowedDecl,
           return;
         }
       }
-      if (const auto *VD = dyn_cast<VarDecl>(ShadowedDecl);
-          VD && VD->hasLocalStorage()) {
-        // A variable can't shadow a local variable in an enclosing scope, if
-        // they are separated by a non-capturing declaration context.
+      // Apply scoping logic to both VarDecl and BindingDecl
+      bool shouldApplyScopingLogic = false;
+      if (const auto *VD = dyn_cast<VarDecl>(ShadowedDecl)) {
+        shouldApplyScopingLogic = VD->hasLocalStorage();
----------------
zwuis wrote:

> Done at 27fc9b7095e6ab993782e121e1ff1a3776b2ab0a

Oh the changes are bigger than what I think:

```diff
-} else if (isa<BindingDecl>(ShadowedDecl)) {
-  shouldApplyScopingLogic = true;
+} else if (const auto *BD = dyn_cast<BindingDecl>(ShadowedDecl)) {
+  HasLocalStorage = cast<VarDecl>(BD->getDecomposedDecl())->hasLocalStorage();
```

WDYT?

---

By the way, variable names should start with an upper-case letter. See 
<https://llvm.org/docs/CodingStandards.html#name-types-functions-variables-and-enumerators-properly>.

https://github.com/llvm/llvm-project/pull/157667
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to