BuiltIns initialization in J2K fixed

This commit is contained in:
Andrey Breslav
2012-10-17 17:32:33 +04:00
parent 2a112a41b3
commit 10cf303133
5 changed files with 44 additions and 18 deletions
@@ -38,11 +38,11 @@ import static org.jetbrains.jet.plugin.actions.JavaToKotlinActionUtil.*;
public class JavaToKotlinAction extends AnAction {
@Override
public void actionPerformed(final AnActionEvent e) {
final Converter converter = new Converter();
VirtualFile[] virtualFiles = e.getData(PlatformDataKeys.VIRTUAL_FILE_ARRAY);
final Project project = PlatformDataKeys.PROJECT.getData(e.getDataContext());
assert virtualFiles != null;
final Project project = PlatformDataKeys.PROJECT.getData(e.getDataContext());
assert project != null;
final Converter converter = new Converter(project);
int result = Messages.showYesNoCancelDialog(project,
"Would you like to backup Java files?",
"Backup",
+4 -1
View File
@@ -18,6 +18,7 @@ package org.jetbrains.jet.j2k;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -28,6 +29,7 @@ import org.jetbrains.jet.j2k.util.AstUtil;
import org.jetbrains.jet.j2k.visitors.*;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.types.expressions.OperatorConventions;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import java.util.*;
@@ -59,7 +61,8 @@ public class Converter {
@NotNull
private final Set<J2KConverterFlags> flags = Sets.newHashSet();
public Converter() {
public Converter(@NotNull Project project) {
KotlinBuiltIns.initialize(project);
}
public boolean addFlag(@NotNull J2KConverterFlags flag) {
@@ -19,6 +19,7 @@ import com.intellij.core.JavaCoreApplicationEnvironment;
import com.intellij.core.JavaCoreProjectEnvironment;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
@@ -46,8 +47,6 @@ public class JavaToKotlinTranslator {
}
};
private static final Converter CONVERTER = new Converter();
private JavaToKotlinTranslator() {
}
@@ -60,8 +59,8 @@ public class JavaToKotlinTranslator {
}
@Nullable
static PsiFile createFile(@NotNull JavaCoreProjectEnvironment javaCoreEnvironment, @NotNull String text) {
return PsiFileFactory.getInstance(javaCoreEnvironment.getProject()).createFileFromText(
static PsiFile createFile(@NotNull Project project, @NotNull String text) {
return PsiFileFactory.getInstance(project).createFileFromText(
"test.java", JavaLanguage.INSTANCE, text
);
}
@@ -96,7 +95,7 @@ public class JavaToKotlinTranslator {
}
@Nullable
private static File findRtJar() {
public static File findRtJar() {
String javaHome = System.getenv("JAVA_HOME");
File rtJar;
if (javaHome == null) {
@@ -135,7 +134,7 @@ public class JavaToKotlinTranslator {
}
@Nullable
private static File findAnnotations() {
public static File findAnnotations() {
ClassLoader classLoader = JavaToKotlinTranslator.class.getClassLoader();
while (classLoader != null) {
if (classLoader instanceof URLClassLoader) {
@@ -192,8 +191,9 @@ public class JavaToKotlinTranslator {
static String generateKotlinCode(@NotNull String javaCode) {
PsiFile file = createFile(javaCode);
if (file != null && file instanceof PsiJavaFile) {
setClassIdentifiers(CONVERTER, file);
return prettify(CONVERTER.fileToFile((PsiJavaFile) file).toKotlin());
Converter converter = new Converter(file.getProject());
setClassIdentifiers(converter, file);
return prettify(converter.fileToFile((PsiJavaFile) file).toKotlin());
}
return "";
}
@@ -202,8 +202,9 @@ public class JavaToKotlinTranslator {
static String generateKotlinCodeWithCompatibilityImport(@NotNull String javaCode) {
PsiFile file = createFile(javaCode);
if (file != null && file instanceof PsiJavaFile) {
setClassIdentifiers(CONVERTER, file);
return prettify(CONVERTER.fileToFileWithCompatibilityImport((PsiJavaFile) file).toKotlin());
Converter converter = new Converter(file.getProject());
setClassIdentifiers(converter, file);
return prettify(converter.fileToFileWithCompatibilityImport((PsiJavaFile) file).toKotlin());
}
return "";
}
+2
View File
@@ -10,6 +10,8 @@
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="PROVIDED" name="idea-full" level="project" />
<orderEntry type="module" module-name="j2k" />
<orderEntry type="module" module-name="cli" scope="TEST" />
<orderEntry type="module" module-name="frontend" scope="TEST" />
</component>
</module>
@@ -16,7 +16,7 @@
package org.jetbrains.jet.j2k;
import com.intellij.core.JavaCoreProjectEnvironment;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiJavaFile;
@@ -26,6 +26,9 @@ import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.config.CompilerConfiguration;
import java.io.File;
import java.io.IOException;
@@ -34,10 +37,27 @@ import java.io.IOException;
* @author ignatov
*/
public class StandaloneJavaToKotlinConverterTest extends TestCase {
private static final JetCoreEnvironment jetCoreEnvironment;
static {
CompilerConfiguration config = new CompilerConfiguration();
config.add(JVMConfigurationKeys.CLASSPATH_KEY, JavaToKotlinTranslator.findRtJar());
File annotations = JavaToKotlinTranslator.findAnnotations();
if (annotations != null && annotations.exists()) {
config.add(JVMConfigurationKeys.CLASSPATH_KEY, annotations);
}
Disposable disposable = new Disposable() {
@Override
public void dispose() {
}
};
jetCoreEnvironment = new JetCoreEnvironment(disposable, config);
}
private final String myDataPath;
private final String myName;
@NotNull
private final static JavaCoreProjectEnvironment myJavaCoreEnvironment = JavaToKotlinTranslator.setUpJavaCoreEnvironment();
public StandaloneJavaToKotlinConverterTest(String dataPath, String name) {
myDataPath = dataPath;
@@ -46,7 +66,7 @@ public class StandaloneJavaToKotlinConverterTest extends TestCase {
@Override
protected void runTest() throws Throwable {
Converter converter = new Converter();
Converter converter = new Converter(jetCoreEnvironment.getProject());
String javaPath = "j2k/tests/testData/" + getTestFilePath();
String kotlinPath = javaPath.replace(".jav", ".kt");
@@ -122,7 +142,7 @@ public class StandaloneJavaToKotlinConverterTest extends TestCase {
@NotNull
private String fileToKotlin(Converter converter, @NotNull String text) {
return generateKotlinCode(converter, JavaToKotlinTranslator.createFile(myJavaCoreEnvironment, text));
return generateKotlinCode(converter, JavaToKotlinTranslator.createFile(jetCoreEnvironment.getProject(), text));
}
@NotNull