type parameter list & owners

This commit is contained in:
Maxim Shafirov
2011-01-04 18:05:45 +03:00
parent c59a4b512f
commit a585c87219
11 changed files with 142 additions and 9 deletions
+5 -5
View File
@@ -22,13 +22,14 @@ public interface JetNodeTypes {
JetNodeType CLASS_OBJECT = new JetNodeType("CLASS_OBJECT", JetClassObject.class); JetNodeType CLASS_OBJECT = new JetNodeType("CLASS_OBJECT", JetClassObject.class);
JetNodeType CONSTRUCTOR = new JetNodeType("CONSTRUCTOR", JetConstructor.class); JetNodeType CONSTRUCTOR = new JetNodeType("CONSTRUCTOR", JetConstructor.class);
JetNodeType ENUM_ENTRY = new JetNodeType("ENUM_ENTRY", JetEnumEntry.class);
TokenSet DECLARATIONS = TokenSet.create( TokenSet DECLARATIONS = TokenSet.create(
NAMESPACE, CLASS, PROPERTY, FUN, EXTENSION, NAMESPACE, CLASS, PROPERTY, FUN, EXTENSION,
TYPEDEF, DECOMPOSER, CLASS_OBJECT, CONSTRUCTOR); TYPEDEF, DECOMPOSER, CLASS_OBJECT, CONSTRUCTOR, ENUM_ENTRY);
JetNodeType TYPE_PARAMETER_LIST = new JetNodeType("TYPE_PARAMETER_LIST"); JetNodeType TYPE_PARAMETER_LIST = new JetNodeType("TYPE_PARAMETER_LIST", JetTypeParameterList.class);
JetNodeType TYPE_PARAMETER = new JetNodeType("TYPE_PARAMETER"); JetNodeType TYPE_PARAMETER = new JetNodeType("TYPE_PARAMETER", JetTypeParameter.class);
JetNodeType PRIMARY_CONSTRUCTOR_PARAMETERS_LIST = new JetNodeType("PRIMARY_CONSTRUCTOR_PARAMETERS_LIST"); JetNodeType PRIMARY_CONSTRUCTOR_PARAMETERS_LIST = new JetNodeType("PRIMARY_CONSTRUCTOR_PARAMETERS_LIST");
JetNodeType PRIMARY_CONSTRUCTOR_PARAMETER = new JetNodeType("PRIMARY_CONSTRUCTOR_PARAMETER"); JetNodeType PRIMARY_CONSTRUCTOR_PARAMETER = new JetNodeType("PRIMARY_CONSTRUCTOR_PARAMETER");
JetNodeType DELEGATION_SPECIFIER_LIST = new JetNodeType("DELEGATION_SPECIFIER_LIST"); JetNodeType DELEGATION_SPECIFIER_LIST = new JetNodeType("DELEGATION_SPECIFIER_LIST");
@@ -41,7 +42,7 @@ public interface JetNodeTypes {
JetNodeType CLASS_BODY = new JetNodeType("CLASS_BODY", JetClassBody.class); JetNodeType CLASS_BODY = new JetNodeType("CLASS_BODY", JetClassBody.class);
JetNodeType IMPORT_DIRECTIVE = new JetNodeType("IMPORT_DIRECTIVE", JetImportDirective.class); JetNodeType IMPORT_DIRECTIVE = new JetNodeType("IMPORT_DIRECTIVE", JetImportDirective.class);
JetNodeType IMPORTED = new JetNodeType("IMPORTED"); JetNodeType IMPORTED = new JetNodeType("IMPORTED");
JetNodeType NAMESPACE_BODY = new JetNodeType("NAMESPACE_BODY"); JetNodeType NAMESPACE_BODY = new JetNodeType("NAMESPACE_BODY", JetNamespaceBody.class);
JetNodeType MODIFIER_LIST = new JetNodeType("MODIFIER_LIST", JetModifierList.class); JetNodeType MODIFIER_LIST = new JetNodeType("MODIFIER_LIST", JetModifierList.class);
JetNodeType ATTRIBUTE_ANNOTATION = new JetNodeType("ATTRIBUTE_ANNOTATION", JetAttributeAnnotation.class); JetNodeType ATTRIBUTE_ANNOTATION = new JetNodeType("ATTRIBUTE_ANNOTATION", JetAttributeAnnotation.class);
JetNodeType ATTRIBUTE = new JetNodeType("ATTRIBUTE", JetAttribute.class); JetNodeType ATTRIBUTE = new JetNodeType("ATTRIBUTE", JetAttribute.class);
@@ -63,7 +64,6 @@ public interface JetNodeTypes {
JetNodeType BLOCK = new JetNodeType("BLOCK"); JetNodeType BLOCK = new JetNodeType("BLOCK");
JetNodeType TYPE_CONSTRAINT_LIST = new JetNodeType("TYPE_CONSTRAINT_LIST"); JetNodeType TYPE_CONSTRAINT_LIST = new JetNodeType("TYPE_CONSTRAINT_LIST");
JetNodeType TYPE_CONSTRAINT = new JetNodeType("TYPE_CONSTRAINT"); JetNodeType TYPE_CONSTRAINT = new JetNodeType("TYPE_CONSTRAINT");
JetNodeType ENUM_ENTRY = new JetNodeType("ENUM_ENTRY");
JetNodeType NULL = new JetNodeType("NULL"); JetNodeType NULL = new JetNodeType("NULL");
JetNodeType BOOLEAN_CONSTANT = new JetNodeType("BOOLEAN_CONSTANT"); JetNodeType BOOLEAN_CONSTANT = new JetNodeType("BOOLEAN_CONSTANT");
JetNodeType FLOAT_CONSTANT = new JetNodeType("FLOAT_CONSTANT"); JetNodeType FLOAT_CONSTANT = new JetNodeType("FLOAT_CONSTANT");
@@ -2,6 +2,7 @@ package org.jetbrains.jet.lang.psi;
import com.intellij.lang.ASTNode; import com.intellij.lang.ASTNode;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.JetNodeTypes; import org.jetbrains.jet.JetNodeTypes;
import java.util.Collections; import java.util.Collections;
@@ -10,7 +11,7 @@ import java.util.List;
/** /**
* @author max * @author max
*/ */
public class JetClass extends JetNamedDeclaration{ public class JetClass extends JetTypeParameterListOwner {
public JetClass(@NotNull ASTNode node) { public JetClass(@NotNull ASTNode node) {
super(node); super(node);
} }
@@ -0,0 +1,18 @@
package org.jetbrains.jet.lang.psi;
import com.intellij.lang.ASTNode;
import org.jetbrains.annotations.NotNull;
/**
* @author max
*/
public class JetEnumEntry extends JetClass {
public JetEnumEntry(@NotNull ASTNode node) {
super(node);
}
@Override
public void accept(@NotNull JetVisitor visitor) {
visitor.visitEnumEntry(this);
}
}
@@ -10,7 +10,7 @@ import java.util.List;
/** /**
* @author max * @author max
*/ */
public class JetExtension extends JetNamedDeclaration { public class JetExtension extends JetTypeParameterListOwner {
public JetExtension(@NotNull ASTNode node) { public JetExtension(@NotNull ASTNode node) {
super(node); super(node);
} }
@@ -6,7 +6,7 @@ import org.jetbrains.annotations.NotNull;
/** /**
* @author max * @author max
*/ */
public class JetFunction extends JetNamedDeclaration { public class JetFunction extends JetTypeParameterListOwner {
public JetFunction(@NotNull ASTNode node) { public JetFunction(@NotNull ASTNode node) {
super(node); super(node);
} }
@@ -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 JetNamespaceBody extends JetElement {
public JetNamespaceBody(@NotNull ASTNode node) {
super(node);
}
public List<JetDeclaration> getDeclarations() {
return findChildrenByType(JetNodeTypes.DECLARATIONS);
}
@Override
public void accept(@NotNull JetVisitor visitor) {
visitor.visitNamespaceBody(this);
}
}
@@ -0,0 +1,18 @@
package org.jetbrains.jet.lang.psi;
import com.intellij.lang.ASTNode;
import org.jetbrains.annotations.NotNull;
/**
* @author max
*/
public class JetTypeParameter extends JetNamedDeclaration {
public JetTypeParameter(@NotNull ASTNode node) {
super(node);
}
@Override
public void accept(JetVisitor visitor) {
visitor.visitTypeParameter(this);
}
}
@@ -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 JetTypeParameterList extends JetElement {
public JetTypeParameterList(@NotNull ASTNode node) {
super(node);
}
public List<JetTypeParameter> getParameters() {
return findChildrenByType(JetNodeTypes.TYPE_PARAMETER);
}
@Override
public void accept(JetVisitor visitor) {
visitor.visitTypeParameterList(this);
}
}
@@ -0,0 +1,30 @@
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
*/
public class JetTypeParameterListOwner extends JetNamedDeclaration {
public JetTypeParameterListOwner(@NotNull ASTNode node) {
super(node);
}
@Nullable
public JetTypeParameterList getTypeParameterList() {
return (JetTypeParameterList) findChildByType(JetNodeTypes.TYPE_PARAMETER_LIST);
}
public List<JetTypeParameter> getTypeParameters() {
JetTypeParameterList list = getTypeParameterList();
if (list == null) return Collections.emptyList();
return list.getParameters();
}
}
@@ -6,7 +6,7 @@ import org.jetbrains.annotations.NotNull;
/** /**
* @author max * @author max
*/ */
public class JetTypedef extends JetNamedDeclaration { public class JetTypedef extends JetTypeParameterListOwner {
public JetTypedef(@NotNull ASTNode node) { public JetTypedef(@NotNull ASTNode node) {
super(node); super(node);
} }
@@ -62,6 +62,10 @@ public class JetVisitor extends PsiElementVisitor {
visitJetElement(classBody); visitJetElement(classBody);
} }
public void visitNamespaceBody(JetNamespaceBody body) {
visitJetElement(body);
}
public void visitModifierList(JetModifierList list) { public void visitModifierList(JetModifierList list) {
visitJetElement(list); visitJetElement(list);
} }
@@ -73,4 +77,16 @@ public class JetVisitor extends PsiElementVisitor {
public void visitAttribute(JetAttribute attribute) { public void visitAttribute(JetAttribute attribute) {
visitJetElement(attribute); visitJetElement(attribute);
} }
public void visitTypeParameterList(JetTypeParameterList list) {
visitJetElement(list);
}
public void visitTypeParameter(JetTypeParameter parameter) {
visitDeclaration(parameter);
}
public void visitEnumEntry(JetEnumEntry enumEntry) {
visitClass(enumEntry);
}
} }