Label statement.

git-svn-id: svn://10.0.0.236/trunk@129239 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
rogerl%netscape.com 2002-09-11 06:39:10 +00:00
parent 9b70bdb1e1
commit 411ebed350

View File

@ -107,10 +107,15 @@ namespace MetaData {
{
LabelStmtNode *l = checked_cast<LabelStmtNode *>(p);
l->labelID = bCon->getLabel();
std::pair<LabelSet::iterator, bool> result = stmtLbl->insert(LabelSet::value_type(&l->name, l->labelID));
if (!result.second)
std::pair<LabelSet::iterator, bool> breakResult = jt->breakTargets->insert(LabelSet::value_type(&l->name, l->labelID));
if (!breakResult.second)
reportError(Exception::syntaxError, "Duplicate statement label", p->pos);
std::pair<LabelSet::iterator, bool> stmtLblResult = stmtLbl->insert(LabelSet::value_type(&l->name, l->labelID));
ValidateStmt(cxt, env, l->stmt, stmtLbl, jt);
jt->breakTargets->erase(breakResult.first);
stmtLbl->erase(stmtLblResult.first);
}
break;
case StmtNode::If: