Changeset: 8c885807873b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8c885807873b
Modified Files:
monetdb5/mal/mal_listing.c
monetdb5/mal/mal_parser.c
Branch: default
Log Message:
make sure we parse the sealed keyword
diffs (88 lines):
diff --git a/monetdb5/mal/mal_listing.c b/monetdb5/mal/mal_listing.c
--- a/monetdb5/mal/mal_listing.c
+++ b/monetdb5/mal/mal_listing.c
@@ -148,6 +148,10 @@ fcnDefinition(MalBlkPtr mb, InstrPtr p,
snprintf(t,(len-(t-base)), "unsafe ");
advance(t, base, len);
}
+ if( mb->sealedProp){
+ snprintf(t,(len-(t-base)), "sealed ");
+ advance(t, base, len);
+ }
snprintf(t,(len-(t-base)), "%s ", operatorName(p->token));
advance(t, base, len);
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
@@ -1749,7 +1749,7 @@ parseMAL(Client cntxt, Symbol curPrg, in
int cntrl = 0;
/*Symbol curPrg= cntxt->curprg;*/
char c;
- int inlineProp =0, unsafeProp = 0;
+ int inlineProp =0, unsafeProp = 0, sealedProp = 0;
echoInput(cntxt);
/* here the work takes place */
@@ -1815,10 +1815,12 @@ parseMAL(Client cntxt, Symbol curPrg, in
if (MALkeyword(cntxt, "command", 7)) {
parseCommandPattern(cntxt, COMMANDsymbol);
cntxt->curprg->def->unsafeProp = unsafeProp;
- if( inlineProp )
+ cntxt->curprg->def->sealedProp = sealedProp;
+ if (inlineProp)
showException(cntxt->fdout, SYNTAX,
"parseError", "INLINE ignored");
inlineProp = 0;
unsafeProp = 0;
+ sealedProp = 0;
continue;
}
if (MALkeyword(cntxt, "catch", 5)) {
@@ -1842,8 +1844,10 @@ parseMAL(Client cntxt, Symbol curPrg, in
if (parseFunction(cntxt, FUNCTIONsymbol)){
cntxt->curprg->def->inlineProp =
inlineProp;
cntxt->curprg->def->unsafeProp =
unsafeProp;
+ cntxt->curprg->def->sealedProp =
sealedProp;
inlineProp = 0;
unsafeProp = 0;
+ sealedProp = 0;
break;
}
} else if (MALkeyword(cntxt, "factory", 7)) {
@@ -1851,8 +1855,11 @@ parseMAL(Client cntxt, Symbol curPrg, in
showException(cntxt->fdout, SYNTAX,
"parseError", "INLINE ignored");
if( unsafeProp)
showException(cntxt->fdout, SYNTAX,
"parseError", "UNSAFE ignored");
+ if( sealedProp)
+ showException(cntxt->fdout, SYNTAX,
"parseError", "SEALED ignored");
inlineProp = 0;
unsafeProp = 0;
+ sealedProp = 0;
cntxt->blkmode++;
parseFunction(cntxt, FACTORYsymbol);
break;
@@ -1882,8 +1889,10 @@ parseMAL(Client cntxt, Symbol curPrg, in
showException(cntxt->fdout, SYNTAX,
"parseError", "INLINE ignored");
parseCommandPattern(cntxt, PATTERNsymbol);
cntxt->curprg->def->unsafeProp = unsafeProp;
+ cntxt->curprg->def->sealedProp = sealedProp;
inlineProp = 0;
unsafeProp = 0;
+ sealedProp = 0;
continue;
}
goto allLeft;
@@ -1900,6 +1909,13 @@ parseMAL(Client cntxt, Symbol curPrg, in
cntrl = RETURNsymbol;
}
goto allLeft;
+ case 's':
+ if (MALkeyword(cntxt, "sealed", 6)) {
+ sealedProp= 1;
+ skipSpace(cntxt);
+ continue;
+ }
+ goto allLeft;
case 'U': case 'u':
if (MALkeyword(cntxt, "unsafe", 6)) {
unsafeProp= 1;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list