test TypeParameterDescriptor index in ReadClassDataTest

(and fix index parsing)
This commit is contained in:
Stepan Koltsov
2012-01-13 03:55:12 +04:00
parent 8055cf0704
commit de3ba203a6
3 changed files with 12 additions and 6 deletions
@@ -376,11 +376,12 @@ public class JavaDescriptorResolver {
private final DeclarationDescriptor containingDeclaration; private final DeclarationDescriptor containingDeclaration;
private final PsiTypeParameterListOwner psiOwner; private final PsiTypeParameterListOwner psiOwner;
private final String name; private final String name;
private final int index;
private final TypeInfoVariance variance; private final TypeInfoVariance variance;
private final TypeVariableResolver typeVariableResolver; private final TypeVariableResolver typeVariableResolver;
protected JetSignatureTypeParameterVisitor(DeclarationDescriptor containingDeclaration, PsiTypeParameterListOwner psiOwner, protected JetSignatureTypeParameterVisitor(DeclarationDescriptor containingDeclaration, PsiTypeParameterListOwner psiOwner,
String name, TypeInfoVariance variance, TypeVariableResolver typeVariableResolver) String name, int index, TypeInfoVariance variance, TypeVariableResolver typeVariableResolver)
{ {
if (name.isEmpty()) { if (name.isEmpty()) {
throw new IllegalStateException(); throw new IllegalStateException();
@@ -389,12 +390,11 @@ public class JavaDescriptorResolver {
this.containingDeclaration = containingDeclaration; this.containingDeclaration = containingDeclaration;
this.psiOwner = psiOwner; this.psiOwner = psiOwner;
this.name = name; this.name = name;
this.index = index;
this.variance = variance; this.variance = variance;
this.typeVariableResolver = typeVariableResolver; this.typeVariableResolver = typeVariableResolver;
} }
int index = 0;
List<JetType> upperBounds = new ArrayList<JetType>(); List<JetType> upperBounds = new ArrayList<JetType>();
List<JetType> lowerBounds = new ArrayList<JetType>(); List<JetType> lowerBounds = new ArrayList<JetType>();
@@ -429,7 +429,7 @@ public class JavaDescriptorResolver {
true, // TODO: wrong true, // TODO: wrong
JetSignatureUtils.translateVariance(variance), JetSignatureUtils.translateVariance(variance),
name, name,
++index); index);
PsiTypeParameter psiTypeParameter = getPsiTypeParameterByName(psiOwner, name); PsiTypeParameter psiTypeParameter = getPsiTypeParameterByName(psiOwner, name);
typeParameterDescriptorCache.put(psiTypeParameter, new TypeParameterDescriptorInitialization(typeParameter, upperBounds, lowerBounds)); typeParameterDescriptorCache.put(psiTypeParameter, new TypeParameterDescriptorInitialization(typeParameter, upperBounds, lowerBounds));
done(typeParameter); done(typeParameter);
@@ -460,9 +460,11 @@ public class JavaDescriptorResolver {
} }
new JetSignatureReader(jetSignature).accept(new JetSignatureExceptionsAdapter() { new JetSignatureReader(jetSignature).accept(new JetSignatureExceptionsAdapter() {
private int formalTypeParameterIndex = 0;
@Override @Override
public JetSignatureVisitor visitFormalTypeParameter(final String name, final TypeInfoVariance variance) { 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 @Override
protected void done(TypeParameterDescriptor typeParameterDescriptor) { protected void done(TypeParameterDescriptor typeParameterDescriptor) {
r.add(typeParameterDescriptor); r.add(typeParameterDescriptor);
@@ -1314,10 +1316,12 @@ public class JavaDescriptorResolver {
} }
new JetSignatureReader(jetSignature).acceptFormalTypeParametersOnly(new JetSignatureExceptionsAdapter() { new JetSignatureReader(jetSignature).acceptFormalTypeParametersOnly(new JetSignatureExceptionsAdapter() {
private int formalTypeParameterIndex = 0;
@Override @Override
public JetSignatureVisitor visitFormalTypeParameter(final String name, final TypeInfoVariance variance) { 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 @Override
protected void done(TypeParameterDescriptor typeParameterDescriptor) { protected void done(TypeParameterDescriptor typeParameterDescriptor) {
r.add(typeParameterDescriptor); r.add(typeParameterDescriptor);
@@ -42,6 +42,7 @@ public class TypeParameterDescriptor extends DeclarationDescriptorImpl implement
return new TypeParameterDescriptor(containingDeclaration, annotations, reified, variance, name, index); return new TypeParameterDescriptor(containingDeclaration, annotations, reified, variance, name, index);
} }
// 0-based
private final int index; private final int index;
private final Variance variance; private final Variance variance;
private final Set<JetType> upperBounds; private final Set<JetType> upperBounds;
@@ -446,6 +446,7 @@ public class ReadClassDataTest extends TestCaseWithTmpdir {
} }
public void serialize(TypeParameterDescriptor param) { public void serialize(TypeParameterDescriptor param) {
sb.append("/*").append(param.getIndex()).append("*/ ");
serialize(param.getVariance()); serialize(param.getVariance());
sb.append(param.getName()); sb.append(param.getName());
if (!param.getUpperBounds().isEmpty()) { if (!param.getUpperBounds().isEmpty()) {