Fix value parameter indeices for function literals with receivers

This commit is contained in:
Andrey Breslav
2012-02-09 16:00:29 +04:00
parent 255e37efb9
commit b7f5490b4c
2 changed files with 4 additions and 3 deletions
@@ -76,8 +76,9 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorImpl i
for (int i = 0; i < unsubstitutedValueParameters.size(); ++i) {
// TODO fill me
int firstValueParameterOffset = 0; // receiver.exists() ? 1 : 0;
if (unsubstitutedValueParameters.get(i).getIndex() != i + firstValueParameterOffset) {
//throw new IllegalStateException();
ValueParameterDescriptor valueParameterDescriptor = unsubstitutedValueParameters.get(i);
if (valueParameterDescriptor.getIndex() != i + firstValueParameterOffset) {
throw new IllegalStateException(valueParameterDescriptor + "index is " + valueParameterDescriptor.getIndex() + " but position is " + i);
}
}
@@ -395,7 +395,7 @@ public class JetStandardClasses {
List<ValueParameterDescriptor> valueParameters = Lists.newArrayList();
for (int i = first; i <= last; i++) {
JetType parameterType = arguments.get(i).getType();
ValueParameterDescriptorImpl valueParameterDescriptor = new ValueParameterDescriptorImpl(functionDescriptor, i, Collections.<AnnotationDescriptor>emptyList(), "p" + i, false, parameterType, false, null);
ValueParameterDescriptorImpl valueParameterDescriptor = new ValueParameterDescriptorImpl(functionDescriptor, i - first, Collections.<AnnotationDescriptor>emptyList(), "p" + i, false, parameterType, false, null);
valueParameters.add(valueParameterDescriptor);
}
return valueParameters;