mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[groovy] IDEA-202693 Support resolve locals, delegates and owner in lambda expressions
This commit is contained in:
+1
-8
@@ -5,16 +5,12 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiType;
|
||||
import com.intellij.psi.ResolveState;
|
||||
import com.intellij.psi.scope.PsiScopeProcessor;
|
||||
import com.intellij.psi.util.CachedValueProvider;
|
||||
import com.intellij.psi.util.CachedValuesManager;
|
||||
import com.intellij.psi.util.PsiModificationTracker;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrParameterListOwner;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameter;
|
||||
|
||||
import static org.jetbrains.plugins.groovy.lang.psi.impl.FunctionalExpressionsKt.doGetOwnerType;
|
||||
import static org.jetbrains.plugins.groovy.lang.psi.impl.FunctionalExpressionsKt.processOwnerAndDelegate;
|
||||
|
||||
public interface GrFunctionalExpression extends GrExpression, GrParameterListOwner {
|
||||
@@ -32,8 +28,5 @@ public interface GrFunctionalExpression extends GrExpression, GrParameterListOwn
|
||||
}
|
||||
|
||||
@Nullable
|
||||
default PsiType getOwnerType() {
|
||||
return CachedValuesManager
|
||||
.getCachedValue(this, () -> CachedValueProvider.Result.create(doGetOwnerType(this), PsiModificationTracker.MODIFICATION_COUNT));
|
||||
}
|
||||
PsiType getOwnerType();
|
||||
}
|
||||
|
||||
+10
@@ -3,8 +3,12 @@ package org.jetbrains.plugins.groovy.lang.psi.impl
|
||||
|
||||
import com.intellij.lang.ASTNode
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiType
|
||||
import com.intellij.psi.ResolveState
|
||||
import com.intellij.psi.scope.PsiScopeProcessor
|
||||
import com.intellij.psi.util.CachedValueProvider
|
||||
import com.intellij.psi.util.CachedValuesManager
|
||||
import com.intellij.psi.util.PsiModificationTracker
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GroovyElementVisitor
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrCodeBlock
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression
|
||||
@@ -47,6 +51,12 @@ class GrLambdaExpressionImpl(node: ASTNode): GrExpressionImpl(node), GrLambdaExp
|
||||
return parameters
|
||||
}
|
||||
|
||||
override fun getOwnerType(): PsiType? {
|
||||
return CachedValuesManager.getCachedValue(this) {
|
||||
CachedValueProvider.Result.create(doGetOwnerType(), PsiModificationTracker.MODIFICATION_COUNT)
|
||||
}
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "Lambda expression"
|
||||
}
|
||||
|
||||
+9
@@ -7,6 +7,9 @@ import com.intellij.psi.PsiType;
|
||||
import com.intellij.psi.ResolveState;
|
||||
import com.intellij.psi.scope.PsiScopeProcessor;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.util.CachedValueProvider;
|
||||
import com.intellij.psi.util.CachedValuesManager;
|
||||
import com.intellij.psi.util.PsiModificationTracker;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.NullableFunction;
|
||||
@@ -159,6 +162,12 @@ public class GrClosableBlockImpl extends GrBlockImpl implements GrClosableBlock
|
||||
);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public PsiType getOwnerType() {
|
||||
return CachedValuesManager.getCachedValue(this, () -> CachedValueProvider.Result.create(doGetOwnerType(this), PsiModificationTracker.MODIFICATION_COUNT));
|
||||
}
|
||||
|
||||
@Override
|
||||
public GrExpression replaceWithExpression(@NotNull GrExpression newExpr, boolean removeUnnecessaryParentheses) {
|
||||
return PsiImplUtil.replaceExpression(this, newExpr, removeUnnecessaryParentheses);
|
||||
|
||||
Reference in New Issue
Block a user