From ce7241ce7a4a71da6e20d1f5a52681e2444b5f39 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 25 May 2011 19:49:50 +0200 Subject: [PATCH] don't repeat myself, use metaprogramming to get the poincuts --- .../jetbrains/plugins/groovy/dsl/DslPointcut.java | 1 + .../plugins/groovy/dsl/GroovyDslExecutor.groovy | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/DslPointcut.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/DslPointcut.java index ac964673a09d..8e18329ac3a0 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/DslPointcut.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/DslPointcut.java @@ -15,6 +15,7 @@ import java.util.*; /** * @author peter */ +@SuppressWarnings("UnusedDeclaration") public abstract class DslPointcut { public static final DslPointcut UNKNOWN = new DslPointcut() { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/GroovyDslExecutor.groovy b/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/GroovyDslExecutor.groovy index b9fa83ac4dd0..483f7da7fb84 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/GroovyDslExecutor.groovy +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/GroovyDslExecutor.groovy @@ -6,6 +6,7 @@ import com.intellij.openapi.util.text.StringUtil import com.intellij.patterns.ElementPattern import com.intellij.patterns.PsiJavaPatterns import com.intellij.util.ProcessingContext +import java.lang.reflect.Modifier import org.jetbrains.plugins.groovy.dsl.dsltop.GdslMembersProvider import org.jetbrains.plugins.groovy.dsl.psi.PsiEnhancerCategory import org.jetbrains.plugins.groovy.dsl.toplevel.CompositeContextFilter @@ -70,11 +71,17 @@ public class GroovyDslExecutor { mc.contributor = contribute mc.contribute = contribute - mc.currentType = { arg -> DslPointcut.currentType(handleImplicitBind(arg)) } - mc.enclosingType = { arg -> DslPointcut.enclosingType(handleImplicitBind(arg)) } - mc.enclosingMethod = { arg -> DslPointcut.enclosingMethod(handleImplicitBind(arg)) } mc.bind = { arg -> DslPointcut.bind(arg) } + for (m in DslPointcut.class.declaredMethods) { + if ((m.modifiers & Modifier.STATIC) && (m.modifiers & Modifier.PUBLIC)) { + def name = m.name + if (name != 'bind') { + mc."$name" = { arg -> org.jetbrains.plugins.groovy.dsl.DslPointcut."$name"(handleImplicitBind(arg)) } + } + } + } + oldStylePrimitives(mc) mc.initialize()