From 3c302d81281bce6bfc11657c2ddc6806cdff00ce Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Thu, 6 Jan 2011 18:20:35 +0300 Subject: [PATCH] Delegation specifiers, initial --- idea/src/org/jetbrains/jet/JetNodeTypes.java | 14 ++++---- .../jetbrains/jet/lang/psi/JetArgument.java | 17 ++++++++++ .../jet/lang/psi/JetArgumentList.java | 25 +++++++++++++++ .../jet/lang/psi/JetDelegationSpecifier.java | 23 +++++++++++++ .../lang/psi/JetDelegationSpecifierList.java | 18 +++++++++++ .../JetDelegatorByExpressionSpecifier.java | 18 +++++++++++ .../jet/lang/psi/JetDelegatorToSuperCall.java | 31 ++++++++++++++++++ .../lang/psi/JetDelegatorToSuperClass.java | 18 +++++++++++ .../jet/lang/psi/JetTypeReference.java | 18 +++++++++++ .../jetbrains/jet/lang/psi/JetVisitor.java | 32 +++++++++++++++++++ 10 files changed, 207 insertions(+), 7 deletions(-) create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetArgument.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetArgumentList.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifier.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifierList.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetDelegatorByExpressionSpecifier.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetDelegatorToSuperCall.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetDelegatorToSuperClass.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetTypeReference.java diff --git a/idea/src/org/jetbrains/jet/JetNodeTypes.java b/idea/src/org/jetbrains/jet/JetNodeTypes.java index 21f1d716202..a6a5ef01979 100644 --- a/idea/src/org/jetbrains/jet/JetNodeTypes.java +++ b/idea/src/org/jetbrains/jet/JetNodeTypes.java @@ -26,10 +26,10 @@ public interface JetNodeTypes { JetNodeType TYPE_PARAMETER_LIST = new JetNodeType("TYPE_PARAMETER_LIST", JetTypeParameterList.class); JetNodeType TYPE_PARAMETER = new JetNodeType("TYPE_PARAMETER", JetTypeParameter.class); - JetNodeType DELEGATION_SPECIFIER_LIST = new JetNodeType("DELEGATION_SPECIFIER_LIST"); - JetNodeType DELEGATOR_BY = new JetNodeType("DELEGATOR_BY"); - JetNodeType DELEGATOR_SUPER_CALL = new JetNodeType("DELEGATOR_SUPER_CALL"); - JetNodeType DELEGATOR_SUPER_CLASS = new JetNodeType("DELEGATOR_SUPER_CLASS"); + JetNodeType DELEGATION_SPECIFIER_LIST = new JetNodeType("DELEGATION_SPECIFIER_LIST", JetDelegationSpecifierList.class); + JetNodeType DELEGATOR_BY = new JetNodeType("DELEGATOR_BY", JetDelegatorByExpressionSpecifier.class); + JetNodeType DELEGATOR_SUPER_CALL = new JetNodeType("DELEGATOR_SUPER_CALL", JetDelegatorToSuperCall.class); + JetNodeType DELEGATOR_SUPER_CLASS = new JetNodeType("DELEGATOR_SUPER_CLASS", JetDelegatorToSuperClass.class); JetNodeType VALUE_PARAMETER_LIST = new JetNodeType("VALUE_PARAMETER_LIST", JetParameterList.class); JetNodeType VALUE_PARAMETER = new JetNodeType("VALUE_PARAMETER", JetParameter.class); // TODO: Not sure if we really need separate PSI nodes for the class parameters? @@ -45,9 +45,9 @@ public interface JetNodeTypes { JetNodeType ATTRIBUTE = new JetNodeType("ATTRIBUTE", JetAttribute.class); JetNodeType USER_TYPE = new JetNodeType("USER_TYPE"); JetNodeType TYPE_ARGUMENT_LIST = new JetNodeType("TYPE_ARGUMENT_LIST"); - JetNodeType VALUE_ARGUMENT_LIST = new JetNodeType("VALUE_ARGUMENT_LIST"); - JetNodeType VALUE_ARGUMENT = new JetNodeType("VALUE_ARGUMENT"); - JetNodeType TYPE_REFERENCE = new JetNodeType("TYPE_REFERENCE"); + JetNodeType VALUE_ARGUMENT_LIST = new JetNodeType("VALUE_ARGUMENT_LIST", JetArgumentList.class); + JetNodeType VALUE_ARGUMENT = new JetNodeType("VALUE_ARGUMENT", JetArgument.class); + JetNodeType TYPE_REFERENCE = new JetNodeType("TYPE_REFERENCE", JetTypeReference.class); JetNodeType LABELED_TUPLE_ENTRY = new JetNodeType("LABELED_TUPLE_ENTRY"); JetNodeType TUPLE_TYPE = new JetNodeType("TUPLE_TYPE"); JetNodeType FUNCTION_TYPE = new JetNodeType("FUNCTION_TYPE"); diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetArgument.java b/idea/src/org/jetbrains/jet/lang/psi/JetArgument.java new file mode 100644 index 00000000000..57c19f3f10d --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetArgument.java @@ -0,0 +1,17 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; + +/** + * @author max + */ +public class JetArgument extends JetElement { + public JetArgument(@NotNull ASTNode node) { + super(node); + } + + public void accept(JetVisitor visitor) { + visitor.visitArgument(this); + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetArgumentList.java b/idea/src/org/jetbrains/jet/lang/psi/JetArgumentList.java new file mode 100644 index 00000000000..dc73602d910 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetArgumentList.java @@ -0,0 +1,25 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.JetNodeTypes; + +import java.util.List; + +/** + * @author max + */ +public class JetArgumentList extends JetElement { + public JetArgumentList(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(JetVisitor visitor) { + visitor.visitArgumentList(this); + } + + public List getArguments() { + return findChildrenByType(JetNodeTypes.VALUE_ARGUMENT); + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifier.java b/idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifier.java new file mode 100644 index 00000000000..0e457d26def --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifier.java @@ -0,0 +1,23 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.JetNodeTypes; + +/** + * @author max + */ +public class JetDelegationSpecifier extends JetElement{ + public JetDelegationSpecifier(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(JetVisitor visitor) { + visitor.visitDelegationSpecifier(this); + } + + public JetTypeReference getTypeReference() { + return (JetTypeReference) findChildByType(JetNodeTypes.TYPE_REFERENCE); + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifierList.java b/idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifierList.java new file mode 100644 index 00000000000..b86e19bf35a --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetDelegationSpecifierList.java @@ -0,0 +1,18 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; + +/** + * @author max + */ +public class JetDelegationSpecifierList extends JetElement { + public JetDelegationSpecifierList(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(JetVisitor visitor) { + visitor.visitDelegationSpecifierList(this); + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetDelegatorByExpressionSpecifier.java b/idea/src/org/jetbrains/jet/lang/psi/JetDelegatorByExpressionSpecifier.java new file mode 100644 index 00000000000..f6ae3038ba3 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetDelegatorByExpressionSpecifier.java @@ -0,0 +1,18 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; + +/** + * @author max + */ +public class JetDelegatorByExpressionSpecifier extends JetDelegationSpecifier { + public JetDelegatorByExpressionSpecifier(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(JetVisitor visitor) { + visitor.visitDelegationByExpressionSpecifier(this); + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetDelegatorToSuperCall.java b/idea/src/org/jetbrains/jet/lang/psi/JetDelegatorToSuperCall.java new file mode 100644 index 00000000000..436984b9478 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetDelegatorToSuperCall.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 JetDelegatorToSuperCall extends JetDelegationSpecifier { + public JetDelegatorToSuperCall(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(JetVisitor visitor) { + visitor.visitDelegationToSuperCallSpecifier(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/JetDelegatorToSuperClass.java b/idea/src/org/jetbrains/jet/lang/psi/JetDelegatorToSuperClass.java new file mode 100644 index 00000000000..3977f6594e7 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetDelegatorToSuperClass.java @@ -0,0 +1,18 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; + +/** + * @author max + */ +public class JetDelegatorToSuperClass extends JetDelegationSpecifier { + public JetDelegatorToSuperClass(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(JetVisitor visitor) { + visitor.visitDelegationToSuperClassSpecifier(this); + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetTypeReference.java b/idea/src/org/jetbrains/jet/lang/psi/JetTypeReference.java new file mode 100644 index 00000000000..63f5e70ab54 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetTypeReference.java @@ -0,0 +1,18 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import org.jetbrains.annotations.NotNull; + +/** + * @author max + */ +public class JetTypeReference extends JetElement { + public JetTypeReference(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(JetVisitor visitor) { + visitor.visitTypeReference(this); + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java b/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java index c08820d465d..bf932896ab8 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java @@ -97,4 +97,36 @@ public class JetVisitor extends PsiElementVisitor { public void visitParameter(JetParameter parameter) { visitDeclaration(parameter); } + + public void visitDelegationSpecifierList(JetDelegationSpecifierList list) { + visitJetElement(list); + } + + public void visitDelegationSpecifier(JetDelegationSpecifier specifier) { + visitJetElement(specifier); + } + + public void visitDelegationByExpressionSpecifier(JetDelegatorByExpressionSpecifier specifier) { + visitDelegationSpecifier(specifier); + } + + public void visitDelegationToSuperCallSpecifier(JetDelegatorToSuperCall call) { + visitDelegationSpecifier(call); + } + + public void visitDelegationToSuperClassSpecifier(JetDelegatorToSuperClass specifier) { + visitDelegationSpecifier(specifier); + } + + public void visitTypeReference(JetTypeReference typeReference) { + visitJetElement(typeReference); + } + + public void visitArgumentList(JetArgumentList list) { + visitJetElement(list); + } + + public void visitArgument(JetArgument argument) { + visitJetElement(argument); + } }