fix ValueParameterDescriptor.index read from class files

(ReadClassDataTest now also checks for indices)
This commit is contained in:
Stepan Koltsov
2012-01-12 01:25:39 +04:00
parent 5e11003ea3
commit 6198fb90f3
2 changed files with 7 additions and 1 deletions
@@ -637,17 +637,20 @@ public class JavaDescriptorResolver {
PsiParameter[] parameters, TypeVariableResolver typeVariableResolver) {
List<ValueParameterDescriptor> result = new ArrayList<ValueParameterDescriptor>();
JetType receiverType = null;
int indexDelta = 0;
for (int i = 0, parametersLength = parameters.length; i < parametersLength; i++) {
PsiParameter parameter = parameters[i];
JvmMethodParameterMeaning meaning = resolveParameterDescriptor(containingDeclaration, i, parameter, typeVariableResolver);
JvmMethodParameterMeaning meaning = resolveParameterDescriptor(containingDeclaration, i + indexDelta, parameter, typeVariableResolver);
if (meaning.kind == JvmMethodParameterKind.TYPE_INFO) {
// TODO
--indexDelta;
} else if (meaning.kind == JvmMethodParameterKind.REGULAR) {
result.add(meaning.valueParameterDescriptor);
} else if (meaning.kind == JvmMethodParameterKind.RECEIVER) {
if (receiverType != null) {
throw new IllegalStateException("more then one receiver");
}
--indexDelta;
receiverType = meaning.receiverType;
}
}