Saving and loading projection kind of array element type in bytecode.
This commit is contained in:
@@ -75,7 +75,7 @@ public class JetSignatureAdapter implements JetSignatureVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public JetSignatureVisitor visitArrayType(boolean nullable) {
|
||||
public JetSignatureVisitor visitArrayType(boolean nullable, JetSignatureVariance wildcard) {
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ public class JetSignatureExceptionsAdapter implements JetSignatureVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public JetSignatureVisitor visitArrayType(boolean nullable) {
|
||||
public JetSignatureVisitor visitArrayType(boolean nullable, JetSignatureVariance wildcard) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
|
||||
@@ -172,7 +172,13 @@ public class JetSignatureReader {
|
||||
return pos;
|
||||
|
||||
case '[':
|
||||
return parseType(signature, pos, v.visitArrayType(nullable));
|
||||
switch (c = signature.charAt(pos)) {
|
||||
case '+':
|
||||
case '-':
|
||||
return parseType(signature, pos + 1, v.visitArrayType(nullable, JetSignatureVariance.parseVariance(c)));
|
||||
default:
|
||||
return parseType(signature, pos, v.visitArrayType(nullable, JetSignatureVariance.INVARIANT));
|
||||
}
|
||||
|
||||
case 'T':
|
||||
end = signature.indexOf(';', pos);
|
||||
|
||||
@@ -123,7 +123,7 @@ public interface JetSignatureVisitor {
|
||||
* @return a non null visitor to visit the signature of the array element
|
||||
* type.
|
||||
*/
|
||||
JetSignatureVisitor visitArrayType(boolean nullable);
|
||||
JetSignatureVisitor visitArrayType(boolean nullable, JetSignatureVariance wildcard);
|
||||
|
||||
/**
|
||||
* Starts the visit of a signature corresponding to a class or interface
|
||||
|
||||
@@ -157,9 +157,12 @@ public class JetSignatureWriter implements JetSignatureVisitor {
|
||||
}
|
||||
|
||||
@Override
|
||||
public JetSignatureWriter visitArrayType(boolean nullable) {
|
||||
public JetSignatureWriter visitArrayType(boolean nullable, JetSignatureVariance wildcard) {
|
||||
visitNullabe(nullable);
|
||||
buf.append('[');
|
||||
if (wildcard != JetSignatureVariance.INVARIANT) {
|
||||
buf.append(wildcard.getC());
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -195,7 +198,7 @@ public class JetSignatureWriter implements JetSignatureVisitor {
|
||||
++argumentStack;
|
||||
buf.append('<');
|
||||
}
|
||||
if (variance.getC() != '=') {
|
||||
if (variance != JetSignatureVariance.INVARIANT) {
|
||||
buf.append(variance.getC());
|
||||
}
|
||||
return this;
|
||||
|
||||
Reference in New Issue
Block a user