Child pages
  • Scripting IDE for DSL awareness

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
h2. 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.)

{{
def myfoo = newType {
//describe methods&properties here
}

def stringp = mix fqn:"java.lang.String" myfoo

...

 {

  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) {}
}