summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Sema/SemaDecl.cpp2
-rw-r--r--clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p4.cpp6
2 files changed, 6 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index d5ca944c1d9..dc91431cdd7 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -832,7 +832,7 @@ void Sema::MergeTypeDefDecl(TypedefDecl *New, LookupResult &OldDecls) {
// };
//
// since that was the intent of DR56.
- if (New->getUnderlyingType()->getAs<ElaboratedType>())
+ if (isa<ElaboratedType>(New->getUnderlyingType()))
return;
Diag(New->getLocation(), diag::err_redefinition)
diff --git a/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p4.cpp b/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p4.cpp
index 95fb7885f7c..7fbd77cf597 100644
--- a/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p4.cpp
+++ b/clang/test/CXX/dcl.dcl/dcl.spec/dcl.typedef/p4.cpp
@@ -2,7 +2,11 @@
struct S {
typedef struct A {} A; // expected-note {{previous definition is here}}
- typedef struct B B;
+ typedef struct B {} B;
typedef A A; // expected-error {{redefinition of 'A'}}
+
+ struct C { }; // expected-note{{previous definition is here}}
+ typedef struct C OtherC;
+ typedef OtherC C; // expected-error{{redefinition of 'C'}}
};
OpenPOWER on IntegriCloud