type parameter variance and bound
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user