mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
less repetitive class+member names in second smart completion code (IDEA-CR-6176)
This commit is contained in:
@@ -33,9 +33,9 @@ import static com.intellij.codeInsight.completion.ReferenceExpressionCompletionC
|
||||
* @author peter
|
||||
*/
|
||||
class ArrayMemberAccess {
|
||||
static void addArrayMemberAccessors(final PsiElement element, final String prefix, final PsiType itemType,
|
||||
final PsiElement qualifier, final Consumer<LookupElement> result, PsiModifierListOwner object,
|
||||
final PsiType expectedType)
|
||||
static void addMemberAccessors(final PsiElement element, final String prefix, final PsiType itemType,
|
||||
final PsiElement qualifier, final Consumer<LookupElement> result, PsiModifierListOwner object,
|
||||
final PsiType expectedType)
|
||||
throws IncorrectOperationException {
|
||||
if (itemType instanceof PsiArrayType && expectedType.isAssignableFrom(((PsiArrayType)itemType).getComponentType())) {
|
||||
final PsiExpression conversion = createExpression(getQualifierText(qualifier) + prefix + "[0]", element);
|
||||
@@ -54,7 +54,7 @@ class ArrayMemberAccess {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
static ExpressionLookupItem getSingleArrayElementAccess(PsiElement element, LookupElement item) {
|
||||
static ExpressionLookupItem accessFirstElement(PsiElement element, LookupElement item) {
|
||||
if (item.getObject() instanceof PsiLocalVariable) {
|
||||
final PsiLocalVariable variable = (PsiLocalVariable)item.getObject();
|
||||
final PsiType type = variable.getType();
|
||||
|
||||
@@ -38,10 +38,10 @@ class ChainedCallCompletion {
|
||||
StandardPatterns.string().oneOf("hashCode", "equals", "finalize", "wait", "notify", "notifyAll", "getClass", "clone", "toString")).
|
||||
definedInClass(CommonClassNames.JAVA_LANG_OBJECT);
|
||||
|
||||
static void addChainedCallVariants(final PsiElement place, LookupElement qualifierItem,
|
||||
final Consumer<LookupElement> result,
|
||||
PsiType qualifierType,
|
||||
final PsiType expectedType, JavaSmartCompletionParameters parameters) throws
|
||||
static void addChains(final PsiElement place, LookupElement qualifierItem,
|
||||
final Consumer<LookupElement> result,
|
||||
PsiType qualifierType,
|
||||
final PsiType expectedType, JavaSmartCompletionParameters parameters) throws
|
||||
IncorrectOperationException {
|
||||
final Object object = qualifierItem.getObject();
|
||||
if (OBJECT_METHOD_PATTERN.accepts(object) && !allowGetClass(object, parameters)) {
|
||||
|
||||
@@ -36,12 +36,12 @@ import static com.intellij.codeInsight.completion.ReferenceExpressionCompletionC
|
||||
* @author peter
|
||||
*/
|
||||
class FromArrayConversion {
|
||||
static void addConversionsFromArray(final PsiElement element,
|
||||
final String prefix,
|
||||
final PsiType itemType,
|
||||
final Consumer<LookupElement> result,
|
||||
@Nullable PsiElement qualifier,
|
||||
final PsiType expectedType) throws IncorrectOperationException {
|
||||
static void addConversions(final PsiElement element,
|
||||
final String prefix,
|
||||
final PsiType itemType,
|
||||
final Consumer<LookupElement> result,
|
||||
@Nullable PsiElement qualifier,
|
||||
final PsiType expectedType) throws IncorrectOperationException {
|
||||
final String methodName = getArraysConversionMethod(itemType, expectedType);
|
||||
if (methodName == null) return;
|
||||
|
||||
|
||||
+1
-1
@@ -108,7 +108,7 @@ public class ReferenceExpressionCompletionContributor {
|
||||
final Set<LookupElement> base =
|
||||
JavaSmartCompletionContributor.completeReference(element, reference, filter, false, true, parameters.getParameters(), PrefixMatcher.ALWAYS_TRUE);
|
||||
for (final LookupElement item : new LinkedHashSet<LookupElement>(base)) {
|
||||
ExpressionLookupItem access = ArrayMemberAccess.getSingleArrayElementAccess(element, item);
|
||||
ExpressionLookupItem access = ArrayMemberAccess.accessFirstElement(element, item);
|
||||
if (access != null) {
|
||||
base.add(access);
|
||||
PsiType type = access.getType();
|
||||
|
||||
@@ -108,16 +108,16 @@ class SlowerTypeConversions implements Runnable {
|
||||
final PsiElement qualifier =
|
||||
element1 instanceof PsiJavaCodeReferenceElement ? ((PsiJavaCodeReferenceElement)element1).getQualifier() : null;
|
||||
final PsiType expectedType = parameters.getExpectedType();
|
||||
ChainedCallCompletion.addChainedCallVariants(element, baseItem, result, itemType, expectedType, parameters);
|
||||
ChainedCallCompletion.addChains(element, baseItem, result, itemType, expectedType, parameters);
|
||||
|
||||
final String prefix = getItemText(object);
|
||||
if (prefix == null) return;
|
||||
|
||||
FromArrayConversion.addConversionsFromArray(element, prefix, itemType, result, qualifier, expectedType);
|
||||
FromArrayConversion.addConversions(element, prefix, itemType, result, qualifier, expectedType);
|
||||
|
||||
ToArrayConversion.addToArrayConversions(element, object, prefix, itemType, result, qualifier, expectedType);
|
||||
ToArrayConversion.addConversions(element, object, prefix, itemType, result, qualifier, expectedType);
|
||||
|
||||
ArrayMemberAccess.addArrayMemberAccessors(element, prefix, itemType, qualifier, result, (PsiModifierListOwner)object, expectedType);
|
||||
ArrayMemberAccess.addMemberAccessors(element, prefix, itemType, qualifier, result, (PsiModifierListOwner)object, expectedType);
|
||||
}
|
||||
catch (IncorrectOperationException ignored) {
|
||||
}
|
||||
|
||||
@@ -36,9 +36,9 @@ import static com.intellij.codeInsight.completion.ReferenceExpressionCompletionC
|
||||
* @author peter
|
||||
*/
|
||||
public class ToArrayConversion {
|
||||
static void addToArrayConversions(final PsiElement element, final Object object, final String prefix, final PsiType itemType,
|
||||
final Consumer<LookupElement> result, @Nullable final PsiElement qualifier,
|
||||
final PsiType expectedType) {
|
||||
static void addConversions(final PsiElement element, final Object object, final String prefix, final PsiType itemType,
|
||||
final Consumer<LookupElement> result, @Nullable final PsiElement qualifier,
|
||||
final PsiType expectedType) {
|
||||
final String callSpace = getSpace(CodeStyleSettingsManager.getSettings(element.getProject()).SPACE_WITHIN_METHOD_CALL_PARENTHESES);
|
||||
final PsiType componentType = PsiUtil.extractIterableTypeParameter(itemType, true);
|
||||
if (componentType == null || !(expectedType instanceof PsiArrayType)) return;
|
||||
|
||||
Reference in New Issue
Block a user