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;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lexer.JetSingleValueToken;
import org.jetbrains.jet.lexer.JetTokens;
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.psi.PsiElement;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.stubs.PsiJetTypeProjectionStub;
@@ -42,12 +43,12 @@ public class JetTypeProjection extends JetModifierListOwnerStub<PsiJetTypeProjec
}
ASTNode projectionNode = getProjectionNode();
if (projectionNode == null) return JetProjectionKind.NONE;
if (projectionNode.getElementType() == JetTokens.IN_KEYWORD) return JetProjectionKind.IN;
if (projectionNode.getElementType() == JetTokens.OUT_KEYWORD) return JetProjectionKind.OUT;
if (projectionNode.getElementType() == JetTokens.MUL) return JetProjectionKind.STAR;
IElementType token = projectionNode != null ? projectionNode.getElementType() : null;
for (JetProjectionKind projectionKind : JetProjectionKind.values()) {
if (projectionKind.getToken() == token) {
return projectionKind;
}
}
throw new IllegalStateException(projectionNode.getText());
}