JS backend: add support for reflection types

This commit is contained in:
Michael Nedzelsky
2014-07-22 14:55:33 +04:00
parent b3ad725e8d
commit c42a9840de
12 changed files with 86 additions and 50 deletions
@@ -19,8 +19,6 @@ package org.jetbrains.k2js.test;
import com.google.common.collect.Lists;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
@@ -31,10 +29,10 @@ import org.jetbrains.k2js.facade.MainCallParameters;
import org.jetbrains.k2js.test.config.TestConfig;
import org.jetbrains.k2js.test.config.TestConfigFactory;
import org.jetbrains.k2js.test.rhino.RhinoResultChecker;
import org.jetbrains.k2js.test.utils.JsTestUtils;
import org.jetbrains.k2js.test.utils.TranslationUtils;
import java.io.File;
import java.io.FilenameFilter;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -174,8 +172,8 @@ public abstract class BasicTest extends KotlinTestWithEnvironment {
@NotNull
protected List<String> additionalKotlinFiles() {
List<String> additionalFiles = Lists.newArrayList();
additionalFiles.addAll(kotlinFilesInDirectory(pathToTestFilesRoot() + COMMON_FILES_DIR));
additionalFiles.addAll(kotlinFilesInDirectory(pathToTestFiles() + COMMON_FILES_DIR));
additionalFiles.addAll(JsTestUtils.kotlinFilesInDirectory(pathToTestFilesRoot() + COMMON_FILES_DIR));
additionalFiles.addAll(JsTestUtils.kotlinFilesInDirectory(pathToTestFiles() + COMMON_FILES_DIR));
return additionalFiles;
}
@@ -238,30 +236,4 @@ public abstract class BasicTest extends KotlinTestWithEnvironment {
return getExpectedPath() + testName + ".out";
}
@NotNull
private static List<String> kotlinFilesInDirectory(@NotNull String directory) {
File dir = new File(directory);
if (!dir.isDirectory()) {
return ContainerUtil.emptyList();
}
File[] kotlinFiles = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(@NotNull File dir, @NotNull String name) {
return name.endsWith(".kt");
}
});
if (kotlinFiles == null) {
return ContainerUtil.emptyList();
}
return ContainerUtil.map2List(kotlinFiles, new Function<File, String>() {
@Override
public String fun(File kotlinFile) {
return kotlinFile.getAbsolutePath();
}
});
}
}
@@ -17,10 +17,13 @@
package org.jetbrains.k2js.test.utils;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.k2js.config.EcmaVersion;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.EnumSet;
@@ -61,4 +64,31 @@ public final class JsTestUtils {
}
return fullFilePaths;
}
@NotNull
public static List<String> kotlinFilesInDirectory(@NotNull String directory) {
File dir = new File(directory);
if (!dir.isDirectory()) {
return ContainerUtil.emptyList();
}
File[] kotlinFiles = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(@NotNull File dir, @NotNull String name) {
return name.endsWith(".kt");
}
});
if (kotlinFiles == null) {
return ContainerUtil.emptyList();
}
return ContainerUtil.map2List(kotlinFiles, new Function<File, String>() {
@Override
public String fun(File kotlinFile) {
return kotlinFile.getAbsolutePath();
}
});
}
}
@@ -22,6 +22,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.k2js.config.Config;
import java.util.ArrayList;
import java.util.List;
public final class LibraryFilePathsUtil {
@@ -30,12 +31,15 @@ public final class LibraryFilePathsUtil {
@NotNull
public static List<String> getBasicLibraryFiles() {
return Lists.transform(Config.LIB_FILE_NAMES, new Function<String, String>() {
List<String> files = new ArrayList<String>();
files.addAll(Lists.transform(Config.LIB_FILE_NAMES, new Function<String, String>() {
@Override
public String apply(@Nullable String s) {
return Config.LIBRARIES_LOCATION + s;
}
});
}));
files.addAll(getReflectionLibraryFiles());
return files;
}
@NotNull
@@ -55,4 +59,9 @@ public final class LibraryFilePathsUtil {
}
return additionalKotlinFiles;
}
@NotNull
public static List<String> getReflectionLibraryFiles() {
return JsTestUtils.kotlinFilesInDirectory(Config.REFLECTION_LIB_LOCATION);
}
}
@@ -127,7 +127,7 @@ public final class TranslationUtils {
@NotNull
private static List<JetFile> initLibFiles(@NotNull Project project) {
return createJetFileList(project, Config.LIB_FILE_NAMES, Config.LIBRARIES_LOCATION);
return createJetFileList(project, LibraryFilePathsUtil.getBasicLibraryFiles(), null);
}
@NotNull