From 6c0f423952d5ec915a00bea104b50b88e753cb31 Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Sat, 3 Jun 2017 16:32:33 +0300 Subject: [PATCH] [groovy] implement GroovyPolyVariantReference in PSI --- .../groovy/lang/psi/GrReferenceElement.java | 18 ++++-------------- .../api}/GroovyPolyVariantReference.java | 9 +++++++-- .../statements/arguments/GrArgumentLabel.java | 18 +++++------------- .../expressions/GrOperatorExpression.java | 10 +++------- .../expressions/GrSafeCastExpression.java | 12 ++++-------- .../expressions/GrUnaryExpression.java | 12 ++++-------- .../expressions/path/GrIndexProperty.java | 2 +- .../arguments/GrArgumentLabelImpl.java | 6 ------ .../expressions/path/GrIndexPropertyImpl.java | 2 +- .../path/GrIndexPropertyReference.kt | 2 +- .../types/GrSafeCastExpressionImpl.java | 4 ++-- 11 files changed, 32 insertions(+), 63 deletions(-) rename plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/{resolve => psi/api}/GroovyPolyVariantReference.java (80%) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/GrReferenceElement.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/GrReferenceElement.java index d2e19cc8d50e..28a74e11984c 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/GrReferenceElement.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/GrReferenceElement.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,18 +16,17 @@ package org.jetbrains.plugins.groovy.lang.psi; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiPolyVariantReference; import com.intellij.psi.PsiType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult; +import org.jetbrains.plugins.groovy.lang.psi.api.GroovyPolyVariantReference; import org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeArgumentList; -import org.jetbrains.plugins.groovy.lang.psi.impl.PsiImplUtil; /** * @author ven */ -public interface GrReferenceElement extends GroovyPsiElement, PsiPolyVariantReference, GrQualifiedReference { +public interface GrReferenceElement extends GroovyPsiElement, GroovyPolyVariantReference, GrQualifiedReference { + @Override @Nullable String getReferenceName(); @@ -38,15 +37,6 @@ public interface GrReferenceElement extends GroovyPsiEleme return advancedResolve().getElement(); } - @NotNull - default GroovyResolveResult advancedResolve() { - return PsiImplUtil.extractUniqueResult(multiResolve(false)); - } - - @Override - @NotNull - GroovyResolveResult[] multiResolve(boolean incompleteCode); - @NotNull PsiType[] getTypeArguments(); diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/GroovyPolyVariantReference.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/GroovyPolyVariantReference.java similarity index 80% rename from plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/GroovyPolyVariantReference.java rename to plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/GroovyPolyVariantReference.java index 8fe3740006eb..deb7cb2fa289 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/GroovyPolyVariantReference.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/GroovyPolyVariantReference.java @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jetbrains.plugins.groovy.lang.resolve; +package org.jetbrains.plugins.groovy.lang.psi.api; import com.intellij.psi.PsiPolyVariantReference; import org.jetbrains.annotations.NotNull; -import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult; +import org.jetbrains.plugins.groovy.lang.psi.impl.PsiImplUtil; /** * Same as {@link PsiPolyVariantReference} but returns {@link GroovyResolveResult}. @@ -29,4 +29,9 @@ public interface GroovyPolyVariantReference extends PsiPolyVariantReference { @NotNull @Override GroovyResolveResult[] multiResolve(boolean incompleteCode); + + @NotNull + default GroovyResolveResult advancedResolve() { + return PsiImplUtil.extractUniqueResult(multiResolve(false)); + } } diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/arguments/GrArgumentLabel.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/arguments/GrArgumentLabel.java index 885042c40ebb..9d06b4a170ff 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/arguments/GrArgumentLabel.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/arguments/GrArgumentLabel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,30 +17,29 @@ package org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiPolyVariantReference; import com.intellij.psi.PsiType; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement; -import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult; +import org.jetbrains.plugins.groovy.lang.psi.api.GroovyPolyVariantReference; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression; /** * @author ilyas */ -public interface GrArgumentLabel extends GroovyPsiElement, PsiPolyVariantReference { +public interface GrArgumentLabel extends GroovyPsiElement, GroovyPolyVariantReference { GrArgumentLabel[] EMPTY_ARRAY = new GrArgumentLabel[0]; @NotNull PsiElement getNameElement(); - @Nullable /** - * returns expression which is put into parentheses. + * @return expression which is put into parentheses. */ + @Nullable GrExpression getExpression(); @Nullable @@ -55,11 +54,4 @@ public interface GrArgumentLabel extends GroovyPsiElement, PsiPolyVariantReferen PsiType getLabelType(); GrNamedArgument getNamedArgument(); - - @Override - @NotNull - GroovyResolveResult[] multiResolve(boolean incomplete); - - @NotNull - GroovyResolveResult advancedResolve(); } diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/GrOperatorExpression.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/GrOperatorExpression.java index 0854410cd381..7787f995bfa8 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/GrOperatorExpression.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/GrOperatorExpression.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,14 +16,13 @@ package org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiPolyVariantReference; import com.intellij.psi.PsiType; import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult; +import org.jetbrains.plugins.groovy.lang.psi.api.GroovyPolyVariantReference; -public interface GrOperatorExpression extends GrExpression, PsiPolyVariantReference { +public interface GrOperatorExpression extends GrExpression, GroovyPolyVariantReference { @Nullable PsiType getLeftType(); @@ -36,7 +35,4 @@ public interface GrOperatorExpression extends GrExpression, PsiPolyVariantRefere @NotNull IElementType getOperationTokenType(); - - @NotNull - GroovyResolveResult[] multiResolve(final boolean incompleteCode); } diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/GrSafeCastExpression.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/GrSafeCastExpression.java index 36ea0ff91741..59c1e7a89a43 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/GrSafeCastExpression.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/GrSafeCastExpression.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,16 +17,16 @@ package org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiPolyVariantReference; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult; +import org.jetbrains.plugins.groovy.lang.psi.api.GroovyPolyVariantReference; import org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement; /** * @author ven */ -public interface GrSafeCastExpression extends GrExpression, PsiPolyVariantReference { +public interface GrSafeCastExpression extends GrExpression, GroovyPolyVariantReference { + @Nullable GrTypeElement getCastTypeElement(); @@ -35,8 +35,4 @@ public interface GrSafeCastExpression extends GrExpression, PsiPolyVariantRefere @NotNull PsiElement getOperationToken(); - - @NotNull - @Override - GroovyResolveResult[] multiResolve(final boolean incompleteCode); } diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/GrUnaryExpression.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/GrUnaryExpression.java index ee4bc08ed674..68f92f37510b 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/GrUnaryExpression.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/GrUnaryExpression.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,16 +17,16 @@ package org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiPolyVariantReference; import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult; +import org.jetbrains.plugins.groovy.lang.psi.api.GroovyPolyVariantReference; /** * @author ilyas */ -public interface GrUnaryExpression extends GrExpression, PsiPolyVariantReference { +public interface GrUnaryExpression extends GrExpression, GroovyPolyVariantReference { + @NotNull IElementType getOperationTokenType(); @@ -36,9 +36,5 @@ public interface GrUnaryExpression extends GrExpression, PsiPolyVariantReference @Nullable GrExpression getOperand(); - @NotNull - @Override - GroovyResolveResult[] multiResolve(final boolean incompleteCode); - boolean isPostfix(); } diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/path/GrIndexProperty.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/path/GrIndexProperty.java index de2db7261b58..70a9b916871e 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/path/GrIndexProperty.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/api/statements/expressions/path/GrIndexProperty.java @@ -18,9 +18,9 @@ package org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.plugins.groovy.lang.psi.api.GroovyPolyVariantReference; import org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments.GrArgumentList; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression; -import org.jetbrains.plugins.groovy.lang.resolve.GroovyPolyVariantReference; public interface GrIndexProperty extends GrExpression { diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/arguments/GrArgumentLabelImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/arguments/GrArgumentLabelImpl.java index 1e4a2722edcc..52a56dcac9e7 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/arguments/GrArgumentLabelImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/arguments/GrArgumentLabelImpl.java @@ -217,12 +217,6 @@ public class GrArgumentLabelImpl extends GroovyPsiElementImpl implements GrArgum } } - @NotNull - @Override - public GroovyResolveResult advancedResolve() { - return PsiImplUtil.extractUniqueResult(multiResolve(false)); - } - @Override @NotNull public String getCanonicalText() { diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/path/GrIndexPropertyImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/path/GrIndexPropertyImpl.java index d2a2c988eaf9..36caedf0fa86 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/path/GrIndexPropertyImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/path/GrIndexPropertyImpl.java @@ -25,6 +25,7 @@ import com.intellij.psi.PsiType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.lang.psi.GroovyElementVisitor; +import org.jetbrains.plugins.groovy.lang.psi.api.GroovyPolyVariantReference; import org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments.GrArgumentList; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrIndexProperty; @@ -32,7 +33,6 @@ import org.jetbrains.plugins.groovy.lang.psi.dataFlow.types.TypeInferenceHelper; import org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.GrExpressionImpl; import org.jetbrains.plugins.groovy.lang.psi.util.GroovyIndexPropertyUtil; import org.jetbrains.plugins.groovy.lang.psi.util.GroovyLValueUtil; -import org.jetbrains.plugins.groovy.lang.resolve.GroovyPolyVariantReference; import org.jetbrains.plugins.groovy.lang.typing.GrTypeCalculator; /** diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/path/GrIndexPropertyReference.kt b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/path/GrIndexPropertyReference.kt index 5675a3644dfd..7e15a11b7b0a 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/path/GrIndexPropertyReference.kt +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/path/GrIndexPropertyReference.kt @@ -18,6 +18,7 @@ package org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions.path import com.intellij.openapi.util.TextRange import com.intellij.psi.PsiPolyVariantReferenceBase import com.intellij.psi.PsiType +import org.jetbrains.plugins.groovy.lang.psi.api.GroovyPolyVariantReference import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrAssignmentExpression import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrIndexProperty @@ -26,7 +27,6 @@ import org.jetbrains.plugins.groovy.lang.psi.impl.GrTupleType import org.jetbrains.plugins.groovy.lang.psi.util.getArgumentListType import org.jetbrains.plugins.groovy.lang.psi.util.isClassLiteral import org.jetbrains.plugins.groovy.lang.psi.util.isSimpleArrayAccess -import org.jetbrains.plugins.groovy.lang.resolve.GroovyPolyVariantReference import org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil class GrIndexPropertyReference(element: GrIndexPropertyImpl, val rhs: Boolean) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/types/GrSafeCastExpressionImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/types/GrSafeCastExpressionImpl.java index ba158bc4c38b..a1d48adbafc0 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/types/GrSafeCastExpressionImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/types/GrSafeCastExpressionImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -45,7 +45,7 @@ import java.util.HashMap; /** * @author ven */ -public class GrSafeCastExpressionImpl extends GrExpressionImpl implements GrSafeCastExpression, PsiPolyVariantReference { +public class GrSafeCastExpressionImpl extends GrExpressionImpl implements GrSafeCastExpression { private static final Function TYPE_CALCULATOR = (NullableFunction)cast -> {