Don't force getting body psi if null is predicted by stubs but allow it for resolve
We can't avoid loading AST in general, because there're no stubs for expression bodies.
This commit is contained in:
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.psi.psiUtil.KtPsiUtilKt;
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinFunctionStub;
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes;
|
||||
import org.jetbrains.kotlin.psi.typeRefHelpers.TypeRefHelpersKt;
|
||||
import org.jetbrains.kotlin.util.AstLoadingFilter;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -122,7 +123,14 @@ public class KtNamedFunction extends KtTypeParameterListOwnerStub<KotlinFunction
|
||||
@Override
|
||||
@Nullable
|
||||
public KtExpression getBodyExpression() {
|
||||
return findChildByClass(KtExpression.class);
|
||||
KotlinFunctionStub stub = getStub();
|
||||
if (stub != null && !stub.hasBody()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return AstLoadingFilter.forceAllowTreeLoading(this.getContainingFile(), () ->
|
||||
findChildByClass(KtExpression.class)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.lexer.KtTokens;
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinPropertyAccessorStub;
|
||||
import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes;
|
||||
import org.jetbrains.kotlin.util.AstLoadingFilter;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -86,7 +87,14 @@ public class KtPropertyAccessor extends KtDeclarationStub<KotlinPropertyAccessor
|
||||
@Nullable
|
||||
@Override
|
||||
public KtExpression getBodyExpression() {
|
||||
return findChildByClass(KtExpression.class);
|
||||
KotlinPropertyAccessorStub stub = getStub();
|
||||
if (stub != null && !stub.hasBody()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return AstLoadingFilter.forceAllowTreeLoading(this.getContainingFile(), () ->
|
||||
findChildByClass(KtExpression.class)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user