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

Reply via email to