From b7f5490b4ce2d85b7e66a8592443a4fe85b14ce2 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 9 Feb 2012 16:00:29 +0400 Subject: [PATCH] Fix value parameter indeices for function literals with receivers --- .../jet/lang/descriptors/FunctionDescriptorImpl.java | 5 +++-- .../src/org/jetbrains/jet/lang/types/JetStandardClasses.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorImpl.java index dfe284199d0..810b9907b0c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorImpl.java @@ -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); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/JetStandardClasses.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/JetStandardClasses.java index a10d6a3b974..de1a703a87d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/JetStandardClasses.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/JetStandardClasses.java @@ -395,7 +395,7 @@ public class JetStandardClasses { List valueParameters = Lists.newArrayList(); for (int i = first; i <= last; i++) { JetType parameterType = arguments.get(i).getType(); - ValueParameterDescriptorImpl valueParameterDescriptor = new ValueParameterDescriptorImpl(functionDescriptor, i, Collections.emptyList(), "p" + i, false, parameterType, false, null); + ValueParameterDescriptorImpl valueParameterDescriptor = new ValueParameterDescriptorImpl(functionDescriptor, i - first, Collections.emptyList(), "p" + i, false, parameterType, false, null); valueParameters.add(valueParameterDescriptor); } return valueParameters;