mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
@TupleConstructor also serves final properties
This commit is contained in:
+6
-4
@@ -20,6 +20,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PropertyUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrField;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightMethodBuilder;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightParameter;
|
||||
@@ -119,10 +120,11 @@ public class ConstructorAnnotationsProcessor extends AstTransformContributor {
|
||||
}
|
||||
}
|
||||
|
||||
if (includeFields) {
|
||||
final Map<String,PsiMethod> properties = PropertyUtil.getAllProperties(psiClass, true, false, false);
|
||||
for (PsiField field : psiClass.getFields()) {
|
||||
final String name = field.getName();
|
||||
final Map<String,PsiMethod> properties = PropertyUtil.getAllProperties(psiClass, true, false, false);
|
||||
for (PsiField field : psiClass.getFields()) {
|
||||
final String name = field.getName();
|
||||
if (includeFields ||
|
||||
includeProperties && field.hasModifierProperty(PsiModifier.FINAL) && field instanceof GrField && ((GrField)field).isProperty()) {
|
||||
if (!excludes.contains(name) && !field.hasModifierProperty(PsiModifier.STATIC) && !properties.containsKey(name)) {
|
||||
fieldsConstructor.addParameter(new GrLightParameter(name, field.getType(), fieldsConstructor).setOptional(optional));
|
||||
}
|
||||
|
||||
+2
-1
@@ -277,10 +277,11 @@ public class ResolveMethodTest extends GroovyResolveTestCase {
|
||||
|
||||
public void testTupleConstructor() {
|
||||
myFixture.addClass("package groovy.transform; public @interface TupleConstructor {}")
|
||||
myFixture.addFileToProject('Classes.groovy', '@groovy.transform.TupleConstructor class Foo { int a; int b }')
|
||||
myFixture.addFileToProject('Classes.groovy', '@groovy.transform.TupleConstructor class Foo { int a; final int b }')
|
||||
def ref = configureByText('new Fo<caret>o(2, 3)')
|
||||
def target = ((GrNewExpression) ref.element.parent).advancedResolve().element
|
||||
assert target instanceof PsiMethod
|
||||
assert target.parameterList.parametersCount == 2
|
||||
assert target.navigationElement instanceof PsiClass
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user