Class primary constructor parameters
This commit is contained in:
@@ -24,20 +24,18 @@ public interface JetNodeTypes {
|
|||||||
JetNodeType CONSTRUCTOR = new JetNodeType("CONSTRUCTOR", JetConstructor.class);
|
JetNodeType CONSTRUCTOR = new JetNodeType("CONSTRUCTOR", JetConstructor.class);
|
||||||
JetNodeType ENUM_ENTRY = new JetNodeType("ENUM_ENTRY", JetEnumEntry.class);
|
JetNodeType ENUM_ENTRY = new JetNodeType("ENUM_ENTRY", JetEnumEntry.class);
|
||||||
|
|
||||||
TokenSet DECLARATIONS = TokenSet.create(
|
|
||||||
NAMESPACE, CLASS, PROPERTY, FUN, EXTENSION,
|
|
||||||
TYPEDEF, DECOMPOSER, CLASS_OBJECT, CONSTRUCTOR, ENUM_ENTRY);
|
|
||||||
|
|
||||||
JetNodeType TYPE_PARAMETER_LIST = new JetNodeType("TYPE_PARAMETER_LIST", JetTypeParameterList.class);
|
JetNodeType TYPE_PARAMETER_LIST = new JetNodeType("TYPE_PARAMETER_LIST", JetTypeParameterList.class);
|
||||||
JetNodeType TYPE_PARAMETER = new JetNodeType("TYPE_PARAMETER", JetTypeParameter.class);
|
JetNodeType TYPE_PARAMETER = new JetNodeType("TYPE_PARAMETER", JetTypeParameter.class);
|
||||||
JetNodeType PRIMARY_CONSTRUCTOR_PARAMETERS_LIST = new JetNodeType("PRIMARY_CONSTRUCTOR_PARAMETERS_LIST");
|
|
||||||
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");
|
||||||
JetNodeType DELEGATION_SPECIFIER = new JetNodeType("DELEGATION_SPECIFIER");
|
JetNodeType DELEGATION_SPECIFIER = new JetNodeType("DELEGATION_SPECIFIER");
|
||||||
JetNodeType DELEGATOR_BY = new JetNodeType("DELEGATOR_BY");
|
JetNodeType DELEGATOR_BY = new JetNodeType("DELEGATOR_BY");
|
||||||
JetNodeType DELEGATOR_SUPER_CALL = new JetNodeType("DELEGATOR_SUPER_CALL");
|
JetNodeType DELEGATOR_SUPER_CALL = new JetNodeType("DELEGATOR_SUPER_CALL");
|
||||||
JetNodeType DELEGATOR_SUPER_CLASS = new JetNodeType("DELEGATOR_SUPER_CLASS");
|
JetNodeType DELEGATOR_SUPER_CLASS = new JetNodeType("DELEGATOR_SUPER_CLASS");
|
||||||
JetNodeType VALUE_PARAMETER_LIST = new JetNodeType("VALUE_PARAMETER_LIST");
|
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?
|
||||||
|
JetNodeType PRIMARY_CONSTRUCTOR_PARAMETERS_LIST = new JetNodeType("PRIMARY_CONSTRUCTOR_PARAMETERS_LIST", JetParameterList.class);
|
||||||
|
JetNodeType PRIMARY_CONSTRUCTOR_PARAMETER = new JetNodeType("PRIMARY_CONSTRUCTOR_PARAMETER", JetParameter.class);
|
||||||
JetNodeType NAMED_ARGUMENT = new JetNodeType("NAMED_ARGUMENT");
|
JetNodeType NAMED_ARGUMENT = new JetNodeType("NAMED_ARGUMENT");
|
||||||
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);
|
||||||
@@ -53,7 +51,6 @@ public interface JetNodeTypes {
|
|||||||
JetNodeType TYPE_REFERENCE = new JetNodeType("TYPE_REFERENCE");
|
JetNodeType TYPE_REFERENCE = new JetNodeType("TYPE_REFERENCE");
|
||||||
JetNodeType LABELED_TUPLE_ENTRY = new JetNodeType("LABELED_TUPLE_ENTRY");
|
JetNodeType LABELED_TUPLE_ENTRY = new JetNodeType("LABELED_TUPLE_ENTRY");
|
||||||
JetNodeType TUPLE_TYPE = new JetNodeType("TUPLE_TYPE");
|
JetNodeType TUPLE_TYPE = new JetNodeType("TUPLE_TYPE");
|
||||||
JetNodeType VALUE_PARAMETER = new JetNodeType("VALUE_PARAMETER");
|
|
||||||
JetNodeType FUNCTION_TYPE = new JetNodeType("FUNCTION_TYPE");
|
JetNodeType FUNCTION_TYPE = new JetNodeType("FUNCTION_TYPE");
|
||||||
JetNodeType DECOMPOSER_PROPERTY_LIST = new JetNodeType("DECOMPOSER_PROPERTY_LIST");
|
JetNodeType DECOMPOSER_PROPERTY_LIST = new JetNodeType("DECOMPOSER_PROPERTY_LIST");
|
||||||
// TODO: review
|
// TODO: review
|
||||||
@@ -113,4 +110,8 @@ public interface JetNodeTypes {
|
|||||||
JetNodeType FIELD_REFERENCE = new JetNodeType("FIELD_REFERENCE");
|
JetNodeType FIELD_REFERENCE = new JetNodeType("FIELD_REFERENCE");
|
||||||
|
|
||||||
IElementType NAMESPACE_NAME = new JetNodeType("NAMESPACE_NAME");
|
IElementType NAMESPACE_NAME = new JetNodeType("NAMESPACE_NAME");
|
||||||
|
|
||||||
|
TokenSet DECLARATIONS = TokenSet.create(
|
||||||
|
NAMESPACE, CLASS, PROPERTY, FUN, EXTENSION,
|
||||||
|
TYPEDEF, DECOMPOSER, CLASS_OBJECT, CONSTRUCTOR, ENUM_ENTRY, VALUE_PARAMETER);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,4 +27,16 @@ public class JetClass extends JetTypeParameterListOwner {
|
|||||||
public void accept(@NotNull JetVisitor visitor) {
|
public void accept(@NotNull JetVisitor visitor) {
|
||||||
visitor.visitClass(this);
|
visitor.visitClass(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public JetParameterList getPrimaryConstructorParameterList() {
|
||||||
|
return (JetParameterList) findChildByType(JetNodeTypes.VALUE_PARAMETER_LIST);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public List<JetParameter> getPrimaryConstructorParameters() {
|
||||||
|
JetParameterList list = getPrimaryConstructorParameterList();
|
||||||
|
if (list == null) return Collections.emptyList();
|
||||||
|
return list.getParameters();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package org.jetbrains.jet.lang.psi;
|
||||||
|
|
||||||
|
import com.intellij.lang.ASTNode;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author max
|
||||||
|
*/
|
||||||
|
public class JetParameter extends JetNamedDeclaration {
|
||||||
|
public JetParameter(@NotNull ASTNode node) {
|
||||||
|
super(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(JetVisitor visitor) {
|
||||||
|
visitor.visitParameter(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 JetParameterList extends JetElement {
|
||||||
|
public JetParameterList(@NotNull ASTNode node) {
|
||||||
|
super(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(JetVisitor visitor) {
|
||||||
|
visitor.visitParameterList(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<JetParameter> getParameters() {
|
||||||
|
return findChildrenByType(JetNodeTypes.VALUE_PARAMETER);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -89,4 +89,12 @@ public class JetVisitor extends PsiElementVisitor {
|
|||||||
public void visitEnumEntry(JetEnumEntry enumEntry) {
|
public void visitEnumEntry(JetEnumEntry enumEntry) {
|
||||||
visitClass(enumEntry);
|
visitClass(enumEntry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void visitParameterList(JetParameterList list) {
|
||||||
|
visitJetElement(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void visitParameter(JetParameter parameter) {
|
||||||
|
visitDeclaration(parameter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user