You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Alexsey Konstantinov (Jira)" <ji...@apache.org> on 2022/06/27 08:21:00 UTC

[jira] [Created] (GROOVY-10668) Reference to method is ambiguous if block in "if" with "instanceof"

Alexsey Konstantinov created GROOVY-10668:
---------------------------------------------

             Summary: Reference to method is ambiguous if block in "if" with "instanceof"
                 Key: GROOVY-10668
                 URL: https://issues.apache.org/jira/browse/GROOVY-10668
             Project: Groovy
          Issue Type: Bug
          Components: Compiler
    Affects Versions: 3.0.11
            Reporter: Alexsey Konstantinov


In version 3.0.10 normally the following code worked fine:
{noformat}
import groovy.transform.CompileStatic

@CompileStatic
class Test {
  def toArray(Object value) {
    def res
    if (value instanceof List)
      res = (value as List).toArray()
    else if (value instanceof String || value instanceof GString)
      res = value.toString().split(',')
    else
      throw new Exception("Not support!")

    return res
  }
}

println new Test().toArray([1,2,3])
println new Test().toArray('1,2,3'){noformat}
{{In version 3.0.11, the code does not compile with the following error:}}

 
{noformat}
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
ideaGroovyConsole.groovy: 10: [Static type checking] - Reference to method is ambiguous. Cannot choose between [java.lang.String java.lang.String#toString(), java.lang.String groovy.lang.GString#toString()]
 @ line 10, column 33.
               res = value.toString().split(',')
                                   ^
ideaGroovyConsole.groovy: 10: [Static type checking] - Cannot find matching method java.lang.Object#split(java.lang.String). Please check if the declared type is correct and if the method exists.
 @ line 10, column 19.
               res = value.toString().split(',')
                     ^
{noformat}
If you remove _value instanceof GString_ from "if", then the code compiles and runs.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)