Saving and loading projection kind of array element type in bytecode.
This commit is contained in:
@@ -166,7 +166,7 @@ public class BothSignatureWriter {
|
||||
writeClassEnd();
|
||||
return;
|
||||
case Type.ARRAY:
|
||||
writeArrayType(nullable);
|
||||
writeArrayType(nullable, Variance.INVARIANT);
|
||||
writeAsmType(asmType.getElementType(), false, kotlinTypeName);
|
||||
writeArrayEnd();
|
||||
return;
|
||||
@@ -235,9 +235,9 @@ public class BothSignatureWriter {
|
||||
jetSignatureWriter.visitEnd();
|
||||
}
|
||||
|
||||
public void writeArrayType(boolean nullable) {
|
||||
public void writeArrayType(boolean nullable, Variance projectionKind) {
|
||||
push(signatureVisitor().visitArrayType());
|
||||
jetSignatureWriter.visitArrayType(nullable);
|
||||
jetSignatureWriter.visitArrayType(nullable, toJetSignatureVariance(projectionKind));
|
||||
if (jvmCurrentType == null) {
|
||||
++jvmCurrentTypeArrayLevel;
|
||||
}
|
||||
|
||||
@@ -266,10 +266,11 @@ public class JetTypeMapper extends BindingTraceAware {
|
||||
if (jetType.getArguments().size() != 1) {
|
||||
throw new UnsupportedOperationException("arrays must have one type argument");
|
||||
}
|
||||
JetType memberType = jetType.getArguments().get(0).getType();
|
||||
TypeProjection memberProjection = jetType.getArguments().get(0);
|
||||
JetType memberType = memberProjection.getType();
|
||||
|
||||
if (signatureVisitor != null) {
|
||||
signatureVisitor.writeArrayType(jetType.isNullable());
|
||||
signatureVisitor.writeArrayType(jetType.isNullable(), memberProjection.getProjectionKind());
|
||||
mapType(memberType, signatureVisitor, JetTypeMapperMode.TYPE_PARAMETER);
|
||||
signatureVisitor.writeArrayEnd();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user