always flush scopes on closing brace

without that, both the lines
  cond1 { cond2: VAR = val }
and
  cond1 { cond2: else: cond3 }
would yield two bogus errors: first an excess brace, and then a missing
one.

Change-Id: I8609106c1ad387577deec2077e2ce13507ac4d3f
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
This commit is contained in:
Oswald Buddenhagen 2015-02-18 11:17:06 +01:00
parent da1aaed059
commit 962c7ab6f8

View File

@ -701,8 +701,9 @@ void QMakeParser::read(ProFile *pro, const QString &in, int line, SubGrammar gra
} else if (c == '}') { } else if (c == '}') {
FLUSH_LHS_LITERAL(); FLUSH_LHS_LITERAL();
finalizeCond(tokPtr, buf, ptr, wordCount); finalizeCond(tokPtr, buf, ptr, wordCount);
flushScopes(tokPtr); m_state = StNew; // De-facto newline
closeScope: closeScope:
flushScopes(tokPtr);
if (!m_blockstack.top().braceLevel) { if (!m_blockstack.top().braceLevel) {
parseError(fL1S("Excess closing brace.")); parseError(fL1S("Excess closing brace."));
} else if (!--m_blockstack.top().braceLevel } else if (!--m_blockstack.top().braceLevel