john.brawn added inline comments.
================ Comment at: clang/lib/Sema/SemaDecl.cpp:6904 << Name << RD->getTagKind(); Invalid = true; + } else if (RD->isLocalClass()) { ---------------- rjmccall wrote: > This diagnostic actually ignores the tag kind that passed down to it, which > should be fixed. Also, you should pass in the tag kind for the actual > anonymous class you found. > > While I'm looking at this code: `isLocalClass` is mis-designed and doesn't > work for any of our non-`FunctionDecl` local contexts. This check should be > `if (RD->getParentFunctionOrMethod())`. > This diagnostic actually ignores the tag kind that passed down to it, which > should be fixed. Also, you should pass in the tag kind for the actual > anonymous class you found. Will do. > While I'm looking at this code: isLocalClass is mis-designed and doesn't work > for any of our non-FunctionDecl local contexts. This check should be if > (RD->getParentFunctionOrMethod()). CXXMethodDecl has FunctionDecl as a parent class, so isLocalClass will find and return a CXXMethodDecl. Checking it on ``` class Example { void method() { class X { static int x; }; } }; ``` I get the error as expected. Do you have an example where it doesn't work? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D80295/new/ https://reviews.llvm.org/D80295 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits