dummy implementation of method type parameters reader and refactoring
This commit is contained in:
committed by
Nikolay Krasko
parent
778fa2ed63
commit
eff7903b56
@@ -22,6 +22,12 @@ public @interface JetMethod {
|
||||
*/
|
||||
JetTypeProjection[] returnTypeProjections() default {};
|
||||
|
||||
/**
|
||||
* Serialized method type parameters.
|
||||
* @return
|
||||
*/
|
||||
String typeParameters() default "";
|
||||
|
||||
/**
|
||||
* @return is this type returnTypeNullable
|
||||
*/
|
||||
|
||||
@@ -71,52 +71,56 @@ class TypeInfoParser {
|
||||
signature.varNames = new HashMap<String, Integer>();
|
||||
signature.superTypes = new ArrayList<TypeInfo>();
|
||||
new JetSignatureReader(annotationValue).accept(new JetSignatureExceptionsAdapter() {
|
||||
int varIndex = 0;
|
||||
|
||||
@Override
|
||||
public void visitFormalTypeParameter(String name, final TypeInfoVariance variance) {
|
||||
public JetSignatureVisitor visitFormalTypeParameter(final String name, final TypeInfoVariance variance) {
|
||||
|
||||
final TypeInfoVar typeInfoVar = new TypeInfoVar(signature, signature.variables.size());
|
||||
|
||||
signature.varNames.put(name, signature.variables.size());
|
||||
TypeInfoProjection typeInfoProjection = new TypeInfoProjection() {
|
||||
@Override
|
||||
public TypeInfoVariance getVariance() {
|
||||
return variance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypeInfo getType() {
|
||||
return typeInfoVar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return typeInfoVar.toString();
|
||||
}
|
||||
};
|
||||
|
||||
signature.variables.add(typeInfoProjection);
|
||||
// TODO: supers
|
||||
// TODO: nullability
|
||||
}
|
||||
|
||||
@Override
|
||||
public JetSignatureVisitor visitClassBound() {
|
||||
return new SignatureParserJetSignatureAdapter(signature.klazz.getClassLoader(), signature) {
|
||||
return new JetSignatureExceptionsAdapter() {
|
||||
@Override
|
||||
protected void done(TypeInfo typeInfo) {
|
||||
// TODO
|
||||
public JetSignatureVisitor visitClassBound() {
|
||||
return new SignatureParserJetSignatureAdapter(signature.klazz.getClassLoader(), signature) {
|
||||
@Override
|
||||
protected void done(TypeInfo typeInfo) {
|
||||
// TODO
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public JetSignatureVisitor visitInterfaceBound() {
|
||||
return new SignatureParserJetSignatureAdapter(signature.klazz.getClassLoader(), signature) {
|
||||
@Override
|
||||
protected void done(TypeInfo typeInfo) {
|
||||
// TODO
|
||||
public JetSignatureVisitor visitInterfaceBound() {
|
||||
return new SignatureParserJetSignatureAdapter(signature.klazz.getClassLoader(), signature) {
|
||||
@Override
|
||||
protected void done(TypeInfo typeInfo) {
|
||||
// TODO
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitFormalTypeParameterEnd() {
|
||||
final TypeInfoVar typeInfoVar = new TypeInfoVar(signature, signature.variables.size());
|
||||
|
||||
signature.varNames.put(name, signature.variables.size());
|
||||
TypeInfoProjection typeInfoProjection = new TypeInfoProjection() {
|
||||
@Override
|
||||
public TypeInfoVariance getVariance() {
|
||||
return variance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypeInfo getType() {
|
||||
return typeInfoVar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return typeInfoVar.toString();
|
||||
}
|
||||
};
|
||||
|
||||
signature.variables.add(typeInfoProjection);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -7,7 +7,12 @@ import jet.typeinfo.TypeInfoVariance;
|
||||
*/
|
||||
public class JetSignatureAdapter implements JetSignatureVisitor {
|
||||
@Override
|
||||
public void visitFormalTypeParameter(String name, TypeInfoVariance variance) {
|
||||
public JetSignatureVisitor visitFormalTypeParameter(String name, TypeInfoVariance variance) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitFormalTypeParameterEnd() {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -7,7 +7,12 @@ import jet.typeinfo.TypeInfoVariance;
|
||||
*/
|
||||
public class JetSignatureExceptionsAdapter implements JetSignatureVisitor {
|
||||
@Override
|
||||
public void visitFormalTypeParameter(String name, TypeInfoVariance variance) {
|
||||
public JetSignatureVisitor visitFormalTypeParameter(String name, TypeInfoVariance variance) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitFormalTypeParameterEnd() {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
|
||||
@@ -59,17 +59,19 @@ public class JetSignatureReader {
|
||||
if (end < 0) {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
v.visitFormalTypeParameter(signature.substring(pos, end), variance);
|
||||
JetSignatureVisitor parameterVisitor = v.visitFormalTypeParameter(signature.substring(pos, end), variance);
|
||||
pos = end + 1;
|
||||
|
||||
c = signature.charAt(pos);
|
||||
if (c == 'L' || c == '[' || c == 'T' || c == '?') {
|
||||
pos = parseType(signature, pos, v.visitClassBound());
|
||||
pos = parseType(signature, pos, parameterVisitor.visitClassBound());
|
||||
}
|
||||
|
||||
while ((c = signature.charAt(pos++)) == ':') {
|
||||
pos = parseType(signature, pos, v.visitInterfaceBound());
|
||||
pos = parseType(signature, pos, parameterVisitor.visitInterfaceBound());
|
||||
}
|
||||
|
||||
parameterVisitor.visitFormalTypeParameterEnd();
|
||||
} while (c != '>');
|
||||
} else {
|
||||
pos = 0;
|
||||
|
||||
@@ -30,7 +30,9 @@ public interface JetSignatureVisitor {
|
||||
*
|
||||
* @param name the name of the formal parameter.
|
||||
*/
|
||||
void visitFormalTypeParameter(String name, TypeInfoVariance variance);
|
||||
JetSignatureVisitor visitFormalTypeParameter(String name, TypeInfoVariance variance);
|
||||
|
||||
void visitFormalTypeParameterEnd();
|
||||
|
||||
/**
|
||||
* Visits the class bound of the last visited formal type parameter.
|
||||
|
||||
@@ -43,7 +43,7 @@ public class JetSignatureWriter implements JetSignatureVisitor {
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public void visitFormalTypeParameter(final String name, TypeInfoVariance variance) {
|
||||
public JetSignatureVisitor visitFormalTypeParameter(final String name, TypeInfoVariance variance) {
|
||||
if (!hasFormals) {
|
||||
hasFormals = true;
|
||||
buf.append('<');
|
||||
@@ -62,6 +62,11 @@ public class JetSignatureWriter implements JetSignatureVisitor {
|
||||
}
|
||||
buf.append(name);
|
||||
buf.append(':');
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitFormalTypeParameterEnd() {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user