From df2d9769fa387123067d6ddd52e73c1aea9b7f8f Mon Sep 17 00:00:00 2001 From: pTalanov Date: Tue, 13 Mar 2012 15:48:38 +0400 Subject: [PATCH] KT-1359 Cannot declare object inheriting from a trait or class. --- .../jetbrains/k2js/test/semantics/ObjectTest.java | 6 ++++++ .../k2js/translate/declaration/ClassTranslator.java | 3 ++- .../object/cases/objectInheritingFromATrait.kt | 13 +++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 js/js.translator/testFiles/object/cases/objectInheritingFromATrait.kt diff --git a/js/js.tests/test/org/jetbrains/k2js/test/semantics/ObjectTest.java b/js/js.tests/test/org/jetbrains/k2js/test/semantics/ObjectTest.java index ee3f4e4f9a6..d387a9b7ef6 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/semantics/ObjectTest.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/semantics/ObjectTest.java @@ -40,4 +40,10 @@ public final class ObjectTest extends SingleFileTranslationTest { public void testObjectInMethod() throws Exception { checkFooBoxIsTrue("objectInMethod.kt"); } + + + public void testObjectInheritingFromATrait() throws Exception { + checkFooBoxIsTrue("objectInheritingFromATrait.kt"); + } + } \ No newline at end of file diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java index fcb225ec13d..907a91fb617 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java @@ -40,6 +40,7 @@ import static org.jetbrains.k2js.translate.utils.BindingUtils.getClassDescriptor import static org.jetbrains.k2js.translate.utils.BindingUtils.getPropertyDescriptorForConstructorParameter; import static org.jetbrains.k2js.translate.utils.DescriptorUtils.*; import static org.jetbrains.k2js.translate.utils.PsiUtils.getPrimaryConstructorParameters; +import static org.jetbrains.k2js.translate.utils.TranslationUtils.getQualifiedReference; import static org.jetbrains.k2js.translate.utils.TranslationUtils.getThisObject; /** @@ -175,7 +176,7 @@ public final class ClassTranslator extends AbstractTranslator { if (aliaser().hasAliasForDeclaration(superClassDescriptor)) { return aliaser().getAliasForDeclaration(superClassDescriptor).makeRef(); } - return context().getNameForDescriptor(superClassDescriptor).makeRef(); + return getQualifiedReference(context(), superClassDescriptor); } @Nullable diff --git a/js/js.translator/testFiles/object/cases/objectInheritingFromATrait.kt b/js/js.translator/testFiles/object/cases/objectInheritingFromATrait.kt new file mode 100644 index 00000000000..505f07fe0ca --- /dev/null +++ b/js/js.translator/testFiles/object/cases/objectInheritingFromATrait.kt @@ -0,0 +1,13 @@ +package foo + +trait Foo { + fun f() : Boolean +} + +object foo : Foo { + override fun f() = true +} + +fun box() : Boolean { + return foo.f() +} \ No newline at end of file