================
Comment at: lib/Sema/SemaDecl.cpp:12955-12956
@@ -12954,4 +12954,4 @@
   // it needs to go into the function scope.
-  if (InFunctionDeclarator)
+  if (!getLangOpts().CPlusPlus && InFunctionDeclarator)
     DeclsInPrototypeScope.push_back(Enum);
 
----------------
Richard Smith wrote:
> In `ActOnTag` we have this condition:
> 
>   if (S->isFunctionPrototypeScope() && !getLangOpts().CPlusPlus &&
>       InFunctionDeclarator && Name)
> 
> Is there a good reason for these to be different?
> 
> (I'm not particularly happy that `InFunctionDeclarator` is nonzero in the 
> case where we've switched out of function declarator scope -- can you also 
> update the comment in Sema.h to indicate that this value may be inaccurate in 
> C++?)
> Is there a good reason for these to be different?

After digging into this some more, I think this logic only needs to be in 
ActOnTag since it handles all tag types. I was also able to simplify the logic 
by relying only on scopes to determine when we are in prototype scope and 
getting rid of InFunctionDeclarator.


http://llvm-reviews.chandlerc.com/D2742
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to