Re-implement getBodyBlockExpression() in stubbed elements

Avoid delegation to getBodyExpression() to monitor AST loading abuses.
This commit is contained in:
Nikolay Krasko
2018-11-08 16:55:12 +03:00
parent 2284028bbe
commit 9dab32f67d
2 changed files with 32 additions and 0 deletions
@@ -133,6 +133,22 @@ public class KtNamedFunction extends KtTypeParameterListOwnerStub<KotlinFunction
);
}
@Nullable
@Override
public KtBlockExpression getBodyBlockExpression() {
KotlinFunctionStub stub = getStub();
if (stub != null && !(stub.hasBlockBody() && stub.hasBody())) {
return null;
}
KtExpression bodyExpression = findChildByClass(KtExpression.class);
if (bodyExpression instanceof KtBlockExpression) {
return (KtBlockExpression) bodyExpression;
}
return null;
}
@Override
public boolean hasBody() {
KotlinFunctionStub stub = getStub();
@@ -97,6 +97,22 @@ public class KtPropertyAccessor extends KtDeclarationStub<KotlinPropertyAccessor
);
}
@Nullable
@Override
public KtBlockExpression getBodyBlockExpression() {
KotlinPropertyAccessorStub stub = getStub();
if (stub != null && !(stub.hasBlockBody() && stub.hasBody())) {
return null;
}
KtExpression bodyExpression = findChildByClass(KtExpression.class);
if (bodyExpression instanceof KtBlockExpression) {
return (KtBlockExpression) bodyExpression;
}
return null;
}
@Override
public boolean hasBlockBody() {
KotlinPropertyAccessorStub stub = getStub();