diff options
author | Akira Hatanaka <ahatanaka@apple.com> | 2016-02-25 07:08:33 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanaka@apple.com> | 2016-02-25 07:08:33 +0000 |
commit | be8f522ef3df6aec5d4c9c2e897865e55bbdb6ff (patch) | |
tree | 876b61902361fd9291e007a0a84cf2d51af66d2b | |
parent | e5bbca6ae2946c47c407f27b02aab5b5cfb0ecd7 (diff) | |
download | bcm5719-llvm-be8f522ef3df6aec5d4c9c2e897865e55bbdb6ff.tar.gz bcm5719-llvm-be8f522ef3df6aec5d4c9c2e897865e55bbdb6ff.zip |
[Sema] Remove assert in TreeTransform<Derived>::TransformObjCObjectType.
The assert isn't correct since TypeLoc::ObjCObjectTypeLoc doesn't
indicate whether the type is a dependent type. The function returns
false for a type like "<SomeProtocol>" which is a synonym for
"id<SomeProtocol>".
rdar://problem/23838912
Differential Revision: http://reviews.llvm.org/D17355
llvm-svn: 261829
-rw-r--r-- | clang/lib/Sema/TreeTransform.h | 1 | ||||
-rw-r--r-- | clang/test/SemaObjCXX/base-type-as-written.mm | 9 |
2 files changed, 9 insertions, 1 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 624839cc944..627165fa2c7 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -5932,7 +5932,6 @@ TreeTransform<Derived>::TransformObjCObjectType(TypeLocBuilder &TLB, } ObjCObjectTypeLoc NewT = TLB.push<ObjCObjectTypeLoc>(Result); - assert(TL.hasBaseTypeAsWritten() && "Can't be dependent"); NewT.setHasBaseTypeAsWritten(true); NewT.setTypeArgsLAngleLoc(TL.getTypeArgsLAngleLoc()); for (unsigned i = 0, n = TL.getNumTypeArgs(); i != n; ++i) diff --git a/clang/test/SemaObjCXX/base-type-as-written.mm b/clang/test/SemaObjCXX/base-type-as-written.mm new file mode 100644 index 00000000000..05962e3f288 --- /dev/null +++ b/clang/test/SemaObjCXX/base-type-as-written.mm @@ -0,0 +1,9 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s +// Make sure we don't crash in TreeTransform<Derived>::TransformObjCObjectType. + +@protocol P1 +@end + +template <class T1><P1> foo1(T1) { // expected-warning {{protocol has no object type specified; defaults to qualified 'id'}} + foo1(0); +} |