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 checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list