diff options
author | Richard Trieu <rtrieu@google.com> | 2011-05-07 01:36:37 +0000 |
---|---|---|
committer | Richard Trieu <rtrieu@google.com> | 2011-05-07 01:36:37 +0000 |
commit | de756fbbd711a0b5c8c05e6817f35307d496eec4 (patch) | |
tree | 292a9c4a05964b289a0c9d12112b6fb3580869d9 /clang/lib | |
parent | 63697e5025f65c60953fd0ca72203d60715924e9 (diff) | |
download | bcm5719-llvm-de756fbbd711a0b5c8c05e6817f35307d496eec4.tar.gz bcm5719-llvm-de756fbbd711a0b5c8c05e6817f35307d496eec4.zip |
Patch for PR 7409 - only error on definition of invalid typedefs. Suppress errors for additional uses of this invalid typedef.
llvm-svn: 131043
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Sema/TreeTransform.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index da60fccf7ed..c45d02a56c6 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -2568,9 +2568,13 @@ TreeTransform<Derived>::TransformNestedNameSpecifierLoc( Q.getLocalEndLoc()); break; } - - SemaRef.Diag(TL.getBeginLoc(), diag::err_nested_name_spec_non_tag) - << TL.getType() << SS.getRange(); + // If the nested-name-specifier is an invalid type def, don't emit an + // error because a previous error should have already been emitted. + TypedefTypeLoc* TTL = dyn_cast<TypedefTypeLoc>(&TL); + if (!TTL || !TTL->getTypedefNameDecl()->isInvalidDecl()) { + SemaRef.Diag(TL.getBeginLoc(), diag::err_nested_name_spec_non_tag) + << TL.getType() << SS.getRange(); + } return NestedNameSpecifierLoc(); } } |