groovy
  1. groovy
  2. GROOVY-4761

Incorrect source location for method call expression

    Details

    • Type: Bug Bug
    • Status: Open Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 1.8-rc-2
    • Fix Version/s: 4.0
    • Component/s: parser, parser-antlr
    • Labels:
      None
    • Number of attachments :
      0

      Description

      In this class, the source location for the StaticMethodCallExpression is incorrect. The start column coincides with the column for '3' and the end includes the whitespace until the comment starts.

      class StaticTrying {
      	
      	public static Class staticMethod(arg) {
      		
      	}
      	
      	def foo() {
      		def a = staticMethod 3  // extra whitespace
      	}
      }
      

      I'm not too concerned about the invalid end column, but the start column problem is affecting Groovy-Eclipse.

      I delved a little bit into this. Here is when the situation happens:

      1. when the method declaration takes 1 or more parameters
      2. the method declaration can be either static or non-static
      3. the method call takes exactly 1 argument
      4. does not use parens
      5. is part of a declaration expression.

      Because of parts 4 and 5, this problem can only occur on Groovy 1.8 because on 1.7 it would be a parsing error.

      I tracked this down to an invalid source location for the Antlr AST node being passed into AntlrParserPlugin.methodCallExpression().

      I originally reported this bug in GRECLIPSE-1031.

        Issue Links

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              Andrew Eisenberg
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated: