[cfe-commits] [Patch] Add -Wmissing-variable-declarations
Eli Friedman
eli.friedman at gmail.com
Wed Aug 1 13:08:59 PDT 2012
On Tue, Jul 24, 2012 at 7:06 AM, Ed Schouten <ed at 80386.nl> wrote:
> Hi Eli,
>
> 2012/6/21 Eli Friedman <eli.friedman at gmail.com>:
>> Ah... looks like we don't call it for tentative definitions (which we
>> handle in Sema::ActOnEndOfTranslationUnit). This has no effect for
>> the existing checks in CheckCompleteVariableDeclaration because none
>> of them apply to global variables in C. That could easily be changed,
>> though.
>
> Gotcha! Thanks for the pointer.
>
>> Actually, you might want some special handling for tentative
>> definitions. What do you expect the warning to do for a testcase like
>> "int x; int x = 10;"?
>
> Well, effectively I want to do the same as C++: int x must always be
> preceded by extern int i, which is typically placed in a header file.
>
>> I think it just got renamed to getPreviousDecl().
>
> Got it.
>
> I've updated the patch. As usual, it can be downloaded from:
>
> http://80386.nl/pub/wmissing-variable-declarations.txt
@@ -6839,8 +6839,10 @@
}
// Record the tentative definition; we're done.
- if (!Var->isInvalidDecl())
+ if (!Var->isInvalidDecl()) {
TentativeDefinitions.push_back(Var);
+ CheckCompleteVariableDeclaration(Var);
+ }
return;
}
Calling CheckCompleteVariableDeclaration here doesn't make sense; the
variable isn't complete at this point. If we're going to call it, it
should be from Sema::ActOnEndOfTranslationUnit.
Otherwise, looks fine.
-Eli
More information about the cfe-commits
mailing list