Some getters for expression nodes
This commit is contained in:
@@ -59,7 +59,6 @@ public interface JetNodeTypes {
|
|||||||
JetNodeType PROPERTY_ACCESSOR = new JetNodeType("PROPERTY_ACCESSOR");
|
JetNodeType PROPERTY_ACCESSOR = new JetNodeType("PROPERTY_ACCESSOR");
|
||||||
JetNodeType INITIALIZER_LIST = new JetNodeType("INITIALIZER_LIST");
|
JetNodeType INITIALIZER_LIST = new JetNodeType("INITIALIZER_LIST");
|
||||||
JetNodeType THIS_CALL = new JetNodeType("THIS_CALL");
|
JetNodeType THIS_CALL = new JetNodeType("THIS_CALL");
|
||||||
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");
|
||||||
|
|
||||||
@@ -81,19 +80,20 @@ public interface JetNodeTypes {
|
|||||||
JetNodeType CONTINUE = new JetNodeType("CONTINUE", JetContinueExpression.class);
|
JetNodeType CONTINUE = new JetNodeType("CONTINUE", JetContinueExpression.class);
|
||||||
JetNodeType BREAK = new JetNodeType("BREAK", JetBreakExpression.class);
|
JetNodeType BREAK = new JetNodeType("BREAK", JetBreakExpression.class);
|
||||||
JetNodeType IF = new JetNodeType("IF", JetIfExpression.class);
|
JetNodeType IF = new JetNodeType("IF", JetIfExpression.class);
|
||||||
JetNodeType CONDITION = new JetNodeType("CONDITION");
|
JetNodeType CONDITION = new JetNodeType("CONDITION"); //TODO: discuss, this can be omitted
|
||||||
JetNodeType THEN = new JetNodeType("THEN");
|
JetNodeType THEN = new JetNodeType("THEN"); //TODO: discuss, this can be omitted
|
||||||
JetNodeType ELSE = new JetNodeType("ELSE");
|
JetNodeType ELSE = new JetNodeType("ELSE"); //TODO: discuss, this can be omitted
|
||||||
JetNodeType TRY = new JetNodeType("TRY", JetTryExpression.class);
|
JetNodeType TRY = new JetNodeType("TRY", JetTryExpression.class);
|
||||||
JetNodeType CATCH = new JetNodeType("CATCH");
|
JetNodeType CATCH = new JetNodeType("CATCH", JetCatchSection.class);
|
||||||
JetNodeType FINALLY = new JetNodeType("FINALLY");
|
JetNodeType FINALLY = new JetNodeType("FINALLY", JetFinallySection.class);
|
||||||
JetNodeType FOR = new JetNodeType("FOR", JetForExpression.class);
|
JetNodeType FOR = new JetNodeType("FOR", JetForExpression.class);
|
||||||
JetNodeType WHILE = new JetNodeType("WHILE", JetWhileExpression.class);
|
JetNodeType WHILE = new JetNodeType("WHILE", JetWhileExpression.class);
|
||||||
JetNodeType DO_WHILE = new JetNodeType("DO_WHILE", JetDoWhileExpression.class);
|
JetNodeType DO_WHILE = new JetNodeType("DO_WHILE", JetDoWhileExpression.class);
|
||||||
JetNodeType LOOP_PARAMETER = new JetNodeType("LOOP_PARAMETER");
|
JetNodeType LOOP_PARAMETER = new JetNodeType("LOOP_PARAMETER", JetParameter.class); // TODO: Do we need separate type?
|
||||||
JetNodeType LOOP_RANGE = new JetNodeType("LOOP_RANGE");
|
JetNodeType LOOP_RANGE = new JetNodeType("LOOP_RANGE"); //TODO: discuss, this can be omitted
|
||||||
JetNodeType BODY = new JetNodeType("BODY");
|
JetNodeType BODY = new JetNodeType("BODY"); //TODO: discuss, this can be omitted
|
||||||
JetNodeType RECEIVER_TYPE = new JetNodeType("RECEIVER_TYPE");
|
JetNodeType RECEIVER_TYPE = new JetNodeType("RECEIVER_TYPE");
|
||||||
|
JetNodeType BLOCK = new JetNodeType("BLOCK", JetBlockExpression.class);
|
||||||
JetNodeType FUNCTION_LITERAL = new JetNodeType("FUNCTION_LITERAL", JetFunctionLiteralExpression.class);
|
JetNodeType FUNCTION_LITERAL = new JetNodeType("FUNCTION_LITERAL", JetFunctionLiteralExpression.class);
|
||||||
JetNodeType ANNOTATED_EXPRESSION = new JetNodeType("ANNOTATED_EXPRESSION", JetAnnotatedExpression.class);
|
JetNodeType ANNOTATED_EXPRESSION = new JetNodeType("ANNOTATED_EXPRESSION", JetAnnotatedExpression.class);
|
||||||
JetNodeType REFERENCE_EXPRESSION = new JetNodeType("REFERENCE_EXPRESSION", JetReferenceExpression.class);
|
JetNodeType REFERENCE_EXPRESSION = new JetNodeType("REFERENCE_EXPRESSION", JetReferenceExpression.class);
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ 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.jet.JetNodeTypes;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
@@ -19,4 +24,17 @@ public class JetAnnotatedExpression extends JetExpression {
|
|||||||
public JetExpression getBaseExpression() {
|
public JetExpression getBaseExpression() {
|
||||||
return findChildByClass(JetExpression.class);
|
return findChildByClass(JetExpression.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<JetAttributeAnnotation> getAttributeAnnotations() {
|
||||||
|
return findChildrenByType(JetNodeTypes.ATTRIBUTE_ANNOTATION);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<JetAttribute> getAttributes() {
|
||||||
|
List<JetAttribute> answer = null;
|
||||||
|
for (JetAttributeAnnotation annotation : getAttributeAnnotations()) {
|
||||||
|
if (answer == null) answer = new ArrayList<JetAttribute>();
|
||||||
|
answer.addAll(annotation.getAttributes());
|
||||||
|
}
|
||||||
|
return answer != null ? answer : Collections.<JetAttribute>emptyList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,16 +2,11 @@ package org.jetbrains.jet.lang.psi;
|
|||||||
|
|
||||||
import com.intellij.lang.ASTNode;
|
import com.intellij.lang.ASTNode;
|
||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.PsiElement;
|
||||||
import com.intellij.psi.PsiErrorElement;
|
|
||||||
import com.intellij.psi.tree.IElementType;
|
|
||||||
import com.intellij.psi.tree.TokenSet;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lexer.JetToken;
|
import org.jetbrains.jet.lexer.JetToken;
|
||||||
import org.jetbrains.jet.lexer.JetTokens;
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
|
|
||||||
import static org.jetbrains.jet.lexer.JetTokens.*;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
*/
|
*/
|
||||||
@@ -46,26 +41,15 @@ public class JetBinaryExpression extends JetExpression {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
public ASTNode getOperationTokenNode() {
|
public ASTNode getOperationTokenNode() {
|
||||||
PsiElement child = getLeft().getNextSibling();
|
ASTNode operationNode = getNode().findChildByType(JetTokens.OPERATIONS);
|
||||||
|
assert operationNode != null;
|
||||||
while (child != null) {
|
return operationNode;
|
||||||
IElementType tt = child.getNode().getElementType();
|
|
||||||
|
|
||||||
if (JetTokens.WHITE_SPACE_OR_COMMENT_BIT_SET.contains(tt) || child instanceof PsiErrorElement) {
|
|
||||||
child = child.getNextSibling();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return child.getNode();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public JetToken getOperationSign() {
|
public JetToken getOperationSign() {
|
||||||
ASTNode node = getOperationTokenNode();
|
return (JetToken) getOperationTokenNode().getElementType();
|
||||||
return node != null ? (JetToken) node.getElementType() : null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package org.jetbrains.jet.lang.psi;
|
||||||
|
|
||||||
|
import com.intellij.lang.ASTNode;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author max
|
||||||
|
*/
|
||||||
|
public class JetBlockExpression extends JetExpression {
|
||||||
|
public JetBlockExpression(@NotNull ASTNode node) {
|
||||||
|
super(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(JetVisitor visitor) {
|
||||||
|
visitor.visitBlockExpression(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
package org.jetbrains.jet.lang.psi;
|
package org.jetbrains.jet.lang.psi;
|
||||||
|
|
||||||
import com.intellij.lang.ASTNode;
|
import com.intellij.lang.ASTNode;
|
||||||
|
import com.intellij.psi.PsiElement;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
@@ -15,4 +18,10 @@ public class JetBreakExpression extends JetExpression {
|
|||||||
public void accept(JetVisitor visitor) {
|
public void accept(JetVisitor visitor) {
|
||||||
visitor.visitBreakExpression(this);
|
visitor.visitBreakExpression(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public String getLabelName() {
|
||||||
|
PsiElement id = findChildByType(JetTokens.IDENTIFIER);
|
||||||
|
return id != null ? id.getText() : null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
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.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author max
|
||||||
|
*/
|
||||||
|
public class JetCatchSection extends JetElement {
|
||||||
|
public JetCatchSection(@NotNull ASTNode node) {
|
||||||
|
super(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(JetVisitor visitor) {
|
||||||
|
visitor.visitCatchSection(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public JetParameterList getParameterList() {
|
||||||
|
return (JetParameterList) findChildByType(JetNodeTypes.VALUE_PARAMETER_LIST);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public JetParameter getCatchParameter() {
|
||||||
|
JetParameterList list = getParameterList();
|
||||||
|
if (list == null) return null;
|
||||||
|
List<JetParameter> parameters = list.getParameters();
|
||||||
|
return parameters.size() == 1 ? parameters.get(0) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public JetExpression getCatchBody() {
|
||||||
|
return findChildByClass(JetExpression.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
package org.jetbrains.jet.lang.psi;
|
package org.jetbrains.jet.lang.psi;
|
||||||
|
|
||||||
import com.intellij.lang.ASTNode;
|
import com.intellij.lang.ASTNode;
|
||||||
|
import com.intellij.psi.PsiElement;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
@@ -15,4 +18,10 @@ public class JetContinueExpression extends JetExpression {
|
|||||||
public void accept(JetVisitor visitor) {
|
public void accept(JetVisitor visitor) {
|
||||||
visitor.visitContinueExpression(this);
|
visitor.visitContinueExpression(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public String getLabelName() {
|
||||||
|
PsiElement id = findChildByType(JetTokens.IDENTIFIER);
|
||||||
|
return id != null ? id.getText() : null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ 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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
@@ -15,4 +17,13 @@ public class JetDoWhileExpression extends JetExpression {
|
|||||||
public void accept(JetVisitor visitor) {
|
public void accept(JetVisitor visitor) {
|
||||||
visitor.visitDoWhileExpression(this);
|
visitor.visitDoWhileExpression(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public JetExpression getCondition() {
|
||||||
|
return findExpressionUnder(JetNodeTypes.CONDITION);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JetExpression getBody() {
|
||||||
|
return findExpressionUnder(JetNodeTypes.THEN);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
package org.jetbrains.jet.lang.psi;
|
package org.jetbrains.jet.lang.psi;
|
||||||
|
|
||||||
import com.intellij.lang.ASTNode;
|
import com.intellij.lang.ASTNode;
|
||||||
|
import com.intellij.psi.PsiElement;
|
||||||
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.JetNodeType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
@@ -15,4 +18,12 @@ public class JetExpression extends JetElement {
|
|||||||
public void accept(JetVisitor visitor) {
|
public void accept(JetVisitor visitor) {
|
||||||
visitor.visitExpression(this);
|
visitor.visitExpression(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
JetExpression findExpressionUnder(JetNodeType type) {
|
||||||
|
PsiElement containerNode = findChildByType(type);
|
||||||
|
if (containerNode == null) return null;
|
||||||
|
|
||||||
|
return PsiTreeUtil.findChildOfType(containerNode, JetExpression.class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package org.jetbrains.jet.lang.psi;
|
||||||
|
|
||||||
|
import com.intellij.lang.ASTNode;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author max
|
||||||
|
*/
|
||||||
|
public class JetFinallySection extends JetElement {
|
||||||
|
public JetFinallySection(@NotNull ASTNode node) {
|
||||||
|
super(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(JetVisitor visitor) {
|
||||||
|
visitor.visitFinallySection(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JetExpression getFinalExpression() {
|
||||||
|
return findChildByClass(JetExpression.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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.jet.JetNodeTypes;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
@@ -15,4 +16,16 @@ public class JetForExpression extends JetExpression {
|
|||||||
public void accept(JetVisitor visitor) {
|
public void accept(JetVisitor visitor) {
|
||||||
visitor.visitForExpression(this);
|
visitor.visitForExpression(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public JetParameter getLoopParameter() {
|
||||||
|
return (JetParameter) findChildByType(JetNodeTypes.LOOP_PARAMETER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JetExpression getLoopRange() {
|
||||||
|
return findExpressionUnder(JetNodeTypes.LOOP_RANGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JetExpression getBody() {
|
||||||
|
return findExpressionUnder(JetNodeTypes.THEN);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ 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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
@@ -15,4 +17,17 @@ public class JetIfExpression extends JetExpression {
|
|||||||
public void accept(JetVisitor visitor) {
|
public void accept(JetVisitor visitor) {
|
||||||
visitor.visitIfExpression(this);
|
visitor.visitIfExpression(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public JetExpression getCondition() {
|
||||||
|
return findExpressionUnder(JetNodeTypes.CONDITION);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JetExpression getThen() {
|
||||||
|
return findExpressionUnder(JetNodeTypes.THEN);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JetExpression getElse() {
|
||||||
|
return findExpressionUnder(JetNodeTypes.ELSE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,11 @@ 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 java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
@@ -15,4 +20,19 @@ public class JetNewExpression extends JetExpression {
|
|||||||
public void accept(JetVisitor visitor) {
|
public void accept(JetVisitor visitor) {
|
||||||
visitor.visitNewExpression(this);
|
visitor.visitNewExpression(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public JetTypeReference getTypeReference() {
|
||||||
|
return (JetTypeReference) findChildByType(JetNodeTypes.TYPE_REFERENCE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public JetArgumentList getArgumentList() {
|
||||||
|
return (JetArgumentList) findChildByType(JetNodeTypes.VALUE_ARGUMENT_LIST);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public List<JetArgument> getArguments() {
|
||||||
|
JetArgumentList list = getArgumentList();
|
||||||
|
return list != null ? list.getArguments() : Collections.<JetArgument>emptyList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,9 @@ 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.lexer.JetToken;
|
||||||
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
@@ -19,4 +22,16 @@ public class JetPostfixExpression extends JetExpression {
|
|||||||
public JetExpression getBaseExpression() {
|
public JetExpression getBaseExpression() {
|
||||||
return findChildByClass(JetExpression.class);
|
return findChildByClass(JetExpression.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public ASTNode getOperationTokenNode() {
|
||||||
|
ASTNode operationNode = getNode().findChildByType(JetTokens.OPERATIONS);
|
||||||
|
assert operationNode != null;
|
||||||
|
return operationNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public JetToken getOperationSign() {
|
||||||
|
return (JetToken) getOperationTokenNode().getElementType();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package org.jetbrains.jet.lang.psi;
|
package org.jetbrains.jet.lang.psi;
|
||||||
|
|
||||||
import com.intellij.lang.ASTNode;
|
import com.intellij.lang.ASTNode;
|
||||||
import com.intellij.psi.util.PsiTreeUtil;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
import java.util.List;
|
import org.jetbrains.jet.lexer.JetToken;
|
||||||
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
@@ -22,4 +22,16 @@ public class JetPrefixExpression extends JetExpression {
|
|||||||
public JetExpression getBaseExpression() {
|
public JetExpression getBaseExpression() {
|
||||||
return findChildByClass(JetExpression.class);
|
return findChildByClass(JetExpression.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public ASTNode getOperationTokenNode() {
|
||||||
|
ASTNode operationNode = getNode().findChildByType(JetTokens.OPERATIONS);
|
||||||
|
assert operationNode != null;
|
||||||
|
return operationNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public JetToken getOperationSign() {
|
||||||
|
return (JetToken) getOperationTokenNode().getElementType();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
package org.jetbrains.jet.lang.psi;
|
package org.jetbrains.jet.lang.psi;
|
||||||
|
|
||||||
import com.intellij.lang.ASTNode;
|
import com.intellij.lang.ASTNode;
|
||||||
|
import com.intellij.psi.PsiElement;
|
||||||
|
import com.intellij.psi.PsiErrorElement;
|
||||||
|
import com.intellij.psi.tree.IElementType;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
@@ -10,4 +15,42 @@ public abstract class JetQualifiedExpression extends JetExpression {
|
|||||||
public JetQualifiedExpression(@NotNull ASTNode node) {
|
public JetQualifiedExpression(@NotNull ASTNode node) {
|
||||||
super(node);
|
super(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public JetExpression getReceiverExpression() {
|
||||||
|
JetExpression left = findChildByClass(JetExpression.class);
|
||||||
|
assert left != null;
|
||||||
|
return left;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public JetExpression getSelectorExpression() {
|
||||||
|
ASTNode node = getOperationTokenNode();
|
||||||
|
while (node != null) {
|
||||||
|
PsiElement psi = node.getPsi();
|
||||||
|
if (psi instanceof JetExpression) {
|
||||||
|
return (JetExpression) psi;
|
||||||
|
}
|
||||||
|
node = node.getTreeNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ASTNode getOperationTokenNode() {
|
||||||
|
PsiElement child = getReceiverExpression().getNextSibling();
|
||||||
|
|
||||||
|
while (child != null) {
|
||||||
|
IElementType tt = child.getNode().getElementType();
|
||||||
|
|
||||||
|
if (JetTokens.WHITE_SPACE_OR_COMMENT_BIT_SET.contains(tt) || child instanceof PsiErrorElement) {
|
||||||
|
child = child.getNextSibling();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return child.getNode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
@@ -15,4 +16,9 @@ public class JetReturnExpression extends JetExpression {
|
|||||||
public void accept(JetVisitor visitor) {
|
public void accept(JetVisitor visitor) {
|
||||||
visitor.visitReturnExpression(this);
|
visitor.visitReturnExpression(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public JetExpression getReturnedExpression() {
|
||||||
|
return findChildByClass(JetExpression.class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
@@ -15,4 +16,9 @@ public class JetThrowExpression extends JetExpression {
|
|||||||
public void accept(JetVisitor visitor) {
|
public void accept(JetVisitor visitor) {
|
||||||
visitor.visitThrowExpression(this);
|
visitor.visitThrowExpression(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public JetExpression getThrownExpression() {
|
||||||
|
return findChildByClass(JetExpression.class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,4 +15,10 @@ public class JetTryExpression extends JetExpression {
|
|||||||
public void accept(JetVisitor visitor) {
|
public void accept(JetVisitor visitor) {
|
||||||
visitor.visitTryExpression(this);
|
visitor.visitTryExpression(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public JetExpression getBody() {
|
||||||
|
return findChildByClass(JetExpression.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -241,4 +241,16 @@ public class JetVisitor extends PsiElementVisitor {
|
|||||||
public void visitRootNamespaceExpression(JetRootNamespaceExpression expression) {
|
public void visitRootNamespaceExpression(JetRootNamespaceExpression expression) {
|
||||||
visitExpression(expression);
|
visitExpression(expression);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void visitBlockExpression(JetBlockExpression expression) {
|
||||||
|
visitExpression(expression);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void visitCatchSection(JetCatchSection catchSection) {
|
||||||
|
visitJetElement(catchSection);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void visitFinallySection(JetFinallySection finallySection) {
|
||||||
|
visitJetElement(finallySection);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ 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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
@@ -15,4 +17,13 @@ public class JetWhileExpression extends JetExpression {
|
|||||||
public void accept(JetVisitor visitor) {
|
public void accept(JetVisitor visitor) {
|
||||||
visitor.visitWhileExpression(this);
|
visitor.visitWhileExpression(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public JetExpression getCondition() {
|
||||||
|
return findExpressionUnder(JetNodeTypes.CONDITION);
|
||||||
|
}
|
||||||
|
|
||||||
|
public JetExpression getBody() {
|
||||||
|
return findExpressionUnder(JetNodeTypes.THEN);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,4 +155,9 @@ public interface JetTokens {
|
|||||||
TokenSet WHITESPACES = TokenSet.create(TokenType.WHITE_SPACE);
|
TokenSet WHITESPACES = TokenSet.create(TokenType.WHITE_SPACE);
|
||||||
TokenSet COMMENTS = TokenSet.create(EOL_COMMENT, BLOCK_COMMENT, DOC_COMMENT);
|
TokenSet COMMENTS = TokenSet.create(EOL_COMMENT, BLOCK_COMMENT, DOC_COMMENT);
|
||||||
TokenSet STRINGS = TokenSet.create(CHARACTER_LITERAL, STRING_LITERAL, RAW_STRING_LITERAL);
|
TokenSet STRINGS = TokenSet.create(CHARACTER_LITERAL, STRING_LITERAL, RAW_STRING_LITERAL);
|
||||||
|
|
||||||
|
TokenSet OPERATIONS = TokenSet.create(AS_KEYWORD, IS_KEYWORD, IN_KEYWORD, DOT, PLUSPLUS, MINUSMINUS, MUL, PLUS,
|
||||||
|
MINUS, EXCL, DIV, PERC, LT, GT, LTEQ, GTEQ, EQEQEQ, ARROW, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR,
|
||||||
|
SAFE_ACCESS, ELVIS, MAP, FILTER, QUEST, COLON, SEMICOLON, RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ,
|
||||||
|
NOT_IN, NOT_IS, HASH, IDENTIFIER, MATCH_KEYWORD);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user