From 7dd5203d1100909b7f9f307d6454fa3bcabd9374 Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Wed, 24 Jun 2020 10:11:46 +1000 Subject: [PATCH] Fix thread safety problem in runtime reflection In #9012, a `ReusableInstance` was added in the implenentation of `TypeConstraint.contains`. This needs to be disabled in the multi-threaded runtime reflection universe. --- src/reflect/scala/reflect/internal/tpe/TypeConstraints.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/reflect/scala/reflect/internal/tpe/TypeConstraints.scala b/src/reflect/scala/reflect/internal/tpe/TypeConstraints.scala index 792ac5cc0a95..9d6e4631e7f2 100644 --- a/src/reflect/scala/reflect/internal/tpe/TypeConstraints.scala +++ b/src/reflect/scala/reflect/internal/tpe/TypeConstraints.scala @@ -199,7 +199,7 @@ private[internal] trait TypeConstraints { } } - private[this] val containsCollectorInstances: ReusableInstance[ContainsCollector] = ReusableInstance(new ContainsCollector(null)) + private[this] val containsCollectorInstances: ReusableInstance[ContainsCollector] = ReusableInstance(new ContainsCollector(null), enabled = isCompilerUniverse) private[this] def containsSymbol(tp: Type, sym: Symbol): Boolean = containsCollectorInstances.using { cc =>