Changeset: 76a674e0247e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=76a674e0247e
Modified Files:
monetdb5/mal/Tests/dynamicload.stable.err
monetdb5/mal/Tests/tst054.stable.err
monetdb5/mal/mal_parser.c
monetdb5/mal/mal_session.c
Branch: malparsing
Log Message:
Continue parsing after end of separate include handling
diffs (65 lines):
diff --git a/monetdb5/mal/Tests/dynamicload.stable.err
b/monetdb5/mal/Tests/dynamicload.stable.err
--- a/monetdb5/mal/Tests/dynamicload.stable.err
+++ b/monetdb5/mal/Tests/dynamicload.stable.err
@@ -91,7 +91,7 @@ QUERY = # examples of non-bindable instr
comment "Should not be callable";
wrong();
-
+ERROR = !SyntaxException: include UNKNOWlib;
!SyntaxException:^19 MALException:mal.import:#WARNING: could not open
file: UNKNOWlib
!TypeException:user.main[1]:object code for command user.wrong missing
!TypeException:user.main[1]:'user.wrong' undefined in:
user.wrong();
diff --git a/monetdb5/mal/Tests/tst054.stable.err
b/monetdb5/mal/Tests/tst054.stable.err
--- a/monetdb5/mal/Tests/tst054.stable.err
+++ b/monetdb5/mal/Tests/tst054.stable.err
@@ -76,8 +76,9 @@ QUERY = function z()( :int,:int,:int,:in
return (1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0);
end z;
z();
-ERROR = !SyntaxException:parseError:return
(1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0);
- !SyntaxException:parseError: ^<identifier> expected
+
+ !SyntaxException:^9 left-hand-side <identifier> expected
+ !SyntaxException:RETURN missing
!TypeException:user.main[1]:'user.z' undefined in: user.z();
# 11:11:08 >
diff --git a/monetdb5/mal/mal_parser.c b/monetdb5/mal/mal_parser.c
--- a/monetdb5/mal/mal_parser.c
+++ b/monetdb5/mal/mal_parser.c
@@ -1521,10 +1521,11 @@ part2: /* consume <operator><term> part
}
part3:
skipSpace(cntxt);
- if (*cntxt->lineptr != ';')
+ if (*cntxt->lineptr != ';' && cntxt->curprg->def->errors == MAL_SUCCEED)
parseError(cntxt, "';' expected\n");
pushInstruction(curBlk, curInstr);
- if (cntrl == RETURNsymbol && !(curInstr->token == ASSIGNsymbol ||
getModuleId(curInstr) != 0))
+ if (cntrl == RETURNsymbol && !(curInstr->token == ASSIGNsymbol ||
getModuleId(curInstr) != 0)
+ && cntxt->curprg->def->errors == MAL_SUCCEED)
parseError(cntxt, "return assignment expected\n");
}
diff --git a/monetdb5/mal/mal_session.c b/monetdb5/mal/mal_session.c
--- a/monetdb5/mal/mal_session.c
+++ b/monetdb5/mal/mal_session.c
@@ -616,6 +616,7 @@ MALreader(Client c)
fprintf(stderr,"Pop the input stream
for client %d\n", c->idx);
#endif
MCpopClientInput(c);
+ nr = -1; // force reading next part
} else{
// if we have unprocessed data we
should return and await its consumption
if(c->line && *c->line){
@@ -624,8 +625,8 @@ MALreader(Client c)
MT_lock_set(&mal_contextLock);
c->mode = FINISHCLIENT;
MT_lock_unset(&mal_contextLock);
+ return MAL_SUCCEED;
}
- return MAL_SUCCEED;
}
if (!nr && blocked ){
nr = bstream_next(c->fdin); // check for eof
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list