JavaPsiRecordUtil#getComponentForField (IDEA-CR-56873)

GitOrigin-RevId: 21e4134777640a5cfc807009f833f4eb36d6bd7c
This commit is contained in:
Tagir Valeev
2020-01-09 13:55:08 +07:00
committed by intellij-monorepo-bot
parent 55a0ff822e
commit c6057afa02
3 changed files with 16 additions and 9 deletions

View File

@@ -17,15 +17,11 @@ import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.codeStyle.SuggestedNameInfo;
import com.intellij.psi.codeStyle.VariableKind;
import com.intellij.psi.impl.light.LightRecordField;
import com.intellij.psi.impl.source.javadoc.PsiDocParamRef;
import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.javadoc.PsiDocTag;
import com.intellij.psi.javadoc.PsiDocTagValue;
import com.intellij.psi.util.PropertyUtilBase;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.util.PsiUtilCore;
import com.intellij.psi.util.*;
import com.intellij.refactoring.introduceField.InplaceIntroduceFieldPopup;
import com.intellij.refactoring.introduceVariable.IntroduceVariableBase;
import com.intellij.util.ArrayUtil;
@@ -423,7 +419,8 @@ public class JavaMemberNameCompletionContributor extends CompletionContributor {
if (staticContext && (modifierList != null && !modifierList.hasModifierProperty(PsiModifier.STATIC))) continue;
if (fieldType.equals(varType)) {
final String getterName = field instanceof LightRecordField ? field.getName() : PropertyUtilBase.suggestGetterName(field);
final String getterName = JavaPsiRecordUtil.getComponentForField(field) != null ?
field.getName() : PropertyUtilBase.suggestGetterName(field);
if ((psiClass.findMethodsByName(getterName, true).length == 0 ||
psiClass.findMethodBySignature(GenerateMembersUtil.generateGetterPrototype(field), true) == null)) {
propertyHandlers.add(getterName);

View File

@@ -1,7 +1,8 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.psi.util;
import com.intellij.psi.*;
import com.intellij.psi.impl.light.LightRecordField;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -45,6 +46,15 @@ public class JavaPsiRecordUtil {
return null;
}
/**
* @param field synthetic field that corresponds to the record component
* @return the corresponding record component; null if given field doesn't correspond to the record component.
*/
@Nullable
public static PsiRecordComponent getComponentForField(@NotNull PsiField field) {
return field instanceof LightRecordField ? ((LightRecordField)field).getRecordComponent() : null;
}
/**
* @param method method to check
* @return true if given method is a compact constructor (has no parameter list),

View File

@@ -17,7 +17,7 @@ package org.jetbrains.java.generate.element;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.psi.*;
import com.intellij.psi.impl.light.LightRecordField;
import com.intellij.psi.util.JavaPsiRecordUtil;
import com.intellij.psi.util.PropertyUtilBase;
import org.jetbrains.java.generate.psi.PsiAdapter;
@@ -75,7 +75,7 @@ public class ElementFactory {
if (PsiAdapter.isConstantField(field)) fe.setConstant(true);
if (PsiAdapter.isEnumField(field)) fe.setEnum(true);
if (field instanceof LightRecordField) fe.setRecordComponent(true);
if (JavaPsiRecordUtil.getComponentForField(field) != null) fe.setRecordComponent(true);
PsiModifierList modifiers = field.getModifierList();
if (modifiers != null) {
if (modifiers.hasModifierProperty(PsiModifier.TRANSIENT)) fe.setModifierTransient(true);