diff --git a/jslib/src/core/annotations.kt b/jslib/src/core/annotations.kt index 1d553ed5011..f63aff178ae 100644 --- a/jslib/src/core/annotations.kt +++ b/jslib/src/core/annotations.kt @@ -1,4 +1,5 @@ package js; - +native annotation class native(name : String = "") {} +native annotation class library(name : String = "") {} \ No newline at end of file diff --git a/jslib/src/core/javautil.kt b/jslib/src/core/javautil.kt index 69fe9b2bd85..64a5101bc46 100644 --- a/jslib/src/core/javautil.kt +++ b/jslib/src/core/javautil.kt @@ -4,7 +4,7 @@ import js.*; library("collectionsMax") -public fun max(col : Collection, comp : Comparator) : T = f +public fun max(col : Collection, comp : Comparator) : T {} library public trait Comparator { @@ -24,11 +24,9 @@ public open class Iterator() { library val Collections = object { library("collectionsMax") - public fun max(col : Collection, comp : Comparator) : T = f + public fun max(col : Collection, comp : Comparator) : T = js.noImpl } -private val f : Nothing - library public open class ArrayList() : java.util.List { override public fun size() : Int {} diff --git a/jslib/src/pixastic/pixastic.kt b/jslib/src/pixastic/pixastic.kt index b5b4d6d8a19..66bcf91bf97 100644 --- a/jslib/src/pixastic/pixastic.kt +++ b/jslib/src/pixastic/pixastic.kt @@ -6,11 +6,6 @@ import js.native native fun JQuery.pixastic(actionName : String) = js.noImpl - -native -object Pixastic { -} - native fun addAction(actionName : String, process : (oldData : Array, newData : Array, width : Int, height : Int)->Unit) = js.noImpl \ No newline at end of file diff --git a/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java b/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java index 1d3aee00496..2e9234a4003 100644 --- a/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java +++ b/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java @@ -139,16 +139,6 @@ public final class StaticContext { private final class NameGenerator extends Generator { public NameGenerator() { - Rule aliasOverridesNames = new Rule() { - @Override - @Nullable - public JsName apply(@NotNull DeclarationDescriptor data) { - if (aliaser.hasAliasForDeclaration(data)) { - return aliaser.getAliasForDeclaration(data); - } - return null; - } - }; Rule namesForStandardClasses = new Rule() { @Override @Nullable @@ -294,7 +284,6 @@ public final class StaticContext { } }; addRule(namesForStandardClasses); - addRule(aliasOverridesNames); addRule(constructorHasTheSameNameAsTheClass); addRule(namesAnnotatedAsLibraryHasUnobfuscatableNames); addRule(namesForNativeObjectsAreUnobfuscatable); diff --git a/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java b/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java index 6013b969b3a..617e997ac38 100644 --- a/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java +++ b/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java @@ -125,12 +125,11 @@ public final class ClassTranslator extends AbstractTranslator { @NotNull private JsExpression getClassReference(@NotNull ClassDescriptor superClassDescriptor) { - //TODO we actually know that in current implementation superclass must have an alias but - // in future it might change - if (aliaser().hasAliasForDeclaration(superClassDescriptor)) { + //NOTE: aliasing here is needed for the declaration generation step + if (context().aliaser().hasAliasForDeclaration(superClassDescriptor)) { return context().aliaser().getAliasForDeclaration(superClassDescriptor).makeRef(); } - throw new AssertionError("Inherited from unknown class"); + return context().getNameForDescriptor(superClassDescriptor).makeRef(); } @Nullable diff --git a/translator/src/org/jetbrains/k2js/translate/declaration/NamespaceTranslator.java b/translator/src/org/jetbrains/k2js/translate/declaration/NamespaceTranslator.java index 9ae582da959..684b14d9c2c 100644 --- a/translator/src/org/jetbrains/k2js/translate/declaration/NamespaceTranslator.java +++ b/translator/src/org/jetbrains/k2js/translate/declaration/NamespaceTranslator.java @@ -8,6 +8,7 @@ import org.jetbrains.k2js.translate.context.Namer; import org.jetbrains.k2js.translate.context.TranslationContext; import org.jetbrains.k2js.translate.general.AbstractTranslator; import org.jetbrains.k2js.translate.general.Translation; +import org.jetbrains.k2js.translate.utils.BindingUtils; import java.util.ArrayList; import java.util.List; @@ -43,12 +44,20 @@ public final class NamespaceTranslator extends AbstractTranslator { @NotNull public JsStatement translateNamespace() { + if (isNamespaceEmpty()) { + return program().getEmptyStmt(); + } classDeclarationTranslator.generateDeclarations(); return AstUtil.newBlock(classDeclarationsStatement(), namespaceOwnDeclarationStatement(), namespaceInitializeStatement()); } + //TODO: at the moment this check is very ineffective, possible solution is to cash the result of getDFN + private boolean isNamespaceEmpty() { + return BindingUtils.getDeclarationsForNamespace(context().bindingContext(), namespace).isEmpty(); + } + private JsStatement classDeclarationsStatement() { return classDeclarationTranslator.getDeclarationsStatement(); }