Refactor: Store token in JetProjectionKind

This commit is contained in:
Pavel V. Talanov
2014-04-23 17:18:17 +04:00
parent bf20377759
commit 69890bd6ec
2 changed files with 24 additions and 7 deletions
@@ -16,6 +16,22 @@
package org.jetbrains.jet.lang.psi; package org.jetbrains.jet.lang.psi;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lexer.JetSingleValueToken;
import org.jetbrains.jet.lexer.JetTokens;
public enum JetProjectionKind { public enum JetProjectionKind {
IN, OUT, STAR, NONE; IN(JetTokens.IN_KEYWORD), OUT(JetTokens.OUT_KEYWORD), STAR(JetTokens.MUL), NONE(null);
@Nullable
private final JetSingleValueToken token;
JetProjectionKind(@Nullable JetSingleValueToken token) {
this.token = token;
}
@Nullable
public JetSingleValueToken getToken() {
return token;
}
} }
@@ -18,6 +18,7 @@ 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.tree.IElementType;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.stubs.PsiJetTypeProjectionStub; import org.jetbrains.jet.lang.psi.stubs.PsiJetTypeProjectionStub;
@@ -42,12 +43,12 @@ public class JetTypeProjection extends JetModifierListOwnerStub<PsiJetTypeProjec
} }
ASTNode projectionNode = getProjectionNode(); ASTNode projectionNode = getProjectionNode();
if (projectionNode == null) return JetProjectionKind.NONE; IElementType token = projectionNode != null ? projectionNode.getElementType() : null;
for (JetProjectionKind projectionKind : JetProjectionKind.values()) {
if (projectionNode.getElementType() == JetTokens.IN_KEYWORD) return JetProjectionKind.IN; if (projectionKind.getToken() == token) {
if (projectionNode.getElementType() == JetTokens.OUT_KEYWORD) return JetProjectionKind.OUT; return projectionKind;
if (projectionNode.getElementType() == JetTokens.MUL) return JetProjectionKind.STAR; }
}
throw new IllegalStateException(projectionNode.getText()); throw new IllegalStateException(projectionNode.getText());
} }