Uploaded image for project: 'Commons JEXL'
  1. Commons JEXL
  2. JEXL-390

Pragmas should not be statements

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 3.2.1
    • 3.3
    • None

    Description

      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

          @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);      
          }
      

      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.

      Attachments

        Issue Links

          Activity

            People

              henrib Henri Biestro
              dmitri_blinov Dmitri Blinov
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: