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