From 84546a6db508fbfdc2a614f0e5b68de57934532c Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Mon, 20 Jun 2016 18:11:46 +0300 Subject: [PATCH] [groovy] methods with default parameters are not abstract in traits even if code method is abstract --- .../impl/synthetic/GrReflectedMethodImpl.java | 2 +- .../Groovy23HighlightingTest.groovy | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrReflectedMethodImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrReflectedMethodImpl.java index 964c20df234e..1b84238694d7 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrReflectedMethodImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrReflectedMethodImpl.java @@ -95,7 +95,7 @@ public class GrReflectedMethodImpl extends LightMethodBuilder implements GrRefle final GrLightModifierList myModifierList = ((GrLightModifierList)getModifierList()); for (String modifier : GrModifier.GROOVY_MODIFIERS) { - if (baseMethod.hasModifierProperty(modifier)) { + if (baseMethod.getModifierList().hasExplicitModifier(modifier)) { myModifierList.addModifier(modifier); } } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/Groovy23HighlightingTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/Groovy23HighlightingTest.groovy index ab7adcba2f72..e1b3d0bf1c2d 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/Groovy23HighlightingTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/Groovy23HighlightingTest.groovy @@ -15,6 +15,7 @@ */ package org.jetbrains.plugins.groovy.lang.highlighting +import com.intellij.codeInsight.generation.OverrideImplementExploreUtil import com.intellij.codeInspection.InspectionProfileEntry import com.intellij.testFramework.LightProjectDescriptor import org.jetbrains.annotations.NotNull @@ -136,5 +137,26 @@ trait T { } } + void 'test trait with method with default parameters'() { + testHighlighting '''\ +trait A { + def foo(a, b = null, c = null) {} +} +class B implements A {} +''' + } + + void 'test trait with abstract method with default parameters'() { + testHighlighting ''' +trait A { + abstract foo(a, b = null, c = null) +} +class B implements A {} +''' + def definition = fixture.findClass('B') as GrTypeDefinition + def map = OverrideImplementExploreUtil.getMapToOverrideImplement(definition, true) + assert map.size() == 1 // need to implement only foo(a, b, c) + } + final InspectionProfileEntry[] customInspections = [new GroovyAssignabilityCheckInspection(), new GrUnresolvedAccessInspection()] }