Do not translate library (marked by annotation) declarations.
This commit is contained in:
@@ -72,6 +72,10 @@ public final class NativeInteropTest extends SingleFileTranslationTest {
|
||||
fooBoxTest();
|
||||
}
|
||||
|
||||
public void testLibrary() throws Exception {
|
||||
fooBoxTest();
|
||||
}
|
||||
|
||||
public void testKt2209() throws Exception {
|
||||
fooBoxTest();
|
||||
}
|
||||
|
||||
+3
-3
@@ -28,8 +28,6 @@ import org.jetbrains.k2js.translate.general.AbstractTranslator;
|
||||
import org.jetbrains.k2js.translate.general.Translation;
|
||||
import org.jetbrains.k2js.translate.initializer.InitializerUtils;
|
||||
import org.jetbrains.k2js.translate.initializer.InitializerVisitor;
|
||||
import org.jetbrains.k2js.translate.utils.AnnotationsUtils;
|
||||
import org.jetbrains.k2js.translate.utils.BindingUtils;
|
||||
import org.jetbrains.k2js.translate.utils.JsAstUtils;
|
||||
import org.jetbrains.k2js.translate.utils.TranslationUtils;
|
||||
|
||||
@@ -39,6 +37,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.jetbrains.k2js.translate.initializer.InitializerUtils.generateInitializerForProperty;
|
||||
import static org.jetbrains.k2js.translate.utils.AnnotationsUtils.isPredefinedObject;
|
||||
import static org.jetbrains.k2js.translate.utils.BindingUtils.getDescriptorForElement;
|
||||
import static org.jetbrains.k2js.translate.utils.BindingUtils.getPropertyDescriptor;
|
||||
|
||||
/**
|
||||
@@ -64,7 +64,7 @@ final class NamespaceTranslator extends AbstractTranslator {
|
||||
|
||||
public void translate(JetFile file) {
|
||||
for (JetDeclaration declaration : file.getDeclarations()) {
|
||||
if (!AnnotationsUtils.isNativeObject(BindingUtils.getDescriptorForElement(bindingContext(), declaration))) {
|
||||
if (!isPredefinedObject(getDescriptorForElement(bindingContext(), declaration))) {
|
||||
declaration.accept(visitor, context());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,6 +112,15 @@ public final class AnnotationsUtils {
|
||||
return hasAnnotationOrInsideAnnotatedClass(descriptor, PredefinedAnnotation.LIBRARY);
|
||||
}
|
||||
|
||||
public static boolean isPredefinedObject(@NotNull DeclarationDescriptor descriptor) {
|
||||
for (PredefinedAnnotation annotation : PredefinedAnnotation.values()) {
|
||||
if (hasAnnotationOrInsideAnnotatedClass(descriptor, annotation)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean hasAnnotationOrInsideAnnotatedClass(@NotNull DeclarationDescriptor descriptor,
|
||||
@NotNull PredefinedAnnotation annotation) {
|
||||
return hasAnnotationOrInsideAnnotatedClass(descriptor, annotation.getFQName());
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package foo
|
||||
|
||||
library class A() {
|
||||
library fun f() {}
|
||||
library fun f(a: Int) {}
|
||||
}
|
||||
|
||||
library fun getResult() = false
|
||||
|
||||
fun box(): Boolean {
|
||||
val a = A()
|
||||
a.f()
|
||||
a.f(2)
|
||||
return getResult()
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright 2010-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
(function () {
|
||||
var c = 0;
|
||||
|
||||
Kotlin.A = Kotlin.$createClass(
|
||||
{
|
||||
initialize:function () {
|
||||
this.f = function(i) {
|
||||
if (i === undefined && c === 0) {
|
||||
c = 1;
|
||||
}
|
||||
if (i === 2 && c === 1) {
|
||||
c = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
Kotlin.getResult = function () {
|
||||
return c === 2;
|
||||
};
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user