BuiltIns initialization in J2K fixed
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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 "";
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user