Registered annotations provider as a service instead of static class to avoid problems with projects disposal.

This commit is contained in:
Evgeny Gerashchenko
2012-07-02 23:21:22 +04:00
parent 23a1c85c44
commit fa3e3ee104
8 changed files with 29 additions and 45 deletions
@@ -208,7 +208,7 @@ public class K2JVMCompiler extends CLICompiler<K2JVMCompilerArguments, K2JVMComp
if (arguments.annotations != null) {
for (String root : Splitter.on(File.pathSeparatorChar).split(arguments.annotations)) {
JetCoreEnvironment.addExternalAnnotationsRoot(PathUtil.jarFileOrDirectoryToVirtualFile(new File(root)));
configuration.getEnvironment().addExternalAnnotationsRoot(PathUtil.jarFileOrDirectoryToVirtualFile(new File(root)));
}
}
}
@@ -49,6 +49,7 @@ import java.util.List;
*/
public class JetCoreEnvironment extends JavaCoreEnvironment {
private final List<JetFile> sourceFiles = new ArrayList<JetFile>();
private final CoreAnnotationsProvider annotationsProvider;
@NotNull
public static JetCoreEnvironment createCoreEnvironmentForJS(Disposable disposable) {
@@ -88,13 +89,14 @@ public class JetCoreEnvironment extends JavaCoreEnvironment {
addToClasspath(compilerDependencies.getJdkJar());
}
annotationsProvider = new CoreAnnotationsProvider();
if (compilerSpecialMode.includeJdkHeaders()) {
for (VirtualFile root : compilerDependencies.getJdkHeaderRoots()) {
addLibraryRoot(root);
}
}
ExternalAnnotationsProvider.setInstance(new CoreAnnotationsProvider());
myProject.registerService(ExternalAnnotationsProvider.class, annotationsProvider);
if (compilerSpecialMode.includeKotlinRuntime()) {
addToClasspath(compilerDependencies.getRuntimeJar());
@@ -103,8 +105,8 @@ public class JetCoreEnvironment extends JavaCoreEnvironment {
JetStandardLibrary.initialize(getProject());
}
public static void addExternalAnnotationsRoot(@NotNull VirtualFile root) {
((CoreAnnotationsProvider) ExternalAnnotationsProvider.getInstance()).addExternalAnnotationsRoot(root);
public void addExternalAnnotationsRoot(VirtualFile root) {
annotationsProvider.addExternalAnnotationsRoot(root);
}
public MockApplication getApplication() {
@@ -81,7 +81,7 @@ public class KotlinToJVMBytecodeCompiler {
}
for (String annotationsRoot : moduleBuilder.getAnnotationsRoots()) {
JetCoreEnvironment.addExternalAnnotationsRoot(PathUtil.jarFileOrDirectoryToVirtualFile(new File(annotationsRoot)));
configuration.getEnvironment().addExternalAnnotationsRoot(PathUtil.jarFileOrDirectoryToVirtualFile(new File(annotationsRoot)));
}
GenerationState generationState = analyzeAndGenerate(configuration);