...
Non-PSI
...
infrastructure
...
{{
...
runner
...
runnerClass:"a.b.C"
...
defaultRunnerParams:["a","b",...
...
]
...
{
location type: File,Class
nameFiler: e -> ...
}
debugger {
}
}}
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)
...
{}
...
}