llvmorg-github-actions[bot] wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Oliver Hunt (ojhunt)

<details>
<summary>Changes</summary>

This reverts commit e2def106757534b07a2d3ff15ddd48e14b69a66d.

---
Full diff: https://github.com/llvm/llvm-project/pull/196755.diff


3 Files Affected:

- (modified) clang/docs/ReleaseNotes.rst (-1) 
- (modified) clang/lib/Sema/SemaDecl.cpp (+1-3) 
- (removed) clang/test/SemaTemplate/GH176152.cpp (-12) 


``````````diff
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 0d43f864653cc..c17143e3c0398 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -572,7 +572,6 @@ Bug Fixes to C++ Support
 - Correctly diagnose uses of ``co_await`` / ``co_yield`` in the default 
argument of nested function declarations. (#GH98923)
 - Fixed a crash when diagnosing an invalid static member function with an 
explicit object parameter (#GH177741)
 - Clang incorrectly instantiated variable specializations outside of the 
immediate context. (#GH54439)
-- Fixed a crash when instantiating an invalid out-of-line static data member 
definition in a local class. (#GH176152)
 - Fixed a crash when pack expansions are used as arguments for non-pack 
parameters of built-in templates. (#GH180307)
 - Fix a problem where pack index expressions where incorrectly being regarded 
as equivalent.
 - Fixed a bug where captured variables in non-mutable lambdas were incorrectly 
treated as mutable
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 7c5bcd56b346c..a9a4cb89d115f 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -7926,7 +7926,7 @@ NamedDecl *Sema::ActOnVariableDeclarator(
 
     if (CurContext->isRecord()) {
       if (SC == SC_Static) {
-        if (CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(DC)) {
+        if (const CXXRecordDecl *RD = dyn_cast<CXXRecordDecl>(DC)) {
           // Walk up the enclosing DeclContexts to check for any that are
           // incompatible with static data members.
           const DeclContext *FunctionOrMethod = nullptr;
@@ -7948,8 +7948,6 @@ NamedDecl *Sema::ActOnVariableDeclarator(
             Diag(D.getIdentifierLoc(),
                  diag::err_static_data_member_not_allowed_in_local_class)
                 << Name << RD->getDeclName() << RD->getTagKind();
-            Invalid = true;
-            RD->setInvalidDecl();
           } else if (AnonStruct) {
             // C++ [class.static.data]p4: Unnamed classes and classes contained
             // directly or indirectly within unnamed classes shall not contain
diff --git a/clang/test/SemaTemplate/GH176152.cpp 
b/clang/test/SemaTemplate/GH176152.cpp
deleted file mode 100644
index 7d61aa292982d..0000000000000
--- a/clang/test/SemaTemplate/GH176152.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
-// RUN: %clang_cc1 -std=c++23 -fsyntax-only -verify %s
-
-template <class T> int f(T) {
-  struct MyClass {
-    static int staticField;
-    // expected-error@-1 {{static data member 'staticField' not allowed in 
local struct 'MyClass'}}
-  };
-  int MyClass::staticField = 42;
-  return 0;
-}
-
-int x = f(0);

``````````

</details>


https://github.com/llvm/llvm-project/pull/196755
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to