Put suspend lambda's parameters to LVT

#KT-26412 Fixed
 #KT-28534 Fixed
This commit is contained in:
Ilmir Usmanov
2019-03-28 19:57:56 +03:00
parent 21fe5ac415
commit 6f14dcfacb
13 changed files with 139 additions and 94 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
@@ -802,8 +802,22 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
wereChanges[0] = true;
}
}
Function0<List<VariableDescriptor>> destructuringVariablesAction = null;
if (unsubstitutedValueParameter instanceof ValueParameterDescriptorImpl.WithDestructuringDeclaration) {
final List<VariableDescriptor> destructuringVariables =
((ValueParameterDescriptorImpl.WithDestructuringDeclaration) unsubstitutedValueParameter)
.getDestructuringVariables();
destructuringVariablesAction = new Function0<List<VariableDescriptor>>() {
@Override
public List<VariableDescriptor> invoke() {
return destructuringVariables;
}
};
}
result.add(
new ValueParameterDescriptorImpl(
ValueParameterDescriptorImpl.createWithDestructuringDeclarations(
substitutedDescriptor,
dropOriginal ? null : unsubstitutedValueParameter,
unsubstitutedValueParameter.getIndex(),
@@ -814,7 +828,8 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
unsubstitutedValueParameter.isCrossinline(),
unsubstitutedValueParameter.isNoinline(),
substituteVarargElementType,
preserveSourceElement ? unsubstitutedValueParameter.getSource() : SourceElement.NO_SOURCE
preserveSourceElement ? unsubstitutedValueParameter.getSource() : SourceElement.NO_SOURCE,
destructuringVariablesAction
)
);
}