groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Byron Foster <by...@base2.cc>
Subject Problem overloading bracket operator with CompileStatic
Date Sun, 27 Dec 2015 08:18:25 GMT
Given the following code:

——————————————————————————————————-
package rankspin

import groovy.transform.CompileStatic

trait SimpleMap<K, V> {
  abstract V getAt(K k)
}

class Foo implements SimpleMap<String, String> {
  String getAt(String k) {return "bar"}
}

@CompileStatic
void go(SimpleMap map) {
  println map["a"]
}

Foo foo = new Foo()
go(foo)
——————————————————————————————————-

I get the following exception:

Caught: groovy.lang.MissingPropertyException: No such property: a for class: rankspin.Foo
groovy.lang.MissingPropertyException: No such property: a for class: rankspin.Foo
	at rankspin.scratch$go.callCurrent(Unknown Source)
	at rankspin.scratch.run(scratch.groovy:19)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

If I take @CompileStatic out it works.  It seems that with compile static Groovy is not honoring
the overloaded bracket operators with getAt and setAt.  Am I missing something here?


Also,  in the actual code where this issue is occurring I get a:

Threw: org.codehaus.groovy.runtime.metaclass.MissingPropertyExceptionNoStack
msg: No such property: password for class: rankspin.web.MyRequest

With no stack trace.  Even in the example code above it does not indicate the code site where
the error occurred.  is this correct?

Thanks!




Mime
View raw message