new kompiler parameter
This commit is contained in:
@@ -646,6 +646,7 @@
|
|||||||
|
|
||||||
<macrodef name="new-kotlinc">
|
<macrodef name="new-kotlinc">
|
||||||
<attribute name="output"/>
|
<attribute name="output"/>
|
||||||
|
<attribute name="moduleName"/>
|
||||||
<element name="src"/>
|
<element name="src"/>
|
||||||
<element name="class-path"/>
|
<element name="class-path"/>
|
||||||
|
|
||||||
@@ -680,6 +681,8 @@
|
|||||||
<arg value="-no-stdlib"/>
|
<arg value="-no-stdlib"/>
|
||||||
<arg value="-classpath"/>
|
<arg value="-classpath"/>
|
||||||
<arg value="${toString:classpath.path}"/>
|
<arg value="${toString:classpath.path}"/>
|
||||||
|
<arg value="-module-name"/>
|
||||||
|
<arg value="@{moduleName}"/>
|
||||||
</java>
|
</java>
|
||||||
|
|
||||||
<javac2 srcdir="${toString:src.dirset}" destdir="@{output}" debug="true" debuglevel="lines,vars,source"
|
<javac2 srcdir="${toString:src.dirset}" destdir="@{output}" debug="true" debuglevel="lines,vars,source"
|
||||||
@@ -695,7 +698,7 @@
|
|||||||
</macrodef>
|
</macrodef>
|
||||||
|
|
||||||
<target name="builtins">
|
<target name="builtins">
|
||||||
<new-kotlinc output="${output}/classes/builtins">
|
<new-kotlinc output="${output}/classes/builtins" moduleName="builtins">
|
||||||
<src>
|
<src>
|
||||||
<include name="core/builtins/src"/>
|
<include name="core/builtins/src"/>
|
||||||
<include name="core/runtime.jvm/src"/>
|
<include name="core/runtime.jvm/src"/>
|
||||||
@@ -708,7 +711,7 @@
|
|||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="stdlib">
|
<target name="stdlib">
|
||||||
<new-kotlinc output="${output}/classes/stdlib">
|
<new-kotlinc output="${output}/classes/stdlib" moduleName="stdlib">
|
||||||
<src>
|
<src>
|
||||||
<include name="libraries/stdlib/src"/>
|
<include name="libraries/stdlib/src"/>
|
||||||
</src>
|
</src>
|
||||||
@@ -719,7 +722,7 @@
|
|||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="core">
|
<target name="core">
|
||||||
<new-kotlinc output="${output}/classes/core">
|
<new-kotlinc output="${output}/classes/core" moduleName="core">
|
||||||
<src>
|
<src>
|
||||||
<include name="core/descriptor.loader.java/src"/>
|
<include name="core/descriptor.loader.java/src"/>
|
||||||
<include name="core/descriptors/src"/>
|
<include name="core/descriptors/src"/>
|
||||||
@@ -737,7 +740,7 @@
|
|||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="reflection">
|
<target name="reflection">
|
||||||
<new-kotlinc output="${output}/classes/reflection">
|
<new-kotlinc output="${output}/classes/reflection" moduleName="reflection">
|
||||||
<src>
|
<src>
|
||||||
<include name="core/reflection.jvm/src"/>
|
<include name="core/reflection.jvm/src"/>
|
||||||
</src>
|
</src>
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
|||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile;
|
||||||
import com.intellij.util.Function;
|
import com.intellij.util.Function;
|
||||||
import com.intellij.util.containers.ContainerUtil;
|
import com.intellij.util.containers.ContainerUtil;
|
||||||
|
import kotlin.KotlinPackage;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.annotations.TestOnly;
|
import org.jetbrains.annotations.TestOnly;
|
||||||
@@ -84,9 +85,7 @@ public class ClassFileFactory implements OutputFileCollection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void writeModuleMappings(Collection<PackageCodegen> values) {
|
private void writeModuleMappings(Collection<PackageCodegen> values) {
|
||||||
String moduleName = state.getModule().getName().asString();
|
String moduleName = KotlinPackage.removeSurrounding(state.getModule().getName().asString(), "<", ">");
|
||||||
moduleName = moduleName.replaceAll(">", "").replaceAll("<", "");
|
|
||||||
moduleName = moduleName.substring(moduleName.lastIndexOf(" ") + 1);
|
|
||||||
String outputFilePath = "META-INF/" + moduleName + ".kotlin_module";
|
String outputFilePath = "META-INF/" + moduleName + ".kotlin_module";
|
||||||
final StringWriter moduleMapping = new StringWriter(1024);
|
final StringWriter moduleMapping = new StringWriter(1024);
|
||||||
for (PackageCodegen codegen : values) {
|
for (PackageCodegen codegen : values) {
|
||||||
|
|||||||
+4
@@ -55,6 +55,9 @@ public class K2JVMCompilerArguments extends CommonCompilerArguments {
|
|||||||
@ValueDescription("<path>")
|
@ValueDescription("<path>")
|
||||||
public String kotlinHome;
|
public String kotlinHome;
|
||||||
|
|
||||||
|
@Argument(value = "module-name", description = "Module name")
|
||||||
|
public String moduleName;
|
||||||
|
|
||||||
// Advanced options
|
// Advanced options
|
||||||
|
|
||||||
@Argument(value = "Xno-call-assertions", description = "Don't generate not-null assertion after each invocation of method returning not-null")
|
@Argument(value = "Xno-call-assertions", description = "Don't generate not-null assertion after each invocation of method returning not-null")
|
||||||
@@ -74,4 +77,5 @@ public class K2JVMCompilerArguments extends CommonCompilerArguments {
|
|||||||
public String executableScriptFileName() {
|
public String executableScriptFileName() {
|
||||||
return "kotlinc-jvm";
|
return "kotlinc-jvm";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,6 +134,8 @@ public open class K2JVMCompiler : CLICompiler<K2JVMCompilerArguments>() {
|
|||||||
else
|
else
|
||||||
emptyList<AnalyzerScriptParameter>())
|
emptyList<AnalyzerScriptParameter>())
|
||||||
|
|
||||||
|
configuration.put(JVMConfigurationKeys.MODULE_NAME, arguments.moduleName ?: "main")
|
||||||
|
|
||||||
putAdvancedOptions(configuration, arguments)
|
putAdvancedOptions(configuration, arguments)
|
||||||
|
|
||||||
messageSeverityCollector.report(CompilerMessageSeverity.LOGGING, "Configuring the compilation environment", CompilerMessageLocation.NO_LOCATION)
|
messageSeverityCollector.report(CompilerMessageSeverity.LOGGING, "Configuring the compilation environment", CompilerMessageLocation.NO_LOCATION)
|
||||||
|
|||||||
+2
-1
@@ -318,7 +318,8 @@ public class KotlinToJVMBytecodeCompiler {
|
|||||||
@Override
|
@Override
|
||||||
public AnalysisResult invoke() {
|
public AnalysisResult invoke() {
|
||||||
BindingTrace sharedTrace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace();
|
BindingTrace sharedTrace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace();
|
||||||
ModuleContext moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(environment.getProject());
|
ModuleContext moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(environment.getProject(),
|
||||||
|
getModuleName(environment));
|
||||||
|
|
||||||
return TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationWithCustomContext(
|
return TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationWithCustomContext(
|
||||||
moduleContext,
|
moduleContext,
|
||||||
|
|||||||
@@ -50,4 +50,8 @@ public class JVMConfigurationKeys {
|
|||||||
|
|
||||||
public static final CompilerConfigurationKey<List<String>> MODULE_IDS =
|
public static final CompilerConfigurationKey<List<String>> MODULE_IDS =
|
||||||
CompilerConfigurationKey.create("module id strings");
|
CompilerConfigurationKey.create("module id strings");
|
||||||
|
|
||||||
|
public static final CompilerConfigurationKey<String> MODULE_NAME =
|
||||||
|
CompilerConfigurationKey.create("module name");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2015 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.kotlin.cli.jvm.config
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
|
|
||||||
|
public fun KotlinCoreEnvironment.getModuleName(): String = configuration.get(JVMConfigurationKeys.MODULE_NAME)!!
|
||||||
@@ -78,6 +78,7 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.jetbrains.kotlin.cli.jvm.config.ConfigPackage.getJvmClasspathRoots;
|
import static org.jetbrains.kotlin.cli.jvm.config.ConfigPackage.getJvmClasspathRoots;
|
||||||
|
import static org.jetbrains.kotlin.cli.jvm.config.ConfigPackage.getModuleName;
|
||||||
import static org.jetbrains.kotlin.codegen.AsmUtil.asmTypeByFqNameWithoutInnerClasses;
|
import static org.jetbrains.kotlin.codegen.AsmUtil.asmTypeByFqNameWithoutInnerClasses;
|
||||||
import static org.jetbrains.kotlin.codegen.binding.CodegenBinding.registerClassNameForScript;
|
import static org.jetbrains.kotlin.codegen.binding.CodegenBinding.registerClassNameForScript;
|
||||||
import static org.jetbrains.kotlin.resolve.DescriptorToSourceUtils.descriptorToDeclaration;
|
import static org.jetbrains.kotlin.resolve.DescriptorToSourceUtils.descriptorToDeclaration;
|
||||||
@@ -106,7 +107,7 @@ public class ReplInterpreter {
|
|||||||
Project project = environment.getProject();
|
Project project = environment.getProject();
|
||||||
this.psiFileFactory = (PsiFileFactoryImpl) PsiFileFactory.getInstance(project);
|
this.psiFileFactory = (PsiFileFactoryImpl) PsiFileFactory.getInstance(project);
|
||||||
this.trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace();
|
this.trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace();
|
||||||
MutableModuleContext moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(project);
|
MutableModuleContext moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(project, getModuleName(environment));
|
||||||
this.module = moduleContext.getModule();
|
this.module = moduleContext.getModule();
|
||||||
|
|
||||||
scriptDeclarationFactory = new ScriptMutableDeclarationProviderFactory();
|
scriptDeclarationFactory = new ScriptMutableDeclarationProviderFactory();
|
||||||
|
|||||||
+2
-2
@@ -169,9 +169,9 @@ public enum TopDownAnalyzerFacadeForJVM {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static MutableModuleContext createContextWithSealedModule(@NotNull Project project) {
|
public static MutableModuleContext createContextWithSealedModule(@NotNull Project project, @NotNull String moduleName) {
|
||||||
MutableModuleContext context = ContextForNewModule(
|
MutableModuleContext context = ContextForNewModule(
|
||||||
project, Name.special("<shared-module>"), JVM_MODULE_PARAMETERS
|
project, Name.special("<" + moduleName + ">"), JVM_MODULE_PARAMETERS
|
||||||
);
|
);
|
||||||
context.setDependencies(context.getModule(), KotlinBuiltIns.getInstance().getBuiltInsModule());
|
context.setDependencies(context.getModule(), KotlinBuiltIns.getInstance().getBuiltInsModule());
|
||||||
return context;
|
return context;
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ import java.util.Map;
|
|||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import static org.jetbrains.kotlin.cli.jvm.config.ConfigPackage.addJavaSourceRoot;
|
import static org.jetbrains.kotlin.cli.jvm.config.ConfigPackage.addJavaSourceRoot;
|
||||||
|
import static org.jetbrains.kotlin.cli.jvm.config.ConfigPackage.getModuleName;
|
||||||
import static org.jetbrains.kotlin.config.ConfigPackage.addKotlinSourceRoot;
|
import static org.jetbrains.kotlin.config.ConfigPackage.addKotlinSourceRoot;
|
||||||
import static org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil.*;
|
import static org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil.*;
|
||||||
import static org.jetbrains.kotlin.test.JetTestUtils.*;
|
import static org.jetbrains.kotlin.test.JetTestUtils.*;
|
||||||
@@ -146,7 +147,8 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
|
|||||||
KotlinCoreEnvironment.createForTests(getTestRootDisposable(), configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES);
|
KotlinCoreEnvironment.createForTests(getTestRootDisposable(), configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES);
|
||||||
|
|
||||||
BindingTrace trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace();
|
BindingTrace trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace();
|
||||||
ModuleContext moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(environment.getProject());
|
ModuleContext moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(environment.getProject(),
|
||||||
|
getModuleName(environment));
|
||||||
|
|
||||||
TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationNoIncremental(
|
TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationNoIncremental(
|
||||||
moduleContext,
|
moduleContext,
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import com.intellij.openapi.util.io.FileUtil
|
|||||||
import com.intellij.testFramework.UsefulTestCase
|
import com.intellij.testFramework.UsefulTestCase
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport
|
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
|
import org.jetbrains.kotlin.cli.jvm.config.getModuleName
|
||||||
import org.jetbrains.kotlin.container.ComponentProvider
|
import org.jetbrains.kotlin.container.ComponentProvider
|
||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
@@ -53,7 +54,7 @@ public abstract class AbstractDescriptorRendererTest : KotlinTestWithEnvironment
|
|||||||
val fileText = FileUtil.loadFile(File(path), true)
|
val fileText = FileUtil.loadFile(File(path), true)
|
||||||
val psiFile = JetPsiFactory(getProject()).createFile(fileText)
|
val psiFile = JetPsiFactory(getProject()).createFile(fileText)
|
||||||
|
|
||||||
val context = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(getProject())
|
val context = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(getProject(), environment.getModuleName())
|
||||||
|
|
||||||
|
|
||||||
val container = createContainerForLazyResolve(
|
val container = createContainerForLazyResolve(
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public class JvmResolveUtil {
|
|||||||
@NotNull Project project,
|
@NotNull Project project,
|
||||||
@NotNull Collection<JetFile> files
|
@NotNull Collection<JetFile> files
|
||||||
) {
|
) {
|
||||||
ModuleContext moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(project);
|
ModuleContext moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(project, "java-integration-test");
|
||||||
|
|
||||||
BindingTrace trace = new CliLightClassGenerationSupport.CliBindingTrace();
|
BindingTrace trace = new CliLightClassGenerationSupport.CliBindingTrace();
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public class LazyResolveTestUtil {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static ModuleDescriptor resolve(@NotNull Project project, @NotNull BindingTrace trace, @NotNull List<JetFile> sourceFiles) {
|
public static ModuleDescriptor resolve(@NotNull Project project, @NotNull BindingTrace trace, @NotNull List<JetFile> sourceFiles) {
|
||||||
ModuleContext moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(project);
|
ModuleContext moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(project, "test");
|
||||||
|
|
||||||
TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationNoIncremental(
|
TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationNoIncremental(
|
||||||
moduleContext, sourceFiles, trace, TopDownAnalysisMode.TopLevelDeclarations
|
moduleContext, sourceFiles, trace, TopDownAnalysisMode.TopLevelDeclarations
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import com.intellij.psi.search.GlobalSearchScope
|
|||||||
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport
|
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
|
import org.jetbrains.kotlin.cli.jvm.config.getModuleName
|
||||||
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
|
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
|
||||||
import org.jetbrains.kotlin.frontend.java.di.createContainerForTopDownAnalyzerForJvm
|
import org.jetbrains.kotlin.frontend.java.di.createContainerForTopDownAnalyzerForJvm
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
@@ -53,7 +54,7 @@ public abstract class AbstractLocalClassProtoTest : TestCaseWithTmpdir() {
|
|||||||
JetTestUtils.compilerConfigurationForTests(ConfigurationKind.ALL, TestJdkKind.MOCK_JDK, tmpdir),
|
JetTestUtils.compilerConfigurationForTests(ConfigurationKind.ALL, TestJdkKind.MOCK_JDK, tmpdir),
|
||||||
EnvironmentConfigFiles.JVM_CONFIG_FILES
|
EnvironmentConfigFiles.JVM_CONFIG_FILES
|
||||||
)
|
)
|
||||||
val moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(environment.project)
|
val moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(environment.project, environment.getModuleName())
|
||||||
val providerFactory = FileBasedDeclarationProviderFactory(moduleContext.storageManager, emptyList())
|
val providerFactory = FileBasedDeclarationProviderFactory(moduleContext.storageManager, emptyList())
|
||||||
|
|
||||||
val container = createContainerForTopDownAnalyzerForJvm(
|
val container = createContainerForTopDownAnalyzerForJvm(
|
||||||
|
|||||||
+1
-2
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.load.kotlin.VirtualFileFinder
|
|||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.resolve.BindingTraceContext
|
import org.jetbrains.kotlin.resolve.BindingTraceContext
|
||||||
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM
|
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM
|
||||||
import kotlin.properties.Delegates
|
|
||||||
|
|
||||||
public class DecompiledTextConsistencyTest : TextConsistencyBaseTest() {
|
public class DecompiledTextConsistencyTest : TextConsistencyBaseTest() {
|
||||||
|
|
||||||
@@ -41,7 +40,7 @@ public class DecompiledTextConsistencyTest : TextConsistencyBaseTest() {
|
|||||||
|
|
||||||
override fun getModuleDescriptor(): ModuleDescriptor =
|
override fun getModuleDescriptor(): ModuleDescriptor =
|
||||||
TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationWithCustomContext(
|
TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationWithCustomContext(
|
||||||
TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(getProject()),
|
TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(getProject(), "test"),
|
||||||
listOf(), BindingTraceContext(), null, null
|
listOf(), BindingTraceContext(), null, null
|
||||||
).moduleDescriptor
|
).moduleDescriptor
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user