diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ast/DelegatedMethodsContributor.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ast/DelegatedMethodsContributor.java index 2fc202956d5f..78faf0301610 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ast/DelegatedMethodsContributor.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ast/DelegatedMethodsContributor.java @@ -57,6 +57,7 @@ public class DelegatedMethodsContributor extends AstTransformContributor { for (PsiMethod method : methods) { if (method.isConstructor()) continue; if (!deprecated && PsiImplUtil.getAnnotation(method, "java.lang.Deprecated") != null) continue; + if (clazz.findCodeMethodsBySignature(method, false).length > 0) continue; collector.add(generateDelegateMethod(method, clazz, resolveResult.getSubstitutor())); } } diff --git a/plugins/groovy/testdata/groovy/stubGenerator/delegateAnno.test b/plugins/groovy/testdata/groovy/stubGenerator/delegateAnno.test index 0a4eb4ce3447..2f202cdbdd9c 100644 --- a/plugins/groovy/testdata/groovy/stubGenerator/delegateAnno.test +++ b/plugins/groovy/testdata/groovy/stubGenerator/delegateAnno.test @@ -9,6 +9,10 @@ class DelegateBarImpl { private @Delegate(interfaces=false) Runnable zoo; private @Delegate Doo doo; } +class Del2 implements DelegateFoo { + @Delegate DelegateFoo foo; + def foo() {} +} ----- public interface DelegateFoo { public java.lang.Object foo() ; @@ -79,4 +83,40 @@ private DelegateFoo foo = null; private java.lang.Runnable zoo = null; private Doo doo = null; } +--- +public class Del2 extends groovy.lang.GroovyObjectSupport implements DelegateFoo, groovy.lang.GroovyObject { +public java.lang.Object foo() { +return null; +} + +public DelegateFoo getFoo() { +return null; +} + +public void setFoo(DelegateFoo foo) { +return ; +} + +public java.lang.Object getProperty(java.lang.String property) { +return null; +} + +public void setProperty(java.lang.String property, java.lang.Object newValue) { +return ; +} + +public java.lang.Object invokeMethod(java.lang.String name, java.lang.Object args) { +return null; +} + +public groovy.lang.MetaClass getMetaClass() { +return null; +} + +public void setMetaClass(groovy.lang.MetaClass metaClass) { +return ; +} + +private DelegateFoo foo = null; +} --- \ No newline at end of file