提交 4a509d45 编写于 作者: M Maxim Shafirov

Class primary constructor parameters

上级 a585c872
......@@ -24,20 +24,18 @@ public interface JetNodeTypes {
JetNodeType CONSTRUCTOR = new JetNodeType("CONSTRUCTOR", JetConstructor.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 = 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 = new JetNodeType("DELEGATION_SPECIFIER");
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 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 CLASS_BODY = new JetNodeType("CLASS_BODY", JetClassBody.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 LABELED_TUPLE_ENTRY = new JetNodeType("LABELED_TUPLE_ENTRY");
JetNodeType TUPLE_TYPE = new JetNodeType("TUPLE_TYPE");
JetNodeType VALUE_PARAMETER = new JetNodeType("VALUE_PARAMETER");
JetNodeType FUNCTION_TYPE = new JetNodeType("FUNCTION_TYPE");
JetNodeType DECOMPOSER_PROPERTY_LIST = new JetNodeType("DECOMPOSER_PROPERTY_LIST");
// TODO: review
......@@ -113,4 +110,8 @@ public interface JetNodeTypes {
JetNodeType FIELD_REFERENCE = new JetNodeType("FIELD_REFERENCE");
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) {
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();
}
}
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);
}
}
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) {
visitClass(enumEntry);
}
public void visitParameterList(JetParameterList list) {
visitJetElement(list);
}
public void visitParameter(JetParameter parameter) {
visitDeclaration(parameter);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册