From de3ba203a6a3ceb496c716f863e3458570ede340 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Fri, 13 Jan 2012 03:55:12 +0400 Subject: [PATCH] test TypeParameterDescriptor index in ReadClassDataTest (and fix index parsing) --- .../resolve/java/JavaDescriptorResolver.java | 16 ++++++++++------ .../descriptors/TypeParameterDescriptor.java | 1 + .../org/jetbrains/jet/ReadClassDataTest.java | 1 + 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index d5379cf073e..24820c7a34d 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -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 upperBounds = new ArrayList(); List lowerBounds = new ArrayList(); @@ -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); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/TypeParameterDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/TypeParameterDescriptor.java index 96fec12666b..dd01df6d884 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/TypeParameterDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/TypeParameterDescriptor.java @@ -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 upperBounds; diff --git a/compiler/tests/org/jetbrains/jet/ReadClassDataTest.java b/compiler/tests/org/jetbrains/jet/ReadClassDataTest.java index 321088d3fcd..247c4a68796 100644 --- a/compiler/tests/org/jetbrains/jet/ReadClassDataTest.java +++ b/compiler/tests/org/jetbrains/jet/ReadClassDataTest.java @@ -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()) {