[ 
https://issues.apache.org/jira/browse/JEXL-390?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17651338#comment-17651338
 ] 

Henri Biestro commented on JEXL-390:
------------------------------------

You are absolutely correct. One way to fool-proof it ( pragmas must occur 
before any statement)  and maintain compatibility (and choice) would be to 
introduce a feature flag (much like operator names).

> Pragmas should not be statements
> --------------------------------
>
>                 Key: JEXL-390
>                 URL: https://issues.apache.org/jira/browse/JEXL-390
>             Project: Commons JEXL
>          Issue Type: Improvement
>    Affects Versions: 3.2.1
>            Reporter: Dmitri Blinov
>            Assignee: Henri Biestro
>            Priority: Minor
>             Fix For: 3.3
>
>
> In Jexl pragmas are treated as statements syntactically, but do not find 
> their way to AST tree and this leads to strange bugs like in the following 
> example
> {code}
>     @Test
>     public void testBadPragmas() throws Exception {
>         final JexlEngine jexl = new 
> JexlBuilder().cache(1024).debug(true).create();
>         final JexlScript script = jexl.createScript("if (true) #pragma one 
> 42");
>         JexlContext jc = new MapContext();
>         final Object result = script.execute(jc);
>         debuggerCheck(jexl);      
>     }
> {code}
> While this partucular bug can be trivially fixed, in fact the whole idea to 
> allow putting pragmas for example inside a loop or inside if-branch is a 
> strange language design (I'm not aware of examples in other languages) as it 
> gives false idea of the pragma being controlled by script execution logic. 
> If there's no reason or use case to keep this design as is, my proposal is to 
> make a grammar change and allow pragmas to be declared only at the top of the 
> script. Another point to change current pragma implementation is that pragmas 
> can not be used with expressions, e.g. no way to specify standard options / 
> imports.  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to