llvm-project/clang/lib/Parse
Argyrios Kyrtzidis b6c6a58366 Make parsing of objc @implementations more robust.
Parsing of @implementations was based on modifying global state from
the parser; the logic for late parsing of methods was spread in multiple places
making it difficult to have a robust error recovery.

  -it was difficult to ensure that we don't neglect parsing the lexed methods.
  -it was difficult to setup the original objc container context for parsing the lexed methods
   after completing ParseObjCAtImplementationDeclaration and returning to top level context.

Enhance parsing of @implementations by centralizing it in Parser::ParseObjCAtImplementationDeclaration().
ParseObjCAtImplementationDeclaration now returns only after an @implementation is fully parsed;
all the data and logic for late parsing of methods is now in one place.

This allows us to provide code-completion for late parsed methods with mis-matched braces.
rdar://10775381

llvm-svn: 149987
2012-02-07 16:50:53 +00:00
..
CMakeLists.txt Thread Safety: Patch to implement delayed parsing of attributes within a 2011-09-08 17:42:22 +00:00
Makefile BUILD_ARCHIVE is the default for libraries, no need to set it. 2010-07-18 00:14:47 +00:00
ParseAST.cpp Make parsing of objc @implementations more robust. 2012-02-07 16:50:53 +00:00
ParseCXXInlineMethods.cpp Change the diagnostics which said 'accepted as an extension' to instead say 2011-12-29 21:57:33 +00:00
ParseDecl.cpp Make parsing of objc @implementations more robust. 2012-02-07 16:50:53 +00:00
ParseDeclCXX.cpp Added location for template keyword in TemplateSpecializationTypeLoc. In the process removed some naming ambiguities. 2012-02-06 14:41:24 +00:00
ParseExpr.cpp Make parsing of objc @implementations more robust. 2012-02-07 16:50:53 +00:00
ParseExprCXX.cpp Added location for template keyword in TemplateSpecializationTypeLoc. In the process removed some naming ambiguities. 2012-02-06 14:41:24 +00:00
ParseInit.cpp Basic: import SmallString<> into clang namespace 2012-02-05 02:13:05 +00:00
ParseObjc.cpp Make parsing of objc @implementations more robust. 2012-02-07 16:50:53 +00:00
ParsePragma.cpp Fix our handling of #pragma GCC visibility. 2012-01-26 02:02:57 +00:00
ParsePragma.h Recognize gcc's ms_struct pragma (and ignore for now). 2011-04-25 18:49:15 +00:00
ParseStmt.cpp Added source location for the template keyword in AST template-id expressions. 2012-01-27 09:46:47 +00:00
ParseTemplate.cpp Added location for template keyword in TemplateSpecializationTypeLoc. In the process removed some naming ambiguities. 2012-02-06 14:41:24 +00:00
ParseTentative.cpp With a little more work in the tentative parse determining whether a statement 2012-01-25 01:19:14 +00:00
Parser.cpp Make parsing of objc @implementations more robust. 2012-02-07 16:50:53 +00:00
RAIIObjectsForParser.h Rename Diagnostic to DiagnosticsEngine as per issue 5397 2011-09-25 23:23:43 +00:00