Ping. Unless I hear something, I'll go ahead and commit the patch tomorrow morning.
On Wed, Apr 11, 2012 at 1:44 PM, Kaelyn Uhrain <[email protected]> wrote: > Hi, > > This warning is to help make code like: > > class Foo { > public: > enum Bar { X, Y }; > void SetBar(Bar bar); // Setter > Bar Bar() // Getter > private: > Bar bar_; > }; > void Foo::SetBar(Bar bar) { bar_ = bar; } > Foo::Bar Foo::Bar() { return bar_; } > > > be a bit easier to diagnose. Currently clang spits out a bunch of errors > without any real indication of what went wrong (the first error is the only > remotely helpful one, but it doesn't give any reason why an 'enum' tag has > to be added): > > tmp.cc:7:3: error: must use 'enum' tag to refer to type 'Bar' in this scope > Bar bar_; > ^ > enum > tmp.cc:9:11: error: variable has incomplete type 'void' > void Foo::SetBar(Bar bar) { bar_ = bar; } > ^ > tmp.cc:9:18: error: use of undeclared identifier 'Bar' > void Foo::SetBar(Bar bar) { bar_ = bar; } > ^ > tmp.cc:9:26: error: expected ';' after top level declarator > void Foo::SetBar(Bar bar) { bar_ = bar; } > ^ > ; > 4 errors generated. > > > With the patch, clang emits a warning before that cascade of errors: > > tmp.cc:5:7: warning: function 'Bar' shadows enum 'Bar'; uses of enum 'Bar' > will require an 'enum' > tag [-Wshadow] > Bar Bar(); // Getter > ^ > tmp.cc:3:3: note: 'Bar' declared here > enum Bar { X, Y }; > ^ > tmp.cc:7:3: error: must use 'enum' tag to refer to type 'Bar' in this scope > <and the rest of the messages from the first output example> > > > I'm sending the patch for pre-commit review both because I'm uncertain > about the wording of the wording, and primarily because I'm not sure that > modifying Sema::ActOnStartFunctionDeclarator is the right place for the > check (though it was the best candidate I could find). > > I'd also like to clean up the errors (in a separate patch) but the errors > seem to involve a lot of interactions between the parser and sema and may > take a while for me to figure out how to get things to work right. ;) > > Cheers, > Kaelyn >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
