JetPropertyAccessor#isGetter(), isSetter(), hasBody(), getReturnTypeReference() by stub

This commit is contained in:
Pavel V. Talanov
2014-04-09 18:00:05 +04:00
parent b9aaab12d4
commit 5ad1fac2b2
@@ -21,7 +21,6 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.JetNodeTypes;
import org.jetbrains.jet.lang.psi.stubs.PsiJetPropertyAccessorStub; import org.jetbrains.jet.lang.psi.stubs.PsiJetPropertyAccessorStub;
import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes; import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes;
import org.jetbrains.jet.lexer.JetTokens; import org.jetbrains.jet.lexer.JetTokens;
@@ -45,16 +44,24 @@ public class JetPropertyAccessor extends JetDeclarationStub<PsiJetPropertyAccess
} }
public boolean isSetter() { public boolean isSetter() {
PsiJetPropertyAccessorStub stub = getStub();
if (stub != null) {
return !stub.isGetter();
}
return findChildByType(JetTokens.SET_KEYWORD) != null; return findChildByType(JetTokens.SET_KEYWORD) != null;
} }
public boolean isGetter() { public boolean isGetter() {
PsiJetPropertyAccessorStub stub = getStub();
if (stub != null) {
return stub.isGetter();
}
return findChildByType(JetTokens.GET_KEYWORD) != null; return findChildByType(JetTokens.GET_KEYWORD) != null;
} }
@Nullable @Nullable
public JetParameter getParameter() { public JetParameter getParameter() {
JetParameterList parameterList = (JetParameterList) findChildByType(JetNodeTypes.VALUE_PARAMETER_LIST); JetParameterList parameterList = getStubOrPsiChild(JetStubElementTypes.VALUE_PARAMETER_LIST);
if (parameterList == null) return null; if (parameterList == null) return null;
List<JetParameter> parameters = parameterList.getParameters(); List<JetParameter> parameters = parameterList.getParameters();
if (parameters.isEmpty()) return null; if (parameters.isEmpty()) return null;
@@ -84,6 +91,10 @@ public class JetPropertyAccessor extends JetDeclarationStub<PsiJetPropertyAccess
@Override @Override
public boolean hasBody() { public boolean hasBody() {
PsiJetPropertyAccessorStub stub = getStub();
if (stub != null) {
return stub.hasBody();
}
return getBodyExpression() != null; return getBodyExpression() != null;
} }
@@ -105,7 +116,7 @@ public class JetPropertyAccessor extends JetDeclarationStub<PsiJetPropertyAccess
@Nullable @Nullable
public JetTypeReference getReturnTypeReference() { public JetTypeReference getReturnTypeReference() {
return findChildByClass(JetTypeReference.class); return getStubOrPsiChild(JetStubElementTypes.TYPE_REFERENCE);
} }
@NotNull @NotNull