From: Sean Callanan Date: Thu, 11 Dec 2014 19:33:57 +0000 (+0000) Subject: Removed the assertion that we can find any named X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d919698caaa57cc8ed9667f75cf3bee7b1779f0e;p=platform%2Fupstream%2Fllvm.git Removed the assertion that we can find any named Objective-C type in the runtime. This is not actually true, it's entirely possible to say @class DoesntExist; @interface DoesExist { DoesntExist *whyyyyy; } @end and this code will not only compile but also run. So this assertion will fire in situations users might encounter. I left the assertion enabled in debug mode, because we could still catch a case we're not aware of (i.e., a class that we *ought* to have found but where somehow we mis-parsed the name). llvm-svn: 224038 --- diff --git a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp index 197bdc0..57d6d54 100644 --- a/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp +++ b/lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeEncodingParser.cpp @@ -253,7 +253,14 @@ AppleObjCTypeEncodingParser::BuildObjCObjectPointerType (clang::ASTContext &ast_ max_matches, decls); - assert(num_types); // how can a type be mentioned in runtime type signatures and not be in the runtime? + // The user can forward-declare something that has no definition. The runtime doesn't prohibit this at all. + // This is a rare and very weird case. We keep this assert in debug builds so we catch other weird cases. +#ifdef LLDB_CONFIGURATION_DEBUG + assert(num_types); +#else + if (!num_types) + return ast_ctx.getObjCIdType(); +#endif return ClangASTContext::GetTypeForDecl(decls[0]).GetPointerType().GetQualType(); }