From 673a67b97b2d48931a8c4cede28fe1f6a2f48b1f Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Mon, 10 Jan 2011 01:47:20 +0300 Subject: [PATCH] class object, constructor nodes --- idea/src/org/jetbrains/jet/JetNodeTypes.java | 4 +-- .../jet/lang/psi/JetClassObject.java | 5 +++ .../jet/lang/psi/JetConstructor.java | 26 ++++++++++++++++ .../jet/lang/psi/JetDelegationSpecifier.java | 2 ++ .../jet/lang/psi/JetDelegatorToThisCall.java | 31 +++++++++++++++++++ .../jet/lang/psi/JetInitializerList.java | 26 ++++++++++++++++ .../jetbrains/jet/lang/psi/JetVisitor.java | 8 +++++ 7 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetDelegatorToThisCall.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetInitializerList.java diff --git a/idea/src/org/jetbrains/jet/JetNodeTypes.java b/idea/src/org/jetbrains/jet/JetNodeTypes.java index e989466466c..4f007d4f90d 100644 --- a/idea/src/org/jetbrains/jet/JetNodeTypes.java +++ b/idea/src/org/jetbrains/jet/JetNodeTypes.java @@ -57,8 +57,8 @@ public interface JetNodeTypes { // TODO: review JetNodeType RECEIVER_TYPE_ATTRIBUTES = new JetNodeType("RECEIVER_TYPE_ATTRIBUTES"); JetNodeType PROPERTY_ACCESSOR = new JetNodeType("PROPERTY_ACCESSOR"); - JetNodeType INITIALIZER_LIST = new JetNodeType("INITIALIZER_LIST"); - JetNodeType THIS_CALL = new JetNodeType("THIS_CALL"); + JetNodeType INITIALIZER_LIST = new JetNodeType("INITIALIZER_LIST", JetInitializerList.class); + JetNodeType THIS_CALL = new JetNodeType("THIS_CALL", JetDelegatorToThisCall.class); JetNodeType TYPE_CONSTRAINT_LIST = new JetNodeType("TYPE_CONSTRAINT_LIST"); JetNodeType TYPE_CONSTRAINT = new JetNodeType("TYPE_CONSTRAINT"); diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetClassObject.java b/idea/src/org/jetbrains/jet/lang/psi/JetClassObject.java index c24b46b3b8c..14c87f964c0 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetClassObject.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetClassObject.java @@ -2,6 +2,7 @@ package org.jetbrains.jet.lang.psi; import com.intellij.lang.ASTNode; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.JetNodeTypes; /** * @author max @@ -16,4 +17,8 @@ public class JetClassObject extends JetDeclaration { visitor.visitClassObject(this); } + public JetObjectLiteralExpression getObject() { + return (JetObjectLiteralExpression) findChildByType(JetNodeTypes.OBJECT_LITERAL); + } + } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetConstructor.java b/idea/src/org/jetbrains/jet/lang/psi/JetConstructor.java index b1011afe66c..9e35c077c6f 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetConstructor.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetConstructor.java @@ -2,6 +2,11 @@ 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; + +import java.util.Collections; +import java.util.List; /** * @author max @@ -16,4 +21,25 @@ public class JetConstructor extends JetDeclaration { visitor.visitConstructor(this); } + @Nullable + public JetParameterList getParameterList() { + return (JetParameterList) findChildByType(JetNodeTypes.VALUE_PARAMETER_LIST); + } + + @NotNull + public List getParameters() { + JetParameterList list = getParameterList(); + return list != null ? list.getParameters() : Collections.emptyList(); + } + + @Nullable + public JetInitializerList getInitializerList() { + return (JetInitializerList) findChildByType(JetNodeTypes.INITIALIZER_LIST); + } + + @NotNull + public List getInitializers() { + JetInitializerList list = getInitializerList(); + return list != null ? list.getInitializers() : Collections.emptyList(); + } } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifier.java b/idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifier.java index 0e457d26def..c778cd70e68 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifier.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifier.java @@ -2,6 +2,7 @@ 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; /** @@ -17,6 +18,7 @@ public class JetDelegationSpecifier extends JetElement{ visitor.visitDelegationSpecifier(this); } + @Nullable public JetTypeReference getTypeReference() { return (JetTypeReference) findChildByType(JetNodeTypes.TYPE_REFERENCE); } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetDelegatorToThisCall.java b/idea/src/org/jetbrains/jet/lang/psi/JetDelegatorToThisCall.java new file mode 100644 index 00000000000..ed462315bf8 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetDelegatorToThisCall.java @@ -0,0 +1,31 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.JetNodeTypes; + +import java.util.Collections; +import java.util.List; + +/** + * @author max + */ +public class JetDelegatorToThisCall extends JetDelegationSpecifier { + public JetDelegatorToThisCall(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(JetVisitor visitor) { + visitor.visitDelegationToThisCall(this); + } + + public JetArgumentList getArgumentList() { + return (JetArgumentList) findChildByType(JetNodeTypes.VALUE_ARGUMENT_LIST); + } + + public List getArguments() { + JetArgumentList list = getArgumentList(); + return list != null ? list.getArguments() : Collections.emptyList(); + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetInitializerList.java b/idea/src/org/jetbrains/jet/lang/psi/JetInitializerList.java new file mode 100644 index 00000000000..0ea640057bf --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetInitializerList.java @@ -0,0 +1,26 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import com.intellij.psi.util.PsiTreeUtil; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +/** + * @author max + */ +public class JetInitializerList extends JetElement { + public JetInitializerList(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(JetVisitor visitor) { + visitor.visitInitializerList(this); + } + + @NotNull + public List getInitializers() { + return PsiTreeUtil.getChildrenOfTypeAsList(this, JetDelegationSpecifier.class); + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java b/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java index e13017f8622..a260c1b2b41 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java @@ -122,6 +122,10 @@ public class JetVisitor extends PsiElementVisitor { visitDelegationSpecifier(specifier); } + public void visitDelegationToThisCall(JetDelegatorToThisCall thisCall) { + visitDelegationSpecifier(thisCall); + } + public void visitTypeReference(JetTypeReference typeReference) { visitJetElement(typeReference); } @@ -269,4 +273,8 @@ public class JetVisitor extends PsiElementVisitor { public void visitParenthesizedExpression(JetParenthesizedExpression expression) { visitExpression(expression); } + + public void visitInitializerList(JetInitializerList list) { + visitJetElement(list); + } }