Improve the diagnostic given when referring to a tag type without a tag (in C)
or that's been hidden by a non-type (in C++). The ideal C++ diagnostic here would note the hiding declaration, but this is a good start. llvm-svn: 96141
This commit is contained in:
parent
073a0c88cc
commit
38200b081a
|
@ -173,7 +173,7 @@ def err_friend_invalid_in_context : Error<
|
|||
def err_unknown_typename : Error<
|
||||
"unknown type name %0">;
|
||||
def err_use_of_tag_name_without_tag : Error<
|
||||
"use of tagged type %0 without '%1' tag">;
|
||||
"must use '%1' tag to refer to type %0%select{| in this scope}2">;
|
||||
def err_expected_ident_in_using : Error<
|
||||
"expected an identifier in using directive">;
|
||||
def err_unexected_colon_in_nested_name_spec : Error<
|
||||
|
|
|
@ -733,7 +733,7 @@ bool Parser::ParseImplicitInt(DeclSpec &DS, CXXScopeSpec *SS,
|
|||
|
||||
if (TagName) {
|
||||
Diag(Loc, diag::err_use_of_tag_name_without_tag)
|
||||
<< Tok.getIdentifierInfo() << TagName
|
||||
<< Tok.getIdentifierInfo() << TagName << getLang().CPlusPlus
|
||||
<< CodeModificationHint::CreateInsertion(Tok.getLocation(),TagName);
|
||||
|
||||
// Parse this as a tag as if the missing tag were present.
|
||||
|
|
|
@ -47,8 +47,8 @@ int test6() { return a; } // a should be declared.
|
|||
// Use of tagged type without tag. rdar://6783347
|
||||
struct xyz { int y; };
|
||||
enum myenum { ASDFAS };
|
||||
xyz b; // expected-error {{use of tagged type 'xyz' without 'struct' tag}}
|
||||
myenum c; // expected-error {{use of tagged type 'myenum' without 'enum' tag}}
|
||||
xyz b; // expected-error {{must use 'struct' tag to refer to type 'xyz'}}
|
||||
myenum c; // expected-error {{must use 'enum' tag to refer to type 'myenum'}}
|
||||
|
||||
float *test7() {
|
||||
// We should recover 'b' by parsing it with a valid type of "struct xyz", which
|
||||
|
|
Loading…
Reference in New Issue