提交 de3ba203 编写于 作者: S Stepan Koltsov

test TypeParameterDescriptor index in ReadClassDataTest

(and fix index parsing)
上级 8055cf07
......@@ -376,11 +376,12 @@ public class JavaDescriptorResolver {
private final DeclarationDescriptor containingDeclaration;
private final PsiTypeParameterListOwner psiOwner;
private final String name;
private final int index;
private final TypeInfoVariance variance;
private final TypeVariableResolver typeVariableResolver;
protected JetSignatureTypeParameterVisitor(DeclarationDescriptor containingDeclaration, PsiTypeParameterListOwner psiOwner,
String name, TypeInfoVariance variance, TypeVariableResolver typeVariableResolver)
String name, int index, TypeInfoVariance variance, TypeVariableResolver typeVariableResolver)
{
if (name.isEmpty()) {
throw new IllegalStateException();
......@@ -389,12 +390,11 @@ public class JavaDescriptorResolver {
this.containingDeclaration = containingDeclaration;
this.psiOwner = psiOwner;
this.name = name;
this.index = index;
this.variance = variance;
this.typeVariableResolver = typeVariableResolver;
}
int index = 0;
List<JetType> upperBounds = new ArrayList<JetType>();
List<JetType> lowerBounds = new ArrayList<JetType>();
......@@ -429,7 +429,7 @@ public class JavaDescriptorResolver {
true, // TODO: wrong
JetSignatureUtils.translateVariance(variance),
name,
++index);
index);
PsiTypeParameter psiTypeParameter = getPsiTypeParameterByName(psiOwner, name);
typeParameterDescriptorCache.put(psiTypeParameter, new TypeParameterDescriptorInitialization(typeParameter, upperBounds, lowerBounds));
done(typeParameter);
......@@ -460,9 +460,11 @@ public class JavaDescriptorResolver {
}
new JetSignatureReader(jetSignature).accept(new JetSignatureExceptionsAdapter() {
private int formalTypeParameterIndex = 0;
@Override
public JetSignatureVisitor visitFormalTypeParameter(final String name, final TypeInfoVariance variance) {
return new JetSignatureTypeParameterVisitor(classDescriptor, clazz, name, variance, new MyTypeVariableResolver()) {
return new JetSignatureTypeParameterVisitor(classDescriptor, clazz, name, formalTypeParameterIndex++, variance, new MyTypeVariableResolver()) {
@Override
protected void done(TypeParameterDescriptor typeParameterDescriptor) {
r.add(typeParameterDescriptor);
......@@ -1314,10 +1316,12 @@ public class JavaDescriptorResolver {
}
new JetSignatureReader(jetSignature).acceptFormalTypeParametersOnly(new JetSignatureExceptionsAdapter() {
private int formalTypeParameterIndex = 0;
@Override
public JetSignatureVisitor visitFormalTypeParameter(final String name, final TypeInfoVariance variance) {
return new JetSignatureTypeParameterVisitor(functionDescriptor, method, name, variance, new MyTypeVariableResolver()) {
return new JetSignatureTypeParameterVisitor(functionDescriptor, method, name, formalTypeParameterIndex++, variance, new MyTypeVariableResolver()) {
@Override
protected void done(TypeParameterDescriptor typeParameterDescriptor) {
r.add(typeParameterDescriptor);
......
......@@ -42,6 +42,7 @@ public class TypeParameterDescriptor extends DeclarationDescriptorImpl implement
return new TypeParameterDescriptor(containingDeclaration, annotations, reified, variance, name, index);
}
// 0-based
private final int index;
private final Variance variance;
private final Set<JetType> upperBounds;
......
......@@ -446,6 +446,7 @@ public class ReadClassDataTest extends TestCaseWithTmpdir {
}
public void serialize(TypeParameterDescriptor param) {
sb.append("/*").append(param.getIndex()).append("*/ ");
serialize(param.getVariance());
sb.append(param.getName());
if (!param.getUpperBounds().isEmpty()) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册