ReadKotlinBinaryClassTest: List<*>
This commit is contained in:
@@ -1,17 +1,21 @@
|
||||
package jet.typeinfo;
|
||||
|
||||
import org.jetbrains.jet.rt.signature.JetSignatureVariance;
|
||||
|
||||
/**
|
||||
* @author alex.tkachman
|
||||
*/
|
||||
public enum TypeInfoVariance {
|
||||
INVARIANT("") ,
|
||||
IN("in"),
|
||||
OUT("out");
|
||||
INVARIANT("", JetSignatureVariance.INVARIANT) ,
|
||||
IN("in", JetSignatureVariance.IN),
|
||||
OUT("out", JetSignatureVariance.OUT);
|
||||
|
||||
private final String label;
|
||||
private final JetSignatureVariance variance;
|
||||
|
||||
TypeInfoVariance(String label) {
|
||||
TypeInfoVariance(String label, JetSignatureVariance variance) {
|
||||
this.label = label;
|
||||
this.variance = variance;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import jet.typeinfo.TypeInfoProjection;
|
||||
import jet.typeinfo.TypeInfoVariance;
|
||||
import org.jetbrains.jet.rt.signature.JetSignatureExceptionsAdapter;
|
||||
import org.jetbrains.jet.rt.signature.JetSignatureReader;
|
||||
import org.jetbrains.jet.rt.signature.JetSignatureVariance;
|
||||
import org.jetbrains.jet.rt.signature.JetSignatureVisitor;
|
||||
|
||||
import java.lang.reflect.TypeVariable;
|
||||
@@ -176,17 +177,17 @@ class TypeInfoParser {
|
||||
this.projections = new ArrayList<TypeInfoProjection>();
|
||||
}
|
||||
|
||||
private static TypeInfoVariance parseVariance(char wildcard) {
|
||||
switch (wildcard) {
|
||||
case '=': return TypeInfoVariance.INVARIANT;
|
||||
case '+': return TypeInfoVariance.OUT;
|
||||
case '-': return TypeInfoVariance.IN;
|
||||
private static TypeInfoVariance parseVariance(JetSignatureVariance variance) {
|
||||
switch (variance) {
|
||||
case INVARIANT: return TypeInfoVariance.INVARIANT;
|
||||
case OUT: return TypeInfoVariance.OUT;
|
||||
case IN: return TypeInfoVariance.IN;
|
||||
default: throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public JetSignatureVisitor visitTypeArgument(final char wildcard) {
|
||||
public JetSignatureVisitor visitTypeArgument(final JetSignatureVariance wildcard) {
|
||||
final TypeInfoVariance variance = parseVariance(wildcard);
|
||||
return new SignatureParserJetSignatureAdapter(classLoader, signature) {
|
||||
@Override
|
||||
|
||||
@@ -76,7 +76,7 @@ public class JetSignatureAdapter implements JetSignatureVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public JetSignatureVisitor visitTypeArgument(char wildcard) {
|
||||
public JetSignatureVisitor visitTypeArgument(JetSignatureVariance wildcard) {
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ public class JetSignatureExceptionsAdapter implements JetSignatureVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public JetSignatureVisitor visitTypeArgument(char wildcard) {
|
||||
public JetSignatureVisitor visitTypeArgument(JetSignatureVariance wildcard) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
|
||||
@@ -194,12 +194,12 @@ public class JetSignatureReader {
|
||||
case '-':
|
||||
pos = parseType(signature,
|
||||
pos + 1,
|
||||
v.visitTypeArgument(c));
|
||||
v.visitTypeArgument(JetSignatureVariance.parseVariance(c)));
|
||||
break;
|
||||
default:
|
||||
pos = parseType(signature,
|
||||
pos,
|
||||
v.visitTypeArgument('='));
|
||||
v.visitTypeArgument(JetSignatureVariance.INVARIANT));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package org.jetbrains.jet.rt.signature;
|
||||
|
||||
/**
|
||||
* @author Stepan Koltsov
|
||||
*/
|
||||
public enum JetSignatureVariance {
|
||||
INVARIANT('='),
|
||||
IN('-'),
|
||||
OUT('+'),
|
||||
;
|
||||
|
||||
private final char c;
|
||||
|
||||
private JetSignatureVariance(char c) {
|
||||
this.c = c;
|
||||
}
|
||||
|
||||
public char getC() {
|
||||
return c;
|
||||
}
|
||||
|
||||
public static JetSignatureVariance parseVariance(char c) {
|
||||
switch (c) {
|
||||
case '=': return INVARIANT;
|
||||
case '+': return OUT;
|
||||
case '-': return IN;
|
||||
default: throw new IllegalStateException();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -134,7 +134,7 @@ public interface JetSignatureVisitor {
|
||||
* @param wildcard '+', '-' or '='.
|
||||
* @return a non null visitor to visit the signature of the type argument.
|
||||
*/
|
||||
JetSignatureVisitor visitTypeArgument(char wildcard);
|
||||
JetSignatureVisitor visitTypeArgument(JetSignatureVariance wildcard);
|
||||
|
||||
/**
|
||||
* Ends the visit of a signature corresponding to a class or interface type.
|
||||
|
||||
@@ -171,13 +171,13 @@ public class JetSignatureWriter implements JetSignatureVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public JetSignatureWriter visitTypeArgument(final char wildcard) {
|
||||
public JetSignatureWriter visitTypeArgument(JetSignatureVariance variance) {
|
||||
if (argumentStack % 2 == 0) {
|
||||
++argumentStack;
|
||||
buf.append('<');
|
||||
}
|
||||
if (wildcard != '=') {
|
||||
buf.append(wildcard);
|
||||
if (variance.getC() != '=') {
|
||||
buf.append(variance.getC());
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user