From 2c5753767f84aa71a912927018a7d90ce6c7e6fe Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Fri, 7 Jan 2011 02:11:13 +0300 Subject: [PATCH] typereferences --- .../jetbrains/jet/lang/psi/JetParameter.java | 7 ++++++ .../jetbrains/jet/lang/psi/JetProperty.java | 22 +++++++++++++++++++ .../jetbrains/jet/lang/psi/JetTypedef.java | 7 ++++++ 3 files changed, 36 insertions(+) diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetParameter.java b/idea/src/org/jetbrains/jet/lang/psi/JetParameter.java index e735aa45d22..be0fd9357e6 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetParameter.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetParameter.java @@ -2,6 +2,8 @@ package org.jetbrains.jet.lang.psi; import com.intellij.lang.ASTNode; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.JetNodeTypes; /** * @author max @@ -15,4 +17,9 @@ public class JetParameter extends JetNamedDeclaration { public void accept(JetVisitor visitor) { visitor.visitParameter(this); } + + @Nullable + public JetTypeReference getTypeReference() { + return (JetTypeReference) findChildByType(JetNodeTypes.TYPE_REFERENCE); + } } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetProperty.java b/idea/src/org/jetbrains/jet/lang/psi/JetProperty.java index da882202583..a1c8259a886 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetProperty.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetProperty.java @@ -1,7 +1,11 @@ package org.jetbrains.jet.lang.psi; import com.intellij.lang.ASTNode; +import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.JetNodeTypes; +import org.jetbrains.jet.lexer.JetTokens; /** * @author max @@ -15,4 +19,22 @@ public class JetProperty extends JetNamedDeclaration { public void accept(@NotNull JetVisitor visitor) { visitor.visitProperty(this); } + + @Nullable + public JetTypeReference getTypeReference() { + ASTNode node = getNode().getFirstChildNode(); + boolean passedColon = false; + while (node != null) { + IElementType tt = node.getElementType(); + if (tt == JetTokens.COLON) { + passedColon = true; + } + else if (tt == JetNodeTypes.TYPE_REFERENCE && passedColon) { + return (JetTypeReference) node.getPsi(); + } + node = node.getTreeNext(); + } + + return null; + } } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetTypedef.java b/idea/src/org/jetbrains/jet/lang/psi/JetTypedef.java index 4f9e9625490..9f352fb4b9b 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetTypedef.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetTypedef.java @@ -2,6 +2,8 @@ package org.jetbrains.jet.lang.psi; import com.intellij.lang.ASTNode; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.JetNodeTypes; /** * @author max @@ -15,4 +17,9 @@ public class JetTypedef extends JetTypeParameterListOwner { public void accept(@NotNull JetVisitor visitor) { visitor.visitTypedef(this); } + + @Nullable + public JetTypeReference getTypeReference() { + return (JetTypeReference) findChildByType(JetNodeTypes.TYPE_REFERENCE); + } }