From 64c76ab22679e03d7c3b006eb3f6284c25e9269e Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Mon, 3 Jan 2011 20:42:09 +0300 Subject: [PATCH] A bit more psi nodes --- idea/src/org/jetbrains/jet/JetNodeTypes.java | 29 +++++---- .../jetbrains/jet/lang/psi/JetChangeUtil.java | 32 ++++++++++ .../org/jetbrains/jet/lang/psi/JetClass.java | 36 +++++++++++ .../jetbrains/jet/lang/psi/JetClassBody.java | 32 ++++++++++ .../jet/lang/psi/JetClassObject.java | 25 ++++++++ .../jet/lang/psi/JetConstructor.java | 25 ++++++++ .../jet/lang/psi/JetDeclaration.java | 14 ++++ .../jetbrains/jet/lang/psi/JetDecomposer.java | 24 +++++++ .../jetbrains/jet/lang/psi/JetExtension.java | 36 +++++++++++ .../org/jetbrains/jet/lang/psi/JetFile.java | 16 +++++ .../jetbrains/jet/lang/psi/JetFunction.java | 24 +++++++ .../jet/lang/psi/JetImportDirective.java | 24 +++++++ .../jet/lang/psi/JetNamedDeclaration.java | 34 ++++++++++ .../jetbrains/jet/lang/psi/JetNamespace.java | 31 ++++++++- .../jetbrains/jet/lang/psi/JetProperty.java | 25 ++++++++ .../jetbrains/jet/lang/psi/JetTypedef.java | 24 +++++++ .../jetbrains/jet/lang/psi/JetVisitor.java | 64 +++++++++++++++++++ 17 files changed, 483 insertions(+), 12 deletions(-) create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetChangeUtil.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetClass.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetClassBody.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetClassObject.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetConstructor.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetDeclaration.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetDecomposer.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetExtension.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetFunction.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetImportDirective.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetNamedDeclaration.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetProperty.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetTypedef.java create mode 100644 idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java diff --git a/idea/src/org/jetbrains/jet/JetNodeTypes.java b/idea/src/org/jetbrains/jet/JetNodeTypes.java index a94f8a7607e..09fbf200f32 100644 --- a/idea/src/org/jetbrains/jet/JetNodeTypes.java +++ b/idea/src/org/jetbrains/jet/JetNodeTypes.java @@ -5,19 +5,28 @@ package org.jetbrains.jet; import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.IFileElementType; +import com.intellij.psi.tree.TokenSet; import org.jetbrains.jet.lang.JetLanguage; -import org.jetbrains.jet.lang.psi.JetNamespace; +import org.jetbrains.jet.lang.psi.*; public interface JetNodeTypes { IFileElementType JET_FILE = new IFileElementType(JetLanguage.INSTANCE); JetNodeType NAMESPACE = new JetNodeType("NAMESPACE", JetNamespace.class); - JetNodeType CLASS = new JetNodeType("CLASS"); - JetNodeType PROPERTY = new JetNodeType("PROPERTY"); - JetNodeType FUN = new JetNodeType("FUN"); - JetNodeType EXTENSION = new JetNodeType("EXTENSION"); - JetNodeType TYPEDEF = new JetNodeType("TYPEDEF"); - JetNodeType DECOMPOSER = new JetNodeType("DECOMPOSER"); + JetNodeType CLASS = new JetNodeType("CLASS", JetClass.class); + JetNodeType PROPERTY = new JetNodeType("PROPERTY", JetProperty.class); + JetNodeType FUN = new JetNodeType("FUN", JetFunction.class); + JetNodeType EXTENSION = new JetNodeType("EXTENSION", JetExtension.class); + JetNodeType TYPEDEF = new JetNodeType("TYPEDEF", JetTypedef.class); + JetNodeType DECOMPOSER = new JetNodeType("DECOMPOSER", JetDecomposer.class); + + JetNodeType CLASS_OBJECT = new JetNodeType("CLASS_OBJECT", JetClassObject.class); + JetNodeType CONSTRUCTOR = new JetNodeType("CONSTRUCTOR", JetConstructor.class); + + TokenSet DECLARATIONS = TokenSet.create( + NAMESPACE, CLASS, PROPERTY, FUN, EXTENSION, + TYPEDEF, DECOMPOSER, CLASS_OBJECT, CONSTRUCTOR); + JetNodeType TYPE_PARAMETER_LIST = new JetNodeType("TYPE_PARAMETER_LIST"); JetNodeType TYPE_PARAMETER = new JetNodeType("TYPE_PARAMETER"); JetNodeType PRIMARY_CONSTRUCTOR_PARAMETERS_LIST = new JetNodeType("PRIMARY_CONSTRUCTOR_PARAMETERS_LIST"); @@ -29,8 +38,8 @@ public interface JetNodeTypes { JetNodeType DELEGATOR_SUPER_CLASS = new JetNodeType("DELEGATOR_SUPER_CLASS"); JetNodeType VALUE_PARAMETER_LIST = new JetNodeType("VALUE_PARAMETER_LIST"); JetNodeType NAMED_ARGUMENT = new JetNodeType("NAMED_ARGUMENT"); - JetNodeType CLASS_BODY = new JetNodeType("CLASS_BODY"); - JetNodeType IMPORT_DIRECTIVE = new JetNodeType("IMPORT_DIRECTIVE"); + JetNodeType CLASS_BODY = new JetNodeType("CLASS_BODY", JetClassBody.class); + JetNodeType IMPORT_DIRECTIVE = new JetNodeType("IMPORT_DIRECTIVE", JetImportDirective.class); JetNodeType IMPORTED = new JetNodeType("IMPORTED"); JetNodeType NAMESPACE_BODY = new JetNodeType("NAMESPACE_BODY"); JetNodeType MODIFIER_LIST = new JetNodeType("MODIFIER_LIST"); @@ -49,11 +58,9 @@ public interface JetNodeTypes { // TODO: review JetNodeType RECEIVER_TYPE_ATTRIBUTES = new JetNodeType("RECEIVER_TYPE_ATTRIBUTES"); JetNodeType PROPERTY_ACCESSOR = new JetNodeType("PROPERTY_ACCESSOR"); - JetNodeType CONSTRUCTOR = new JetNodeType("CONSTRUCTOR"); JetNodeType INITIALIZER_LIST = new JetNodeType("INITIALIZER_LIST"); JetNodeType THIS_CALL = new JetNodeType("THIS_CALL"); JetNodeType BLOCK = new JetNodeType("BLOCK"); - JetNodeType CLASS_OBJECT = new JetNodeType("CLASS_OBJECT"); JetNodeType TYPE_CONSTRAINT_LIST = new JetNodeType("TYPE_CONSTRAINT_LIST"); JetNodeType TYPE_CONSTRAINT = new JetNodeType("TYPE_CONSTRAINT"); JetNodeType ENUM_ENTRY = new JetNodeType("ENUM_ENTRY"); diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetChangeUtil.java b/idea/src/org/jetbrains/jet/lang/psi/JetChangeUtil.java new file mode 100644 index 00000000000..bfdfb33e2d7 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetChangeUtil.java @@ -0,0 +1,32 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFileFactory; +import com.intellij.util.LocalTimeCounter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lang.JetFileType; + +import java.util.List; + +/** + * @author max + */ +public class JetChangeUtil { + @NotNull + public static JetFile createFile(Project project, String text) { + return (JetFile) PsiFileFactory.getInstance(project).createFileFromText("dummy.jet", JetFileType.INSTANCE, text, LocalTimeCounter.currentTime(), true); + } + + public static JetProperty createProperty(Project project, String name, String type) { + JetFile file = createFile(project, "val " + name + (type != null ? ":" + type : "")); + JetNamespace rootNamespace = file.getRootNamespace(); + List dcls = rootNamespace.getDeclarations(); + assert dcls.size() == 1; + return (JetProperty) dcls.get(0); + } + + public static PsiElement createNameIdentifier(Project project, String name) { + return createProperty(project, name, null).getNameIdentifier(); + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetClass.java b/idea/src/org/jetbrains/jet/lang/psi/JetClass.java new file mode 100644 index 00000000000..d26972841f7 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetClass.java @@ -0,0 +1,36 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.JetNodeTypes; + +import java.util.Collections; +import java.util.List; + +/** + * @author max + */ +public class JetClass extends JetNamedDeclaration{ + public JetClass(@NotNull ASTNode node) { + super(node); + } + + public List getDeclarations() { + JetClassBody body = (JetClassBody) findChildByType(JetNodeTypes.CLASS_BODY); + if (body == null) return Collections.emptyList(); + + return body.getDeclarations(); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof JetVisitor) { + ((JetVisitor) visitor).visitClass(this); + } + else { + visitor.visitElement(this); + } + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetClassBody.java b/idea/src/org/jetbrains/jet/lang/psi/JetClassBody.java new file mode 100644 index 00000000000..6ae2d5cc63d --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetClassBody.java @@ -0,0 +1,32 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.JetNodeTypes; + +import java.util.List; + +/** + * @author max + */ +public class JetClassBody extends JetElement { + public JetClassBody(@NotNull ASTNode node) { + super(node); + } + + public List getDeclarations() { + return findChildrenByType(JetNodeTypes.DECLARATIONS); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof JetVisitor) { + ((JetVisitor) visitor).visitClassBody(this); + } + else { + visitor.visitElement(this); + } + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetClassObject.java b/idea/src/org/jetbrains/jet/lang/psi/JetClassObject.java new file mode 100644 index 00000000000..b4d2c658c6c --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetClassObject.java @@ -0,0 +1,25 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElementVisitor; +import org.jetbrains.annotations.NotNull; + +/** + * @author max + */ +public class JetClassObject extends JetDeclaration { + public JetClassObject(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof JetVisitor) { + ((JetVisitor) visitor).visitClassObject(this); + } + else { + visitor.visitElement(this); + } + } + +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetConstructor.java b/idea/src/org/jetbrains/jet/lang/psi/JetConstructor.java new file mode 100644 index 00000000000..e9eb8244ac8 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetConstructor.java @@ -0,0 +1,25 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElementVisitor; +import org.jetbrains.annotations.NotNull; + +/** + * @author max + */ +public class JetConstructor extends JetDeclaration { + public JetConstructor(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof JetVisitor) { + ((JetVisitor) visitor).visitConstructor(this); + } + else { + visitor.visitElement(this); + } + } + +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetDeclaration.java b/idea/src/org/jetbrains/jet/lang/psi/JetDeclaration.java new file mode 100644 index 00000000000..eec5ab68aa5 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetDeclaration.java @@ -0,0 +1,14 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElementVisitor; +import org.jetbrains.annotations.NotNull; + +/** + * @author max + */ +public abstract class JetDeclaration extends JetElement { + public JetDeclaration(@NotNull ASTNode node) { + super(node); + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetDecomposer.java b/idea/src/org/jetbrains/jet/lang/psi/JetDecomposer.java new file mode 100644 index 00000000000..de34c84d7a5 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetDecomposer.java @@ -0,0 +1,24 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElementVisitor; +import org.jetbrains.annotations.NotNull; + +/** + * @author max + */ +public class JetDecomposer extends JetNamedDeclaration { + public JetDecomposer(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof JetVisitor) { + ((JetVisitor) visitor).visitDecomposer(this); + } + else { + visitor.visitElement(this); + } + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetExtension.java b/idea/src/org/jetbrains/jet/lang/psi/JetExtension.java new file mode 100644 index 00000000000..166af32d736 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetExtension.java @@ -0,0 +1,36 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElementVisitor; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.JetNodeTypes; + +import java.util.Collections; +import java.util.List; + +/** + * @author max + */ +public class JetExtension extends JetNamedDeclaration { + public JetExtension(@NotNull ASTNode node) { + super(node); + } + + public List getDeclarations() { + JetClassBody body = (JetClassBody) findChildByType(JetNodeTypes.CLASS_BODY); + if (body == null) return Collections.emptyList(); + + return body.getDeclarations(); + } + + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof JetVisitor) { + ((JetVisitor) visitor).visitExtension(this); + } + else { + visitor.visitElement(this); + } + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetFile.java b/idea/src/org/jetbrains/jet/lang/psi/JetFile.java index 72d149c81ab..714fcdc8bb6 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetFile.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetFile.java @@ -7,6 +7,7 @@ import com.intellij.extapi.psi.PsiFileBase; import com.intellij.lang.Language; import com.intellij.openapi.fileTypes.FileType; import com.intellij.psi.FileViewProvider; +import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.impl.source.PsiFileImpl; import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; @@ -28,4 +29,19 @@ public class JetFile extends PsiFileBase { public String toString() { return "JetFile: " + getName(); } + + @NotNull + public JetNamespace getRootNamespace() { + return (JetNamespace) getNode().findChildByType(JetNodeTypes.NAMESPACE).getPsi(); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof JetVisitor) { + ((JetVisitor) visitor).visitJetFile(this); + } + else { + visitor.visitFile(this); + } + } } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetFunction.java b/idea/src/org/jetbrains/jet/lang/psi/JetFunction.java new file mode 100644 index 00000000000..85e03264044 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetFunction.java @@ -0,0 +1,24 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElementVisitor; +import org.jetbrains.annotations.NotNull; + +/** + * @author max + */ +public class JetFunction extends JetNamedDeclaration { + public JetFunction(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof JetVisitor) { + ((JetVisitor) visitor).visitFunction(this); + } + else { + visitor.visitElement(this); + } + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetImportDirective.java b/idea/src/org/jetbrains/jet/lang/psi/JetImportDirective.java new file mode 100644 index 00000000000..d5c53699bf1 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetImportDirective.java @@ -0,0 +1,24 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElementVisitor; +import org.jetbrains.annotations.NotNull; + +/** + * @author max + */ +public class JetImportDirective extends JetElement { + public JetImportDirective(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof JetVisitor) { + ((JetVisitor) visitor).visitImportDirective(this); + } + else { + visitor.visitElement(this); + } + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetNamedDeclaration.java b/idea/src/org/jetbrains/jet/lang/psi/JetNamedDeclaration.java new file mode 100644 index 00000000000..9cf3319d8c3 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetNamedDeclaration.java @@ -0,0 +1,34 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiNameIdentifierOwner; +import com.intellij.util.IncorrectOperationException; +import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lexer.JetTokens; + +/** + * @author max + */ +public abstract class JetNamedDeclaration extends JetDeclaration implements PsiNameIdentifierOwner { + public JetNamedDeclaration(@NotNull ASTNode node) { + super(node); + } + + @Override + public String getName() { + PsiElement identifier = getNameIdentifier(); + return identifier != null ? identifier.getText() : null; + } + + @Override + public PsiElement getNameIdentifier() { + return findChildByType(JetTokens.IDENTIFIER); + } + + @Override + public PsiElement setName(@NonNls @NotNull String name) throws IncorrectOperationException { + return getNameIdentifier().replace(JetChangeUtil.createNameIdentifier(getProject(), name)); + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetNamespace.java b/idea/src/org/jetbrains/jet/lang/psi/JetNamespace.java index b6b26298762..a6943b677d3 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetNamespace.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetNamespace.java @@ -1,15 +1,44 @@ package org.jetbrains.jet.lang.psi; import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.JetNodeTypes; + +import java.util.List; /** * @author max */ -public class JetNamespace extends JetElement { +public class JetNamespace extends JetDeclaration { public JetNamespace(@NotNull ASTNode node) { super(node); } + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof JetVisitor) { + ((JetVisitor) visitor).visitNamespace(this); + } + else { + visitor.visitElement(this); + } + } + public List getDeclarations() { + PsiElement body = findChildByType(JetNodeTypes.NAMESPACE_BODY); + return PsiTreeUtil.getChildrenOfTypeAsList(body != null ? body : this, JetDeclaration.class); + } + + public List getImportDirectives() { + PsiElement body = findChildByType(JetNodeTypes.NAMESPACE_BODY); + return PsiTreeUtil.getChildrenOfTypeAsList(body != null ? body : this, JetImportDirective.class); + } + + public String getName() { + PsiElement nameNode = findChildByType(JetNodeTypes.NAMESPACE_NAME); + return nameNode != null ? nameNode.getText() : ""; + } } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetProperty.java b/idea/src/org/jetbrains/jet/lang/psi/JetProperty.java new file mode 100644 index 00000000000..4976641189f --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetProperty.java @@ -0,0 +1,25 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.PsiNameIdentifierOwner; +import org.jetbrains.annotations.NotNull; + +/** + * @author max + */ +public class JetProperty extends JetNamedDeclaration { + public JetProperty(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof JetVisitor) { + ((JetVisitor) visitor).visitProperty(this); + } + else { + visitor.visitElement(this); + } + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetTypedef.java b/idea/src/org/jetbrains/jet/lang/psi/JetTypedef.java new file mode 100644 index 00000000000..7ed121d8e81 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetTypedef.java @@ -0,0 +1,24 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElementVisitor; +import org.jetbrains.annotations.NotNull; + +/** + * @author max + */ +public class JetTypedef extends JetNamedDeclaration { + public JetTypedef(@NotNull ASTNode node) { + super(node); + } + + @Override + public void accept(@NotNull PsiElementVisitor visitor) { + if (visitor instanceof JetVisitor) { + ((JetVisitor) visitor).visitTypedef(this); + } + else { + visitor.visitElement(this); + } + } +} diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java b/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java new file mode 100644 index 00000000000..445c341b6d2 --- /dev/null +++ b/idea/src/org/jetbrains/jet/lang/psi/JetVisitor.java @@ -0,0 +1,64 @@ +package org.jetbrains.jet.lang.psi; + +import com.intellij.psi.PsiElementVisitor; + +/** + * @author max + */ +public class JetVisitor extends PsiElementVisitor { + public void visitJetElement(JetElement elem) { + visitElement(elem); + } + + public void visitDeclaration(JetDeclaration dcl) { + visitJetElement(dcl); + } + + public void visitNamespace(JetNamespace namespace) { + visitDeclaration(namespace); + } + + public void visitClass(JetClass klass) { + visitDeclaration(klass); + } + + public void visitClassObject(JetClassObject classObject) { + visitDeclaration(classObject); + } + + public void visitConstructor(JetConstructor constructor) { + visitDeclaration(constructor); + } + + public void visitDecomposer(JetDecomposer decomposer) { + visitDeclaration(decomposer); + } + + public void visitExtension(JetExtension extension) { + visitDeclaration(extension); + } + + public void visitFunction(JetFunction fun) { + visitDeclaration(fun); + } + + public void visitProperty(JetProperty property) { + visitDeclaration(property); + } + + public void visitTypedef(JetTypedef typedef) { + visitDeclaration(typedef); + } + + public void visitJetFile(JetFile file) { + visitFile(file); + } + + public void visitImportDirective(JetImportDirective importDirective) { + visitJetElement(importDirective); + } + + public void visitClassBody(JetClassBody classBody) { + visitJetElement(classBody); + } +}