add versioning support to gdsl
[idea/community.git] / plugins / groovy / resources / standardDsls / metaDsl.gdsl
1 def gdslScriptContext = context(scope: scriptScope(), filetypes:['gdsl'])
2
3 contributor([gdslScriptContext]) {
4   method name: "context", params: [args: [:]], type: "java.lang.Object"
5   method name: "context", params: [:], type: "java.lang.Object"
6   method name: "contributor", params: [contexts: "java.util.List", body: {}], type: void
7   method name: "contributor", params: [contexts: "java.util.Map", body: {}], type: void
8   method name: "contributor", params: [contexts: "java.lang.Object", body: {}], type: void
9
10   method name: "supportsVersion", params: [version: "java.lang.String"], type: boolean
11
12   // scopes
13   property name: "closureScope", params: [contexts: "java.util.Map"], type: {}
14   property name: "scriptScope", params: [contexts: "java.util.Map"], type: {}
15
16   method name: "hasAnnotation", params:[fqn: "java.lang.String"], type: "java.lang.Object"
17   method name: "hasMethod", params:[memberPattern: "java.lang.Object"], type: "java.lang.Object"
18   method name: "hasField", params:[memberPattern: "java.lang.Object"], type: "java.lang.Object"
19 }
20
21 def contributorBody = context(scope: closureScope(isArg: true), filetypes:['gdsl'])
22
23 contributor([contributorBody]) {
24   if (enclosingCall("contributor")) {
25     method name: "method", type: "void", params: [args: [:]]
26     method name: "property", type: "void", params: [args: [:]]
27
28     method name: "add", type: "void", params: [member: "com.intellij.psi.PsiMember"]
29     method name: "findClass", type: "com.intellij.psi.PsiClass", params: [name: "java.lang.String"]
30     method name: "delegatesTo", type: "void", params: [elem: "com.intellij.psi.PsiElement"]
31
32     method name: "enclosingCall",
33            type: "com.intellij.psi.PsiElement",
34            params: [methodName: "java.lang.String"]
35
36     method name: "enclosingMethod", type: "com.intellij.psi.PsiMethod"
37     method name: "enclosingMember", type: "com.intellij.psi.PsiMember"
38     method name: "enclosingClass", type: "com.intellij.psi.PsiClass"
39
40     property name: "place", type: "com.intellij.psi.PsiElement"
41     property name: "classType", type: "com.intellij.psi.PsiClass"
42   }
43 }
44
45 def enrich(String className) {
46   context(scope: closureScope(isArg: true), ctype: className, filetypes:['gdsl'])
47 }
48
49 contributor(enrich("com.intellij.psi.PsiClass")) {
50   method name: "getMethods", type: "java.util.Collection"
51   method name: "getQualName", type: "java.lang.String"
52 }
53
54 contributor(enrich("com.intellij.psi.PsiMember")) {
55   method name: "hasAnnotation", params: [name: "java.lang.String"], type: "boolean"
56   method name: "hasAnnotation", type: "boolean"
57   method name: "getAnnotation", params: [name: "java.lang.String"], type: "com.intellij.psi.PsiAnnotation"
58   method name: "getAnnotations", params: [name: "java.lang.String"], type: "java.util.Collection<com.intellij.psi.PsiAnnotation>"
59 }
60
61 contributor(enrich("com.intellij.psi.PsiField")) {
62   method name: "getClassType", type: "com.intellij.psi.PsiClass"
63 }
64
65 contributor(enrich("com.intellij.psi.PsiMethod")) {
66   method name: "getParamStringVector", type: "java.util.Map"
67 }
68
69 contributor(enrich("com.intellij.psi.PsiElement")) {
70   method name: "bind", type: "com.intellij.psi.PsiElement"
71   method name: "eval", type: "java.lang.Object"
72   method name: "asList", type: "java.util.collection<com.intellij.psi.PsiElement>"
73   method name: "getQualifier", type: "com.intellij.psi.PsiElement"
74 }
75
76 contributor(enrich("org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression")) {
77   method name: "getArguments", type: "java.util.Collection"
78   method name: "getClassType", type: "com.intellij.psi.PsiClass"
79 }
80