diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ConstructorDescriptorImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ConstructorDescriptorImpl.java index 6275222ef9a..014da666a95 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ConstructorDescriptorImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ConstructorDescriptorImpl.java @@ -24,7 +24,7 @@ public class ConstructorDescriptorImpl extends FunctionDescriptorImpl implements } public ConstructorDescriptorImpl(@NotNull ConstructorDescriptor original, @NotNull List annotations, boolean isPrimary) { - super(original, annotations, ""); + super(original.getContainingDeclaration(), original, annotations, ""); this.isPrimary = isPrimary; } 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 83758f56700..6f2129a2d7b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptorImpl.java @@ -43,10 +43,11 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorImpl i } protected FunctionDescriptorImpl( + @NotNull DeclarationDescriptor containigDeclaration, @NotNull FunctionDescriptor original, @NotNull List annotations, @NotNull String name) { - super(original.getContainingDeclaration(), annotations, name); + super(containigDeclaration, annotations, name); this.original = original; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/NamedFunctionDescriptorImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/NamedFunctionDescriptorImpl.java index 842fde848c7..2bcd2613d4c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/NamedFunctionDescriptorImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/NamedFunctionDescriptorImpl.java @@ -16,13 +16,20 @@ public class NamedFunctionDescriptorImpl extends FunctionDescriptorImpl implemen super(containingDeclaration, annotations, name); } - private NamedFunctionDescriptorImpl(@NotNull NamedFunctionDescriptor original, @NotNull List annotations, @NotNull String name) { - super(original, annotations, name); + private NamedFunctionDescriptorImpl(@NotNull DeclarationDescriptor containingDeclaration, @NotNull NamedFunctionDescriptor original, @NotNull List annotations, @NotNull String name) { + super(containingDeclaration, original, annotations, name); + } + + @NotNull + @Override + public NamedFunctionDescriptor getOriginal() { + return (NamedFunctionDescriptor) super.getOriginal(); } @Override protected FunctionDescriptorImpl createSubstitutedCopy() { return new NamedFunctionDescriptorImpl( + getContainingDeclaration(), this, // TODO : safeSubstitute getAnnotations(), @@ -32,7 +39,7 @@ public class NamedFunctionDescriptorImpl extends FunctionDescriptorImpl implemen @NotNull @Override public NamedFunctionDescriptor copy(DeclarationDescriptor newOwner, boolean makeNonAbstract) { - NamedFunctionDescriptorImpl copy = new NamedFunctionDescriptorImpl(newOwner, Lists.newArrayList(getAnnotations()), getName()); + NamedFunctionDescriptorImpl copy = new NamedFunctionDescriptorImpl(newOwner, getOriginal(), Lists.newArrayList(getAnnotations()), getName()); copy.initialize( getReceiverParameter().exists() ? getReceiverParameter().getType() : null, expectedThisObject,