From 3073af99dbe5af7e94d06be721f5d8d179c2fb02 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Thu, 5 Jul 2012 16:50:31 +0400 Subject: [PATCH] Revert changes pushed by mistake --- .../k2js/translate/general/Translation.java | 4 +- .../k2js/translate/test/TestGenerator.java | 71 +++++++++++++++++++ 2 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 js/js.translator/src/org/jetbrains/k2js/translate/test/TestGenerator.java diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/general/Translation.java b/js/js.translator/src/org/jetbrains/k2js/translate/general/Translation.java index 4f8b441875f..e3a657f5859 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/general/Translation.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/general/Translation.java @@ -44,7 +44,7 @@ import org.jetbrains.k2js.translate.expression.WhenTranslator; import org.jetbrains.k2js.translate.initializer.ClassInitializerTranslator; import org.jetbrains.k2js.translate.initializer.NamespaceInitializerTranslator; import org.jetbrains.k2js.translate.reference.CallBuilder; -import org.jetbrains.k2js.translate.test.JSTestGenerator; +import org.jetbrains.k2js.translate.test.TestGenerator; import org.jetbrains.k2js.translate.utils.JsAstUtils; import org.jetbrains.k2js.translate.utils.TranslationUtils; import org.jetbrains.k2js.translate.utils.dangerous.DangerousData; @@ -186,7 +186,7 @@ public final class Translation { statements.add(statement); } } - JSTestGenerator.generateTestCalls(context, files, rootBlock); + TestGenerator.generateTestCalls(context, files, rootBlock); performSimpleNameMangling(context.program()); return context.program(); } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/test/TestGenerator.java b/js/js.translator/src/org/jetbrains/k2js/translate/test/TestGenerator.java new file mode 100644 index 00000000000..f2bb3a18c79 --- /dev/null +++ b/js/js.translator/src/org/jetbrains/k2js/translate/test/TestGenerator.java @@ -0,0 +1,71 @@ +/* + * 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. + */ + +package org.jetbrains.k2js.translate.test; + +import com.google.dart.compiler.backend.js.ast.*; +import com.google.dart.compiler.util.AstUtil; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lang.descriptors.ClassDescriptor; +import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; +import org.jetbrains.jet.lang.psi.JetFile; +import org.jetbrains.k2js.translate.context.TranslationContext; +import org.jetbrains.k2js.translate.general.JetTestFunctionDetector; +import org.jetbrains.k2js.translate.reference.CallBuilder; +import org.jetbrains.k2js.translate.reference.ReferenceTranslator; +import org.jetbrains.k2js.translate.utils.JsDescriptorUtils; + +import java.util.Collection; +import java.util.List; + +import static com.google.dart.compiler.util.AstUtil.newBlock; + +/** + * @author Pavel Talanov + */ +public final class TestGenerator { + private TestGenerator() { + } + + public static void generateTestCalls(@NotNull TranslationContext context, + @NotNull Collection files, + @NotNull JsBlock block) { + List functionDescriptors = JetTestFunctionDetector.getTestFunctionDescriptors(context.bindingContext(), files); + doGenerateTestCalls(functionDescriptors, block, context); + } + + private static void doGenerateTestCalls(@NotNull List functionDescriptors, + @NotNull JsBlock block, + @NotNull TranslationContext context) { + for (FunctionDescriptor functionDescriptor : functionDescriptors) { + ClassDescriptor classDescriptor = JsDescriptorUtils.getContainingClass(functionDescriptor); + if (classDescriptor == null) { + return; + } + JsExpression expression = ReferenceTranslator.translateAsFQReference(classDescriptor, context); + JsNew constructClassExpr = new JsNew(expression); + JsExpression functionToTestCall = + CallBuilder.build(context).descriptor(functionDescriptor).receiver(constructClassExpr).translate(); + JsNameRef qUnitTestFunRef = AstUtil.newQualifiedNameRef("QUnit.test"); + JsFunction functionToTest = new JsFunction(context.jsScope()); + functionToTest.setBody(newBlock(functionToTestCall.makeStmt())); + String testName = classDescriptor.getName() + "." + functionDescriptor.getName(); + block.getStatements() + .add(AstUtil.newInvocation(qUnitTestFunRef, context.program().getStringLiteral(testName), functionToTest) + .makeStmt()); + } + } +}