aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-08-25 18:07:12 +0000
committerDouglas Gregor <dgregor@apple.com>2010-08-25 18:07:12 +0000
commitc1a3e5e73859ece9f106ae9d84c78bef4111956a (patch)
tree69169d264ef6b775ba1ceedb90a9bf5286469997 /lib
parent59a66946aa7723c7b14831aa50902d533baaa957 (diff)
Initialize the translation-unit scope before lexing the first
token. The first token might be something that ends up triggering code completion, which in turn requires a valid Scope. Test case forthcoming. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112066 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Parse/Parser.cpp8
-rw-r--r--lib/Sema/Sema.cpp2
2 files changed, 5 insertions, 5 deletions
diff --git a/lib/Parse/Parser.cpp b/lib/Parse/Parser.cpp
index e277c3f80e..23c13ebf9d 100644
--- a/lib/Parse/Parser.cpp
+++ b/lib/Parse/Parser.cpp
@@ -324,13 +324,13 @@ Parser::~Parser() {
/// Initialize - Warm up the parser.
///
void Parser::Initialize() {
- // Prime the lexer look-ahead.
- ConsumeToken();
-
// Create the translation unit scope. Install it as the current scope.
assert(getCurScope() == 0 && "A scope is already active?");
EnterScope(Scope::DeclScope);
- Actions.ActOnTranslationUnitScope(Tok.getLocation(), getCurScope());
+ Actions.ActOnTranslationUnitScope(getCurScope());
+
+ // Prime the lexer look-ahead.
+ ConsumeToken();
if (Tok.is(tok::eof) &&
!getLang().CPlusPlus) // Empty source file is an extension in C
diff --git a/lib/Sema/Sema.cpp b/lib/Sema/Sema.cpp
index 31d6f0dd32..2e8827ddec 100644
--- a/lib/Sema/Sema.cpp
+++ b/lib/Sema/Sema.cpp
@@ -48,7 +48,7 @@ void FunctionScopeInfo::Clear(unsigned NumErrors) {
BlockScopeInfo::~BlockScopeInfo() { }
-void Sema::ActOnTranslationUnitScope(SourceLocation Loc, Scope *S) {
+void Sema::ActOnTranslationUnitScope(Scope *S) {
TUScope = S;
PushDeclContext(S, Context.getTranslationUnitDecl());