Macro names that got undefined inside a module may not have their MacroInfo set.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@231251
91177308-0d34-0410-b5e6-
96231b3b80d8
StringRef BestSpelling;
for (Preprocessor::macro_iterator I = macro_begin(), E = macro_end();
I != E; ++I) {
- if (!I->second->getMacroInfo()->isObjectLike())
- continue;
const MacroDirective::DefInfo
Def = I->second->findDirectiveAtLoc(Loc, SourceMgr);
- if (!Def)
+ if (!Def || !Def.getMacroInfo())
+ continue;
+ if (!Def.getMacroInfo()->isObjectLike())
continue;
if (!MacroDefinitionEquals(Def.getMacroInfo(), Tokens))
continue;
extern FILE *myFile;
+#define SOME_MACRO_GETTING_UNDEFINED 1
+#undef SOME_MACRO_GETTING_UNDEFINED
+
#endif // MODULE_H
--- /dev/null
+// RUN: rm -rf %t.mcp
+// RUN: %clang_cc1 -fmodules-cache-path=%t.mcp -fmodules -F %S/Inputs -fobjc-arc %s -verify
+
+@import Module;
+
+__attribute__((objc_root_class))
+@interface Test
+// rdar://19904648
+@property (assign) id newFile; // expected-error {{property follows Cocoa naming convention for returning 'owned' objects}} \
+ // expected-note {{explicitly declare getter}}
+@end
+
+@implementation Test
+@end