type parameter variance and bound

This commit is contained in:
Maxim Shafirov
2011-01-10 17:11:30 +03:00
parent 194499c22c
commit 7727f38d0e
2 changed files with 28 additions and 0 deletions
@@ -2,6 +2,9 @@ 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 org.jetbrains.jet.lexer.JetTokens;
/**
* @author max
@@ -15,4 +18,19 @@ public class JetTypeParameter extends JetNamedDeclaration {
public void accept(JetVisitor visitor) {
visitor.visitTypeParameter(this);
}
@NotNull
public Variance getVariance() {
JetModifierList modifierList = getModifierList();
if (modifierList == null) return Variance.INVARIANT;
if (modifierList.hasModifier(JetTokens.OUT_KEYWORD)) return Variance.OUT_VARIANCE;
if (modifierList.hasModifier(JetTokens.IN_KEYWORD)) return Variance.IN_VARIANCE;
return Variance.INVARIANT;
}
@Nullable
public JetTypeReference getExtendsBound() {
return (JetTypeReference) findChildByType(JetNodeTypes.TYPE_REFERENCE);
}
}
@@ -0,0 +1,10 @@
package org.jetbrains.jet.lang.psi;
/**
* @author max
*/
public enum Variance {
INVARIANT,
IN_VARIANCE,
OUT_VARIANCE
}