Uploaded image for project: 'Velocity'
  1. Velocity
  2. VELOCITY-874

Subtraction doesn't work as expected

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • None
    • None
    • None
    • None
    • VTL in user macro in Atlassian Confluence 5.9.4

    Description

      This works as expected:

      ## @noparams
      
      #set ($n = 5)
      #set ($m = $n+1)
      <p>$m</p>
      

      Output: <p>6</p>

      However, subtraction doesn't work:

      ## @noparams
      
      #set ($n = 5)
      #set ($m = $n-1)
      <p>$m</p>
      

      Output: <p>$m</p>

      From SO Q&A #15448108, it appears that this behavior is due to the parser treating the hyphen/dash/minus-sign as part of the identifier, but certainly an exception should be made for when the "identifier" ends with only digits and/or hyphens.

      Another case:

      ## @noparams
      
      #set ($n = 5)
      #set ($m = $n- 1)
      <p>$m</p>
      

      In this case we get an all too familiar ParseErrorException:

      org.apache.velocity.exception.ParseErrorException: Encountered "1" at getRenderedContent[line 4, column 16]
      Was expecting one of:
          <RPAREN> ...
          "-" ...
          "+" ...
          "*" ...
          "/" ...
          "%" ...
          <LOGICAL_AND> ...
          <LOGICAL_OR> ...
          <LOGICAL_LT> ...
          <LOGICAL_LE> ...
          <LOGICAL_GT> ...
          <LOGICAL_GE> ...
          <LOGICAL_EQUALS> ...
          <LOGICAL_NOT_EQUALS> ...
      
              at org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1202)
              at org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1164)
              at org.apache.velocity.app.VelocityEngine.evaluate(VelocityEngine.java:219)
              at com.atlassian.confluence.util.velocity.VelocityUtils.writeRenderedContent(VelocityUtils.java:148)
              at com.atlassian.confluence.util.velocity.VelocityUtils.getRenderedContent(VelocityUtils.java:130)
              at com.atlassian.confluence.util.velocity.VelocityUtils.getRenderedContent(VelocityUtils.java:117)
              at com.atlassian.confluence.util.velocity.VelocityUtils.getRenderedContent(VelocityUtils.java:113)
              at com.atlassian.confluence.macro.GenericVelocityMacro.execute(GenericVelocityMacro.java:101)
      ~~~snipped~~~
      

      This bug is related to (or possibly the same as) bug 873.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              alex35 Alexander Rosenberg
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: