From 7a5d69b0f2d49a6fd02e83c99f4f951b775990fe Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Thu, 28 Apr 2011 20:46:25 +0400 Subject: [PATCH] Cloning a constructor descriptor shall result in constructor descriptor, not FunctionDescriptor --- .../lang/types/FunctionDescriptorUtil.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/idea/src/org/jetbrains/jet/lang/types/FunctionDescriptorUtil.java b/idea/src/org/jetbrains/jet/lang/types/FunctionDescriptorUtil.java index c93e3b0382d..ea98c11c019 100644 --- a/idea/src/org/jetbrains/jet/lang/types/FunctionDescriptorUtil.java +++ b/idea/src/org/jetbrains/jet/lang/types/FunctionDescriptorUtil.java @@ -96,11 +96,21 @@ public class FunctionDescriptorUtil { if (substitutor.isEmpty()) { return functionDescriptor; } - FunctionDescriptorImpl substitutedDescriptor = new FunctionDescriptorImpl( - functionDescriptor, - // TODO : safeSubstitute - functionDescriptor.getAttributes(), - functionDescriptor.getName()); + FunctionDescriptorImpl substitutedDescriptor; + if (functionDescriptor instanceof ConstructorDescriptor) { + ConstructorDescriptor original = (ConstructorDescriptor) functionDescriptor; + + substitutedDescriptor = new ConstructorDescriptorImpl( + original, functionDescriptor.getAttributes(), original.isPrimary() + ); + } + else { + substitutedDescriptor = new FunctionDescriptorImpl( + functionDescriptor, + // TODO : safeSubstitute + functionDescriptor.getAttributes(), + functionDescriptor.getName()); + } List substitutedValueParameters = getSubstitutedValueParameters(substitutedDescriptor, functionDescriptor, substitutor); if (substitutedValueParameters == null) {