test TypeParameterDescriptor index in ReadClassDataTest
(and fix index parsing)
This commit is contained in:
+10
-6
@@ -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()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user