h2. Non-PSI infrastructure {{ runner runnerClass:"a.b.C" defaultRunnerParams:\["a","b",...\] { location type: {{File,Class}}\\ nameFiler: {{e \-> ...}}\\ } \\ debugger \{ } }} h2. PSI resolve&completion: //todo support dynamically-named methods resolve&completion //todo set types for things that exist in code but with no type specified (closure parameters, etc.) mix foo.StringUtils intoClass:java.lang.String mix xxx.GantScript intoScript:"gant" mix foo.MyPreciousClass { whereClass.hasAnnotation "foo.Precious" } mix com.intellij.groovy.DslScript intoScript:"gdsl" mix com.intellij.groovy.ValuePredicates intoClass:groovy.lang.Closure { methodParameter "com.intellij.groovy.DslScript", "mix", "where" } class DslScript { void mix(category, map, Closure where) {} //todo refine existing method declaration, specify parameters name&type //todo refine existing field declaration, specify type } class ClassPredicates { boolean hasAnnotation(qname) {} } class ValuePredicates { ClassPreicates getWhereClass() {} boolean methodParameter(cls, method, param) {} } |