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

Incorrect source location for method call expression

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.8-rc-2
    • 2.6.0-alpha-1
    • parser, parser-antlr2
    • None

    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.

      Attachments

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved: