check for access to internal elements from another module in jps-plugin

hack for access from tests to internal declarations in production code

fix AbstractCompileKotlinAgainstKotinTest: add information about output directory in order to correct check for internal visibility.
This commit is contained in:
Michael Nedzelsky
2015-09-24 00:02:05 +03:00
parent 0b49195a03
commit b8ab8bcfca
11 changed files with 234 additions and 53 deletions
@@ -21,6 +21,7 @@ import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.util.ArrayUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.cli.common.modules.ModuleBuilder;
import org.jetbrains.kotlin.cli.common.output.outputUtils.OutputUtilsPackage;
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles;
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
@@ -28,6 +29,7 @@ import org.jetbrains.kotlin.codegen.ClassFileFactory;
import org.jetbrains.kotlin.codegen.GenerationUtils;
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime;
import org.jetbrains.kotlin.config.CompilerConfiguration;
import org.jetbrains.kotlin.load.kotlin.ModuleVisibilityManager;
import org.jetbrains.kotlin.load.kotlin.PackageClassUtils;
import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.psi.JetFile;
@@ -98,7 +100,7 @@ public abstract class AbstractCompileKotlinAgainstKotlinTest extends TestCaseWit
return compileKotlin(ktBFile, bDir, environment, getTestRootDisposable());
}
private static ClassFileFactory compileKotlin(
private ClassFileFactory compileKotlin(
@NotNull File file, @NotNull File outputDir, @NotNull KotlinCoreEnvironment jetCoreEnvironment,
@NotNull Disposable disposable
) throws IOException {
@@ -107,6 +109,8 @@ public abstract class AbstractCompileKotlinAgainstKotlinTest extends TestCaseWit
JetFile psiFile = JetTestUtils.createFile(file.getName(), text, jetCoreEnvironment.getProject());
ModuleVisibilityManager.SERVICE.getInstance(jetCoreEnvironment.getProject()).addModule(new ModuleBuilder("module for test", tmpdir.getAbsolutePath(), "test"));
ClassFileFactory outputFiles = GenerationUtils.compileFileGetClassFileFactoryForTest(psiFile, jetCoreEnvironment);
OutputUtilsPackage.writeAllTo(outputFiles, outputDir);