diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractReadJavaBinaryClassTest.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractReadJavaBinaryClassTest.java index 3ff75a4a0f8..33a95e62915 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractReadJavaBinaryClassTest.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/AbstractReadJavaBinaryClassTest.java @@ -25,15 +25,12 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.ConfigurationKind; import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; -import org.jetbrains.jet.di.InjectorForJavaSemanticServices; import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode; import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM; -import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule; -import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.plugin.JetLanguage; @@ -43,27 +40,23 @@ import org.jetbrains.jet.test.generator.TestGenerator; import org.jetbrains.jet.test.util.NamespaceComparator; import org.junit.Assert; -import javax.tools.*; import java.io.File; import java.io.IOException; -import java.nio.charset.Charset; import java.util.Arrays; import java.util.Collections; -import java.util.List; -import java.util.Locale; /** * @author Stepan Koltsov */ public abstract class AbstractReadJavaBinaryClassTest extends TestCaseWithTmpdir { - public void doTest(String javaFileName) throws Exception { + public void doTest(@NotNull String javaFileName) throws Exception { Assert.assertTrue("A java file expected: " + javaFileName, javaFileName.endsWith(".java")); File javaFile = new File(javaFileName); File ktFile = new File(javaFile.getPath().replaceFirst("\\.java$", ".kt")); File txtFile = new File(javaFile.getPath().replaceFirst("\\.java$", ".txt")); NamespaceDescriptor nsa = compileKotlin(ktFile); - NamespaceDescriptor nsb = compileJava(javaFile); + NamespaceDescriptor nsb = LoadJavaDescriptorUtil.compileJava(Collections.singletonList(javaFile), tmpdir, myTestRootDisposable); NamespaceComparator.compareNamespaces(nsa, nsb, false, txtFile); } @@ -75,41 +68,14 @@ public abstract class AbstractReadJavaBinaryClassTest extends TestCaseWithTmpdir LightVirtualFile virtualFile = new LightVirtualFile(ktFile.getName(), JetLanguage.INSTANCE, text); virtualFile.setCharset(CharsetToolkit.UTF8_CHARSET); - JetFile psiFile = (JetFile) ((PsiFileFactoryImpl) PsiFileFactory.getInstance(jetCoreEnvironment.getProject())).trySetupPsiForFile(virtualFile, JetLanguage.INSTANCE, true, false); + JetFile psiFile = (JetFile) ((PsiFileFactoryImpl) PsiFileFactory.getInstance(jetCoreEnvironment.getProject())).trySetupPsiForFile( + virtualFile, JetLanguage.INSTANCE, true, false); BindingContext bindingContext = AnalyzerFacadeForJVM.analyzeOneFileWithJavaIntegrationAndCheckForErrors( psiFile, Collections.emptyList(), BuiltinsScopeExtensionMode.ALL).getBindingContext(); return bindingContext.get(BindingContext.FQNAME_TO_NAMESPACE_DESCRIPTOR, FqName.topLevel(Name.identifier("test"))); } - private NamespaceDescriptor compileJava(File javaFile) throws Exception { - JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); - - StandardJavaFileManager fileManager = javaCompiler.getStandardFileManager(null, Locale.ENGLISH, Charset.forName("utf-8")); - try { - Iterable javaFileObjectsFromFiles = fileManager.getJavaFileObjectsFromFiles(Collections.singleton(javaFile)); - List options = Arrays.asList( - "-classpath", "out/production/runtime" + File.pathSeparator + JetTestUtils.getAnnotationsJar().getPath(), - "-d", tmpdir.getPath() - ); - JavaCompiler.CompilationTask task = javaCompiler.getTask(null, fileManager, null, options, null, javaFileObjectsFromFiles); - - Assert.assertTrue(task.call()); - } finally { - fileManager.close(); - } - - JetCoreEnvironment jetCoreEnvironment = JetTestUtils.createEnvironmentWithMockJdkAndIdeaAnnotations(myTestRootDisposable, ConfigurationKind.JDK_ONLY); - - jetCoreEnvironment.addToClasspath(tmpdir); - jetCoreEnvironment.addToClasspath(new File("out/production/runtime")); - - InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(BuiltinsScopeExtensionMode.ALL, - jetCoreEnvironment.getProject()); - JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver(); - return javaDescriptorResolver.resolveNamespace(FqName.topLevel(Name.identifier("test")), DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN); - } - public static void main(String[] args) throws IOException { String aPackage = "org.jetbrains.jet.jvm.compiler"; String extension = "java"; diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaDescriptorUtil.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaDescriptorUtil.java new file mode 100644 index 00000000000..3d6e3cce177 --- /dev/null +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaDescriptorUtil.java @@ -0,0 +1,79 @@ +/* + * 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.jet.jvm.compiler; + +import com.intellij.openapi.Disposable; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.ConfigurationKind; +import org.jetbrains.jet.JetTestUtils; +import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; +import org.jetbrains.jet.di.InjectorForJavaSemanticServices; +import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode; +import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; +import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule; +import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; +import org.jetbrains.jet.lang.resolve.name.FqName; +import org.jetbrains.jet.lang.resolve.name.Name; +import org.junit.Assert; + +import javax.tools.*; +import java.io.File; +import java.io.IOException; +import java.nio.charset.Charset; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Locale; + +/** + * @author Pavel Talanov + */ +public final class LoadJavaDescriptorUtil { + private LoadJavaDescriptorUtil() { + } + + @NotNull + public static NamespaceDescriptor compileJava(@NotNull Collection javaFiles, File tmpdir, Disposable disposable) + throws IOException { + JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler(); + + StandardJavaFileManager fileManager = javaCompiler.getStandardFileManager(null, Locale.ENGLISH, Charset.forName("utf-8")); + try { + Iterable javaFileObjectsFromFiles = fileManager.getJavaFileObjectsFromFiles(javaFiles); + List options = Arrays.asList( + "-classpath", "out/production/runtime" + File.pathSeparator + JetTestUtils.getAnnotationsJar().getPath(), + "-d", tmpdir.getPath() + ); + JavaCompiler.CompilationTask task = javaCompiler.getTask(null, fileManager, null, options, null, javaFileObjectsFromFiles); + + Assert.assertTrue(task.call()); + } + finally { + fileManager.close(); + } + + JetCoreEnvironment jetCoreEnvironment = JetTestUtils.createEnvironmentWithMockJdkAndIdeaAnnotations(disposable, ConfigurationKind.JDK_ONLY); + + jetCoreEnvironment.addToClasspath(tmpdir); + jetCoreEnvironment.addToClasspath(new File("out/production/runtime")); + + InjectorForJavaSemanticServices injector = new InjectorForJavaSemanticServices(BuiltinsScopeExtensionMode.ALL, + jetCoreEnvironment.getProject()); + JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver(); + return javaDescriptorResolver.resolveNamespace(FqName.topLevel(Name.identifier("test")), DescriptorSearchRule.ERROR_IF_FOUND_IN_KOTLIN); + } +}