From f2a7e1f1c3911fc9fa911d3fc76f61de28fd7a52 Mon Sep 17 00:00:00 2001 From: Antonio Cunei Date: Mon, 28 May 2018 14:09:13 +0200 Subject: [PATCH] Fix for #4148 (SessionSettingsSpec intermittently fails) It turns out that `syntaxAnalyzer.UnitParser()` in global now also needs to be synchronized. The alternative is adding `synchronizeNames = true` in the global constructor, but that already proved unreliable in the case of #3743 (see comment https://github.com/sbt/sbt/issues/3170#issuecomment-355218833) --- main/src/main/scala/sbt/internal/parser/SbtParser.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/main/src/main/scala/sbt/internal/parser/SbtParser.scala b/main/src/main/scala/sbt/internal/parser/SbtParser.scala index 18dfa2b5e..1a7f52d57 100644 --- a/main/src/main/scala/sbt/internal/parser/SbtParser.scala +++ b/main/src/main/scala/sbt/internal/parser/SbtParser.scala @@ -148,7 +148,9 @@ private[sbt] object SbtParser { reporter.reset() val wrapperFile = new BatchSourceFile(reporterId, code) val unit = new CompilationUnit(wrapperFile) - val parser = new syntaxAnalyzer.UnitParser(unit) + val parser = SbtParser.synchronized { // see https://github.com/sbt/sbt/issues/4148 + new syntaxAnalyzer.UnitParser(unit) + } val parsedTrees = SbtParser.synchronized { // see https://github.com/scala/bug/issues/10605 parser.templateStats() }