type parameter list & owners
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user