From: Akira Hatanaka Date: Thu, 25 Feb 2016 07:08:33 +0000 (+0000) Subject: [Sema] Remove assert in TreeTransform::TransformObjCObjectType. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=23b19006a010647fee8db67a4bf89c4a38091554;p=clang [Sema] Remove assert in TreeTransform::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 "" which is a synonym for "id". rdar://problem/23838912 Differential Revision: http://reviews.llvm.org/D17355 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@261829 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h index 624839cc94..627165fa2c 100644 --- a/lib/Sema/TreeTransform.h +++ b/lib/Sema/TreeTransform.h @@ -5932,7 +5932,6 @@ TreeTransform::TransformObjCObjectType(TypeLocBuilder &TLB, } ObjCObjectTypeLoc NewT = TLB.push(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/test/SemaObjCXX/base-type-as-written.mm b/test/SemaObjCXX/base-type-as-written.mm new file mode 100644 index 0000000000..05962e3f28 --- /dev/null +++ b/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::TransformObjCObjectType. + +@protocol P1 +@end + +template foo1(T1) { // expected-warning {{protocol has no object type specified; defaults to qualified 'id'}} + foo1(0); +}