diff --git a/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java b/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java index 1404bc105cf..9748cec343f 100644 --- a/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java +++ b/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java @@ -212,8 +212,8 @@ public class CompileEnvironment { method.setAccessible(true); method.invoke(null); - ArrayList answer = new ArrayList(AllModules.modules); - AllModules.modules.clear(); + ArrayList answer = new ArrayList(AllModules.modules.get()); + AllModules.modules.get().clear(); return answer; } catch (Exception e) { diff --git a/stdlib/ktSrc/modules/ModuleBuilder.kt b/stdlib/ktSrc/modules/ModuleBuilder.kt index 487ef408f20..301e41930a8 100644 --- a/stdlib/ktSrc/modules/ModuleBuilder.kt +++ b/stdlib/ktSrc/modules/ModuleBuilder.kt @@ -6,7 +6,7 @@ import jet.modules.* fun module(name: String, callback: ModuleBuilder.() -> Unit) { val builder = ModuleBuilder(name) builder.callback() - AllModules.modules?.add(builder) + AllModules.modules.sure().get()?.add(builder) } class SourcesBuilder(val parent: ModuleBuilder) { diff --git a/stdlib/src/jet/modules/AllModules.java b/stdlib/src/jet/modules/AllModules.java index d40c79c1d1f..a6580fe39ed 100644 --- a/stdlib/src/jet/modules/AllModules.java +++ b/stdlib/src/jet/modules/AllModules.java @@ -22,5 +22,14 @@ package jet.modules; import java.util.ArrayList; public class AllModules { - public static final ArrayList modules = new ArrayList(); + + public static final ThreadLocal> modules = new ThreadLocal>() { + @Override + protected ArrayList initialValue() { + return new ArrayList(); + } + }; + + private AllModules() { + } }