Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-4761

Incorrect source location for method call expression


    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.8-rc-2
    • Fix Version/s: 2.6.0-alpha-1
    • Component/s: parser, parser-antlr2
    • Labels:


      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.




            • Assignee:
              daniel_sun Daniel Sun
              werdna Andrew Eisenberg
            • Votes:
              0 Vote for this issue
              1 Start watching this issue


              • Created: