mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[groovy] move resolver logic to GroovyReferenceBase
This commit is contained in:
+15
-4
@@ -4,10 +4,21 @@ package org.jetbrains.plugins.groovy.lang.psi.impl
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiPolyVariantReferenceBase
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.GroovyReference
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult
|
||||
import org.jetbrains.plugins.groovy.lang.psi.dataFlow.types.TypeInferenceHelper
|
||||
import org.jetbrains.plugins.groovy.lang.resolve.GroovyResolver
|
||||
|
||||
abstract class GroovyReferenceBase<T : PsiElement>(
|
||||
element: T
|
||||
) : PsiPolyVariantReferenceBase<T>(element), GroovyReference {
|
||||
abstract class GroovyReferenceBase<T : PsiElement>(element: T) : PsiPolyVariantReferenceBase<T>(element), GroovyReference {
|
||||
|
||||
override fun resolve(): PsiElement? = super<GroovyReference>.resolve()
|
||||
final override fun resolve(): PsiElement? = super<GroovyReference>.resolve()
|
||||
|
||||
final override fun resolve(incomplete: Boolean): Collection<GroovyResolveResult> {
|
||||
return TypeInferenceHelper.getCurrentContext().resolve(this, incomplete, Resolver)
|
||||
}
|
||||
|
||||
private object Resolver : GroovyResolver<GroovyReferenceBase<*>> {
|
||||
override fun resolve(ref: GroovyReferenceBase<*>, incomplete: Boolean) = ref.doResolve(incomplete)
|
||||
}
|
||||
|
||||
abstract fun doResolve(incomplete: Boolean): Collection<GroovyResolveResult>
|
||||
}
|
||||
|
||||
+3
-11
@@ -2,22 +2,14 @@
|
||||
package org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions
|
||||
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult
|
||||
import org.jetbrains.plugins.groovy.lang.psi.dataFlow.types.TypeInferenceHelper
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyReferenceBase
|
||||
import org.jetbrains.plugins.groovy.lang.resolve.GroovyResolver
|
||||
|
||||
class GrReferenceExpressionReference(
|
||||
private val ref: GrReferenceExpressionImpl,
|
||||
ref: GrReferenceExpressionImpl,
|
||||
private val forceRValue: Boolean
|
||||
) : GroovyReferenceBase<GrReferenceExpressionImpl>(ref) {
|
||||
|
||||
override fun resolve(incomplete: Boolean): Collection<GroovyResolveResult> {
|
||||
return TypeInferenceHelper.getCurrentContext().resolve(this, incomplete, Resolver)
|
||||
}
|
||||
|
||||
private object Resolver : GroovyResolver<GrReferenceExpressionReference> {
|
||||
override fun resolve(ref: GrReferenceExpressionReference, incomplete: Boolean): Collection<GroovyResolveResult> {
|
||||
return ref.ref.doPolyResolve(incomplete, ref.forceRValue)
|
||||
}
|
||||
override fun doResolve(incomplete: Boolean): Collection<GroovyResolveResult> {
|
||||
return element.doPolyResolve(incomplete, forceRValue)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-10
@@ -6,13 +6,11 @@ import com.intellij.psi.PsiType
|
||||
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
|
||||
import org.jetbrains.plugins.groovy.lang.psi.dataFlow.types.TypeInferenceHelper
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.GrTupleType
|
||||
import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyReferenceBase
|
||||
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.GroovyResolver
|
||||
import org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil
|
||||
|
||||
class GrIndexPropertyReference(element: GrIndexProperty, val rhs: Boolean) : GroovyReferenceBase<GrIndexProperty>(element) {
|
||||
@@ -30,14 +28,8 @@ class GrIndexPropertyReference(element: GrIndexProperty, val rhs: Boolean) : Gro
|
||||
return TextRange.from(rangeStart, 1)
|
||||
}
|
||||
|
||||
override fun resolve(incomplete: Boolean): Collection<GroovyResolveResult> {
|
||||
return TypeInferenceHelper.getCurrentContext().resolve(this, incomplete, Resolver)
|
||||
}
|
||||
|
||||
private object Resolver : GroovyResolver<GrIndexPropertyReference> {
|
||||
override fun resolve(ref: GrIndexPropertyReference, incomplete: Boolean): Collection<GroovyResolveResult> {
|
||||
return ref.element?.doMultiResolve(ref.rhs, incomplete) ?: emptyList()
|
||||
}
|
||||
override fun doResolve(incomplete: Boolean): Collection<GroovyResolveResult> {
|
||||
return element.doMultiResolve(rhs, incomplete) ?: emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user