You’re right, thanks for the reminder. I’ll get a test in today. Sean
> On Dec 10, 2014, at 9:16 AM, jahanian <[email protected]> wrote: > > Test please. > - Fariborz > >> On Dec 9, 2014, at 3:47 PM, Sean Callanan <[email protected]> wrote: >> >> Author: spyffe >> Date: Tue Dec 9 17:47:56 2014 >> New Revision: 223855 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=223855&view=rev >> Log: >> Modified the Objective-C lexer and parser (only >> in debugger mode) to accept @import declarations >> and pass them to the debugger. >> >> In the preprocessor, accept import declarations >> if the debugger is enabled, but don't actually >> load the module, just pass the import path on to >> the preprocessor callbacks. >> >> In the Objective-C parser, if it sees an import >> declaration in statement context (usual for LLDB), >> ignore it and return a NullStmt. >> >> Modified: >> cfe/trunk/lib/Lex/Preprocessor.cpp >> cfe/trunk/lib/Parse/ParseObjc.cpp >> >> Modified: cfe/trunk/lib/Lex/Preprocessor.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/Preprocessor.cpp?rev=223855&r1=223854&r2=223855&view=diff >> ============================================================================== >> --- cfe/trunk/lib/Lex/Preprocessor.cpp (original) >> +++ cfe/trunk/lib/Lex/Preprocessor.cpp Tue Dec 9 17:47:56 2014 >> @@ -672,7 +672,8 @@ bool Preprocessor::HandleIdentifier(Toke >> // keyword when we're in a caching lexer, because caching lexers only get >> // used in contexts where import declarations are disallowed. >> if (LastTokenWasAt && II.isModulesImport() && !InMacroArgs && >> - !DisableMacroExpansion && getLangOpts().Modules && >> + !DisableMacroExpansion && >> + (getLangOpts().Modules || getLangOpts().DebuggerSupport) && >> CurLexerKind != CLK_CachingLexer) { >> ModuleImportLoc = Identifier.getLocation(); >> ModuleImportPath.clear(); >> @@ -745,12 +746,14 @@ void Preprocessor::LexAfterModuleImport( >> } >> >> // If we have a non-empty module path, load the named module. >> - if (!ModuleImportPath.empty() && getLangOpts().Modules) { >> - Module *Imported = TheModuleLoader.loadModule(ModuleImportLoc, >> - ModuleImportPath, >> - Module::MacrosVisible, >> - >> /*IsIncludeDirective=*/false); >> - if (Callbacks) >> + if (!ModuleImportPath.empty()) { >> + Module *Imported = nullptr; >> + if (getLangOpts().Modules) >> + Imported = TheModuleLoader.loadModule(ModuleImportLoc, >> + ModuleImportPath, >> + Module::MacrosVisible, >> + /*IsIncludeDirective=*/false); >> + if (Callbacks && (getLangOpts().Modules || >> getLangOpts().DebuggerSupport)) >> Callbacks->moduleImport(ModuleImportLoc, ModuleImportPath, Imported); >> } >> } >> >> Modified: cfe/trunk/lib/Parse/ParseObjc.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseObjc.cpp?rev=223855&r1=223854&r2=223855&view=diff >> ============================================================================== >> --- cfe/trunk/lib/Parse/ParseObjc.cpp (original) >> +++ cfe/trunk/lib/Parse/ParseObjc.cpp Tue Dec 9 17:47:56 2014 >> @@ -79,7 +79,7 @@ Parser::DeclGroupPtrTy Parser::ParseObjC >> SingleDecl = ParseObjCPropertyDynamic(AtLoc); >> break; >> case tok::objc_import: >> - if (getLangOpts().Modules) >> + if (getLangOpts().Modules || getLangOpts().DebuggerSupport) >> return ParseModuleImport(AtLoc); >> Diag(AtLoc, diag::err_atimport); >> SkipUntil(tok::semi); >> @@ -2024,7 +2024,13 @@ StmtResult Parser::ParseObjCAtStatement( >> >> if (Tok.isObjCAtKeyword(tok::objc_autoreleasepool)) >> return ParseObjCAutoreleasePoolStmt(AtLoc); >> - >> + >> + if (Tok.isObjCAtKeyword(tok::objc_import) && >> + getLangOpts().DebuggerSupport) { >> + SkipUntil(tok::semi); >> + return Actions.ActOnNullStmt(Tok.getLocation()); >> + } >> + >> ExprResult Res(ParseExpressionWithLeadingAt(AtLoc)); >> if (Res.isInvalid()) { >> // If the expression is invalid, skip ahead to the next semicolon. Not >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
