From ada9845b5ffdde2228798a0d38638a8121136df8 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Wed, 9 Apr 2014 16:17:43 +0400 Subject: [PATCH] JetProperty#getReceiverTypeRef() and getReturnTypeRef() by stub --- .../jetbrains/jet/lang/psi/JetProperty.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetProperty.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetProperty.java index e237080a440..ff8fc332cd2 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetProperty.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetProperty.java @@ -19,6 +19,7 @@ package org.jetbrains.jet.lang.psi; import com.intellij.lang.ASTNode; import com.intellij.navigation.ItemPresentation; import com.intellij.navigation.ItemPresentationProviders; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.PsiElement; import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.TokenSet; @@ -38,6 +39,9 @@ import static org.jetbrains.jet.lexer.JetTokens.*; public class JetProperty extends JetTypeParameterListOwnerStub implements JetVariableDeclaration, JetCallableDeclaration { + + private static final Logger LOG = Logger.getInstance(JetProperty.class); + public JetProperty(@NotNull ASTNode node) { super(node); } @@ -84,6 +88,20 @@ public class JetProperty extends JetTypeParameterListOwnerStub typeReferences = getStubOrPsiChildrenAsList(JetStubElementTypes.TYPE_REFERENCE); + int returnTypeRefPositionInPsi = stub.hasReceiverTypeRef() ? 1 : 0; + if (typeReferences.size() <= returnTypeRefPositionInPsi) { + LOG.error("Invalid stub structure built for property:\n" + getText()); + return null; + } + return typeReferences.get(returnTypeRefPositionInPsi); + } + } + return getTypeRefByTree(); + } + + @Nullable + private JetTypeReference getTypeRefByTree() { ASTNode node = getNode().getFirstChildNode(); boolean passedColon = false; while (node != null) {