move jet signature read/write utils into stdlib module

This commit is contained in:
Stepan Koltsov
2011-12-14 19:07:49 +04:00
committed by Nikolay Krasko
parent 8136547c4c
commit 789e6f3fc6
7 changed files with 35 additions and 31 deletions
@@ -1,10 +1,11 @@
package org.jetbrains.jet.codegen; package org.jetbrains.jet.codegen;
import jet.typeinfo.TypeInfoVariance;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.resolve.java.signature.JetSignatureAdapter; import jet.typeinfo.internal.signature.JetSignatureAdapter;
import org.jetbrains.jet.lang.resolve.java.signature.JetSignatureReader; import jet.typeinfo.internal.signature.JetSignatureReader;
import org.jetbrains.jet.lang.resolve.java.signature.JetSignatureWriter; import jet.typeinfo.internal.signature.JetSignatureWriter;
import org.jetbrains.jet.lang.types.Variance; import org.jetbrains.jet.lang.types.Variance;
import org.objectweb.asm.Type; import org.objectweb.asm.Type;
import org.objectweb.asm.signature.SignatureVisitor; import org.objectweb.asm.signature.SignatureVisitor;
@@ -183,11 +184,20 @@ public class BothSignatureWriter {
jetSignatureWriter.visitTypeVariable(name, nullable); jetSignatureWriter.visitTypeVariable(name, nullable);
} }
private TypeInfoVariance translateVariance(Variance variance) {
switch (variance) {
case IN_VARIANCE: return TypeInfoVariance.IN;
case OUT_VARIANCE: return TypeInfoVariance.OUT;
case INVARIANT: return TypeInfoVariance.INVARIANT;
default: throw new IllegalStateException();
}
}
public void writeFormalTypeParameter(final String name, Variance variance) { public void writeFormalTypeParameter(final String name, Variance variance) {
checkTopLevel(); checkTopLevel();
signatureVisitor().visitFormalTypeParameter(name); signatureVisitor().visitFormalTypeParameter(name);
jetSignatureWriter.visitFormalTypeParameter(name, variance); jetSignatureWriter.visitFormalTypeParameter(name, translateVariance(variance));
} }
public void writerFormalTypeParametersStart() { public void writerFormalTypeParametersStart() {
@@ -2,12 +2,11 @@ package org.jetbrains.jet.lang.resolve.java;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.intellij.psi.*; import com.intellij.psi.*;
import jet.typeinfo.internal.signature.JetSignatureReader;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
import org.jetbrains.jet.lang.resolve.java.signature.JetSignatureReader;
import org.jetbrains.jet.lang.resolve.java.signature.JetSignatureVisitor;
import org.jetbrains.jet.lang.types.*; import org.jetbrains.jet.lang.types.*;
import java.util.Collections; import java.util.Collections;
@@ -1,11 +1,10 @@
package org.jetbrains.jet.lang.resolve.java; package org.jetbrains.jet.lang.resolve.java;
import jet.typeinfo.TypeInfoVariance;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.resolve.java.signature.JetSignatureReader; import jet.typeinfo.internal.signature.JetSignatureVisitor;
import org.jetbrains.jet.lang.resolve.java.signature.JetSignatureVisitor;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.types.ErrorUtils; import org.jetbrains.jet.lang.types.ErrorUtils;
import org.jetbrains.jet.lang.types.JetStandardClasses; import org.jetbrains.jet.lang.types.JetStandardClasses;
import org.jetbrains.jet.lang.types.JetStandardLibrary; import org.jetbrains.jet.lang.types.JetStandardLibrary;
@@ -34,7 +33,7 @@ public abstract class JetTypeJetSignatureReader implements JetSignatureVisitor {
@Override @Override
public void visitFormalTypeParameter(String name, Variance variance) { public void visitFormalTypeParameter(String name, TypeInfoVariance variance) {
throw new IllegalStateException(); throw new IllegalStateException();
} }
@@ -1,13 +1,13 @@
package org.jetbrains.jet.lang.resolve.java.signature; package jet.typeinfo.internal.signature;
import org.jetbrains.jet.lang.types.Variance; import jet.typeinfo.TypeInfoVariance;
/** /**
* @author Stepan Koltsov * @author Stepan Koltsov
*/ */
public class JetSignatureAdapter implements JetSignatureVisitor { public class JetSignatureAdapter implements JetSignatureVisitor {
@Override @Override
public void visitFormalTypeParameter(String name, Variance variance) { public void visitFormalTypeParameter(String name, TypeInfoVariance variance) {
} }
@Override @Override
@@ -1,8 +1,6 @@
package org.jetbrains.jet.lang.resolve.java.signature; package jet.typeinfo.internal.signature;
import org.jetbrains.jet.lang.types.Variance; import jet.typeinfo.TypeInfoVariance;
import org.objectweb.asm.signature.SignatureReader;
import org.objectweb.asm.signature.SignatureVisitor;
/** /**
* @author Stepan Koltsov * @author Stepan Koltsov
@@ -27,15 +25,15 @@ public class JetSignatureReader {
if (signature.charAt(0) == '<') { if (signature.charAt(0) == '<') {
pos = 2; pos = 2;
do { do {
Variance variance; TypeInfoVariance variance;
if (signature.substring(pos).startsWith("in ")) { if (signature.substring(pos).startsWith("in ")) {
variance = Variance.IN_VARIANCE; variance = TypeInfoVariance.IN;
pos += "in ".length(); pos += "in ".length();
} else if (signature.substring(pos).startsWith("out ")) { } else if (signature.substring(pos).startsWith("out ")) {
variance = Variance.OUT_VARIANCE; variance = TypeInfoVariance.OUT;
pos += "out ".length(); pos += "out ".length();
} else { } else {
variance = Variance.INVARIANT; variance = TypeInfoVariance.INVARIANT;
pos += "".length(); pos += "".length();
} }
int end = signature.indexOf(':', pos); int end = signature.indexOf(':', pos);
@@ -1,7 +1,6 @@
package org.jetbrains.jet.lang.resolve.java.signature; package jet.typeinfo.internal.signature;
import org.jetbrains.jet.lang.types.Variance; import jet.typeinfo.TypeInfoVariance;
import org.objectweb.asm.signature.SignatureVisitor;
/** /**
* @author Stepan Koltsov * @author Stepan Koltsov
@@ -31,7 +30,7 @@ public interface JetSignatureVisitor {
* *
* @param name the name of the formal parameter. * @param name the name of the formal parameter.
*/ */
void visitFormalTypeParameter(String name, Variance variance); void visitFormalTypeParameter(String name, TypeInfoVariance variance);
/** /**
* Visits the class bound of the last visited formal type parameter. * Visits the class bound of the last visited formal type parameter.
@@ -1,7 +1,6 @@
package org.jetbrains.jet.lang.resolve.java.signature; package jet.typeinfo.internal.signature;
import org.jetbrains.jet.lang.types.Variance; import jet.typeinfo.TypeInfoVariance;
import org.objectweb.asm.signature.SignatureWriter;
/** /**
* @author Stepan Koltsov * @author Stepan Koltsov
@@ -44,16 +43,16 @@ public class JetSignatureWriter implements JetSignatureVisitor {
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
@Override @Override
public void visitFormalTypeParameter(final String name, Variance variance) { public void visitFormalTypeParameter(final String name, TypeInfoVariance variance) {
if (!hasFormals) { if (!hasFormals) {
hasFormals = true; hasFormals = true;
buf.append('<'); buf.append('<');
} }
switch (variance) { switch (variance) {
case OUT_VARIANCE: case OUT:
buf.append("out "); buf.append("out ");
break; break;
case IN_VARIANCE: case IN:
buf.append("in "); buf.append("in ");
break; break;
case INVARIANT: case INVARIANT: