Skip to content

Commit 7415348

Browse files
committed
Fixes in other code calling the compiler
1 parent ee87736 commit 7415348

File tree

27 files changed

+103
-65
lines changed

27 files changed

+103
-65
lines changed

compiler/src/dotty/tools/dotc/Run.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ class Run(comp: Compiler, ictx: Context) extends ImplicitRunInfo with Constraint
8585

8686
/** The context created for this run */
8787
given runContext[Dummy_so_its_a_def] as Context = myCtx
88-
given runCState[Dummy_so_its_a_def] as CState = myCtx.cstate
88+
given runCState[Dummy_so_its_a_def] as CState =
89+
if myCtx == null then Nowhere else myCtx.cstate
8990

9091
assert(currentRunId(using runContext) <= Periods.MaxPossibleRunId)
9192

compiler/src/dotty/tools/dotc/core/Phases.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@ object Phases {
292292
def runOn(units: List[CompilationUnit])(using Context): List[CompilationUnit] =
293293
units.map { unit =>
294294
val unitCtx = ctx.fresh.setPhase(this.start).setCompilationUnit(unit)
295+
assert(unitCtx.compilationUnit != null)
295296
run(using unitCtx, unitCtx.cstate)
296297
unitCtx.compilationUnit
297298
}

compiler/test/dotty/tools/DottyTest.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ trait DottyTest extends ContextEscapeDetection {
2222
dotc.parsing.Scanners // initialize keywords
2323

2424
implicit var ctx: Context = initialCtx
25+
given [DummySoItsADef] as CState = ctx.cstate
2526

2627
protected def initialCtx: FreshContext = {
2728
val base = new ContextBase {}
@@ -54,7 +55,8 @@ trait DottyTest extends ContextEscapeDetection {
5455
val lastGroup = allPhases.find(x => x.contains(targetPhase)).get.takeWhile(x => !(x eq targetPhase))
5556
val checker = new Phase {
5657
def phaseName = "assertionChecker"
57-
override def run(using ctx: Context): Unit = assertion(ctx.compilationUnit.tpdTree, ctx)
58+
override def run(using ctx: Context, cs: CState): Unit =
59+
assertion(ctx.compilationUnit.tpdTree, ctx)
5860
}
5961
val lastGroupAppended = List(lastGroup ::: targetPhase :: Nil)
6062

compiler/test/dotty/tools/compilerSupport.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ import dotc.core.Comments.{ContextDoc, ContextDocstrings}
1717
* one used to compile the sources, this makes it easier to test for potential
1818
* issues involving retrieving symbols defined in a previous run.
1919
*/
20-
def inCompilerContext[T](classpath: String, separateRun: Boolean = true, scalaSources: String*)(op: Context ?=> T): T =
20+
def inCompilerContext[T](classpath: String, separateRun: Boolean = true, scalaSources: String*)(op: (Context, CState) ?=> T): T =
2121
val compiler = Compiler()
2222
val rootCtx = initCtx(classpath)
2323
val firstRun = compiler.newRun(using rootCtx)
2424
firstRun.compileFromStrings(scalaSources.toList)
2525
val opRun = if separateRun
2626
then compiler.newRun(using rootCtx)
2727
else firstRun
28-
op(using opRun.runContext)
28+
op(using opRun.runContext, opRun.runContext.cstate)
2929

3030
private def initCtx(classpath: String): Context =
3131
val ctx0 = (new ContextBase).initialCtx.fresh

compiler/test/dotty/tools/dotc/ast/UntypedTreeMapTest.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class UntpdTreeMapTest extends DottyTest {
2222
def testMapInterpolatedString = {
2323
val tree = parse(""" q"hello ${2017}!" """)
2424
val identity = new UntypedTreeMap {
25-
override def transform(tree: Tree)(using Context): Tree = tree match {
25+
override def transform(tree: Tree)(using Context, CState): Tree = tree match {
2626
case _ => super.transform(tree)
2727
}
2828
}

compiler/test/dotty/tools/dotc/classpath/ZipAndJarFileLookupFactoryTest.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import org.junit.Test
44
import java.nio.file._
55
import java.nio.file.attribute.FileTime
66

7-
import dotty.tools.dotc.core.Contexts.{Context, ContextBase, ctx}
7+
import dotty.tools.dotc.core.Contexts.{Context, ContextBase, CState, ctx}
88
import dotty.tools.io.AbstractFile
99

1010

@@ -16,7 +16,8 @@ class ZipAndJarFileLookupFactoryTest {
1616
val f = Files.createTempFile("test-", ".jar")
1717
Files.delete(f)
1818

19-
given Context = new ContextBase().initialCtx
19+
given c as Context = new ContextBase().initialCtx
20+
given CState = c.cstate
2021
assert(!ctx.settings.YdisableFlatCpCaching.value) // we're testing with our JAR metadata caching enabled.
2122

2223
def createCp = ZipAndJarClassPathFactory.create(AbstractFile.getFile(f))

compiler/test/dotty/tools/dotc/core/tasty/CommentPicklingTest.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import dotty.tools.dotc.ast.tpd
44
import dotty.tools.dotc.ast.tpd.TreeOps
55
import dotty.tools.dotc.{Driver, Main}
66
import dotty.tools.dotc.core.Comments.CommentsContext
7-
import dotty.tools.dotc.core.Contexts.Context
7+
import dotty.tools.dotc.core.Contexts._
88
import dotty.tools.dotc.core.Decorators.PreNamedString
99
import dotty.tools.dotc.core.Mode
1010
import dotty.tools.dotc.core.Names.Name
@@ -59,6 +59,7 @@ class CommentPicklingTest {
5959

6060
private def compileAndCheckComment(sources: List[String], treeName: Name, expectedComment: Option[String]): Unit = {
6161
compileAndUnpickle(sources) { (trees, ctx) =>
62+
given CState = ctx.cstate
6263
findTreeNamed(treeName)(trees, ctx) match {
6364
case Some(md: tpd.MemberDef) =>
6465
val symbol = md.symbol(using ctx)
@@ -73,6 +74,7 @@ class CommentPicklingTest {
7374

7475
private def findTreeNamed(name: Name)(trees: List[tpd.Tree], ctx: Context): Option[tpd.MemberDef] = {
7576
implicit val _ctx: Context = ctx
77+
given CState = ctx.cstate
7678
trees.flatMap { _.find { case md: tpd.MemberDef => md.name == name; case _ => false }
7779
.map(_.asInstanceOf[tpd.MemberDef]).toList
7880
}.headOption
@@ -108,6 +110,7 @@ class CommentPicklingTest {
108110
override def initCtx = super.initCtx.addMode(Mode.ReadComments)
109111
def unpickle[T](args: Array[String], files: List[File])(fn: (List[tpd.Tree], Context) => T): T = {
110112
implicit val (_, ctx: Context) = setup(args, initCtx)
113+
given CState = ctx.cstate
111114
ctx.initialize()
112115
val trees = files.flatMap { f =>
113116
val unpickler = new DottyUnpickler(f.toByteArray())

compiler/test/dotty/tools/dotc/parsing/DeSugarTest.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import ast.Trees._
1010
import ast.desugar
1111
import ast.desugar._
1212
import core.Mode
13-
import Contexts.Context
13+
import Contexts.{Context, CState}
1414

1515
import scala.collection.mutable.ListBuffer
1616

@@ -34,7 +34,7 @@ class DeSugarTest extends ParserTest {
3434
def transform(tree: Tree, mode: Mode)(using Context): Tree = withMode(mode) { transform(tree) }
3535
def transform(trees: List[Tree], mode: Mode)(using Context): List[Tree] = withMode(mode) { transform(trees) }
3636

37-
override def transform(tree: Tree)(using Context): Tree = {
37+
override def transform(tree: Tree)(using Context, CState): Tree = {
3838
val tree1 = desugar(tree)(using ctx.withModeBits(curMode))
3939
tree1 match {
4040
case TypedSplice(t) =>

compiler/test/dotty/tools/dotc/parsing/ModifiersParsingTest.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ import core.Contexts._
1414
import core.Flags
1515

1616
object ModifiersParsingTest {
17-
given Context = (new ContextBase).initialCtx
17+
private given c as Context = (new ContextBase).initialCtx
18+
private given CState = ctx.cstate
1819

1920
def parse(code: String): Tree = {
2021
val (_, stats) = new Parser(SourceFile.virtual("<meta>", code)).templateStatSeq()

compiler/test/dotty/tools/dotc/parsing/parsePackage.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ package parsing
55
import dotty.tools.dotc._
66
import core._, ast._
77
import Trees._
8-
import Contexts.Context
8+
import Contexts.{Context, CState}
99

1010
object parsePackage extends ParserTest {
1111

@@ -14,7 +14,7 @@ object parsePackage extends ParserTest {
1414
var nodes = 0
1515

1616
val transformer = new UntypedTreeMap {
17-
override def transform(tree: Tree)(using Context): Tree = {
17+
override def transform(tree: Tree)(using Context, CState): Tree = {
1818
nodes += 1
1919
tree match {
2020
case Ident(name) =>

compiler/test/dotty/tools/dotc/reporting/ErrorMessagesTest.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ trait ErrorMessagesTest extends DottyTest {
3636
if (!runCtx.reporter.hasErrors) new EmptyReport
3737
else {
3838
val rep = runCtx.reporter.asInstanceOf[StoreReporter]
39-
val msgs = rep.removeBufferedMessages(using runCtx).map(_.msg).reverse
39+
val msgs = rep.removeBufferedMessages.map(_.msg).reverse
4040
new Report(msgs, runCtx)
4141
}
4242
}

compiler/test/dotty/tools/dotc/reporting/TestMessageLaziness.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class TestMessageLaziness extends DottyTest {
1313
with UniqueMessagePositions with HideNonSensicalMessages {
1414
def doReport(dia: Diagnostic)(using Context) = ???
1515

16-
override def report(dia: Diagnostic)(using Context) = ()
16+
override def report(dia: Diagnostic)(using Context, CState) = ()
1717
}
1818

1919
case class LazyError() extends Message(ErrorMessageID.LazyErrorId) {

compiler/test/dotty/tools/dotc/reporting/TestReporter.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ extends Reporter with UniqueMessagePositions with HideNonSensicalMessages with M
3333
final def compilerCrashed: Boolean = _didCrash
3434

3535
protected final def inlineInfo(pos: SourcePosition)(using Context): String =
36+
given CState = ctx.cstate
3637
if (pos.exists) {
3738
if (pos.outer.exists)
3839
i"\ninlined at ${pos.outer}:\n" + inlineInfo(pos.outer)

compiler/test/dotty/tools/dotc/transform/TreeTransformerTest.scala

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import org.junit.{Assert, Test}
66
import MegaPhase._
77
import ast.tpd
88
import core.Constants.Constant
9-
import core.Contexts.Context
9+
import core.Contexts.{Context, CState}
1010

1111
class TreeTransformerTest extends DottyTest {
1212

@@ -32,7 +32,7 @@ class TreeTransformerTest extends DottyTest {
3232
given Context = context
3333
class ConstantTransform extends MiniPhase {
3434

35-
override def transformLiteral(tree: tpd.Literal)(using Context): tpd.Tree = tpd.Literal(Constant(2))
35+
override def transformLiteral(tree: tpd.Literal)(using Context, CState): tpd.Tree = tpd.Literal(Constant(2))
3636
override def phaseName: String = "canReplaceConstant"
3737
init(ctx.base, ctx.period.firstPhaseId, ctx.period.lastPhaseId)
3838
}
@@ -50,10 +50,10 @@ class TreeTransformerTest extends DottyTest {
5050
given Context = context
5151
class Transformation extends MiniPhase {
5252

53-
override def transformLiteral(tree: tpd.Literal)(using Context): tpd.Tree = tpd.Literal(Constant(-1))
53+
override def transformLiteral(tree: tpd.Literal)(using Context, CState): tpd.Tree = tpd.Literal(Constant(-1))
5454
override def phaseName: String = "canOverwrite"
5555

56-
override def transformValDef(tree: tpd.ValDef)(using Context): tpd.ValDef = {
56+
override def transformValDef(tree: tpd.ValDef)(using Context, CState): tpd.ValDef = {
5757
Assert.assertTrue("transformation of children succeeded",
5858
tree.rhs.toString == "Literal(Constant(-1))"
5959
)
@@ -77,14 +77,14 @@ class TreeTransformerTest extends DottyTest {
7777
class Transformation1 extends MiniPhase {
7878
override def phaseName: String = "transformationOrder1"
7979

80-
override def transformLiteral(tree: tpd.Literal)(using Context): tpd.Tree = {
80+
override def transformLiteral(tree: tpd.Literal)(using Context, CState): tpd.Tree = {
8181
Assert.assertTrue("correct constant",
8282
tree.const.toString == "Constant(1)"
8383
)
8484
tpd.cpy.Literal(tree)(Constant(-1))
8585
}
8686

87-
override def transformValDef(tree: tpd.ValDef)(using Context): tpd.ValDef = {
87+
override def transformValDef(tree: tpd.ValDef)(using Context, CState): tpd.ValDef = {
8888
Assert.assertTrue("transformation of children succeeded",
8989
tree.rhs.toString == "Literal(Constant(-1))"
9090
)
@@ -95,7 +95,7 @@ class TreeTransformerTest extends DottyTest {
9595
}
9696
class Transformation2 extends MiniPhase {
9797
override def phaseName: String = "transformationOrder2"
98-
override def transformValDef(tree: tpd.ValDef)(using Context): tpd.ValDef = {
98+
override def transformValDef(tree: tpd.ValDef)(using Context, CState): tpd.ValDef = {
9999
Assert.assertTrue("transformation of children succeeded",
100100
tree.rhs.toString == "Literal(Constant(2))"
101101
)
@@ -119,15 +119,15 @@ class TreeTransformerTest extends DottyTest {
119119
var transformed1 = 0
120120
class Transformation1 extends MiniPhase {
121121
override def phaseName: String = "invocationCount1"
122-
override def transformLiteral(tree: tpd.Literal)(using Context): tpd.Tree = {
122+
override def transformLiteral(tree: tpd.Literal)(using Context, CState): tpd.Tree = {
123123
transformed1 += 1
124124
Assert.assertTrue("correct constant",
125125
tree.const.toString == "Constant(1)"
126126
)
127127
tpd.cpy.Literal(tree)(Constant(-1))
128128
}
129129

130-
override def transformValDef(tree: tpd.ValDef)(using Context) = {
130+
override def transformValDef(tree: tpd.ValDef)(using Context, CState) = {
131131
transformed1 += 1
132132
Assert.assertTrue("transformation of children succeeded",
133133
tree.rhs.toString == "Literal(Constant(-3))"
@@ -141,7 +141,7 @@ class TreeTransformerTest extends DottyTest {
141141
class Transformation2 extends MiniPhase {
142142
var constantsSeen = 0
143143
override def phaseName: String = "invocationCount2"
144-
override def transformLiteral(tree: tpd.Literal)(using Context): tpd.Tree = {
144+
override def transformLiteral(tree: tpd.Literal)(using Context, CState): tpd.Tree = {
145145
transformed2 += 1
146146
constantsSeen match {
147147
case 0 =>
@@ -158,7 +158,7 @@ class TreeTransformerTest extends DottyTest {
158158
tpd.cpy.Literal(tree)(Constant(-3))
159159
}
160160

161-
override def transformValDef(tree: tpd.ValDef)(using Context) = {
161+
override def transformValDef(tree: tpd.ValDef)(using Context, CState) = {
162162
transformed2 += 1
163163
Assert.assertTrue("transformation of children succeeded",
164164
tree.rhs.toString == "Literal(Constant(-3))"

compiler/test/dotty/tools/repl/ReplCompilerTests.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import java.util.regex.Pattern
44

55
import org.junit.Assert.{assertTrue => assert, _}
66
import org.junit.{Ignore, Test}
7-
import dotty.tools.dotc.core.Contexts.Context
7+
import dotty.tools.dotc.core.Contexts.{Context, CState, ctx}
88

99
class ReplCompilerTests extends ReplTest {
1010
import ReplCompilerTests._
@@ -191,6 +191,7 @@ class ReplCompilerTests extends ReplTest {
191191

192192
@Test def i7934: Unit = fromInitialState { state =>
193193
given Context = state.context
194+
given CState = ctx.cstate
194195
assertFalse(ParseResult.isIncomplete("_ + 1")) // was: assertThrows[NullPointerException]
195196
}
196197

compiler/test/dotty/tools/vulpix/ParallelTesting.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,7 @@ trait ParallelTesting extends RunnerOrchestration { self =>
469469
(1 to n).foldLeft(emptyReporter) ((_, i) => op(i))
470470

471471
override def doCompile(comp: Compiler, files: List[String])(using Context) =
472+
given CState = ctx.cstate
472473
ntimes(times) { run =>
473474
val start = System.nanoTime()
474475
val rep = super.doCompile(comp, files)

doc-tool/test/dotty/tools/dottydoc/DottyDocTest.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ package dottydoc
44
import vulpix.TestConfiguration
55

66
import dotc.Compiler
7-
import dotc.core.Contexts.{ Context, ContextBase, FreshContext }
7+
import dotc.core.Contexts.{ Context, ContextBase, FreshContext, CState }
88
import dotc.core.Comments.{ ContextDoc, ContextDocstrings }
99
import dotc.util.SourceFile
1010
import dotc.core.Phases.Phase
@@ -43,12 +43,13 @@ trait DottyDocTest extends MessageRendering {
4343
ctx
4444
}
4545
implicit val ctx: FreshContext = freshCtx(Nil)
46+
given CState = ctx.cstate
4647

4748
private def compilerWithChecker(assertion: (Context, Map[String, Package]) => Unit) = new DocCompiler {
4849
override def phases = {
4950
val assertionPhase = new Phase {
5051
def phaseName = "assertionPhase"
51-
override def run(implicit ctx: Context): Unit = {
52+
override def run(using ctx: Context, cs: CState): Unit = {
5253
assertion(ctx, ctx.docbase.packages)
5354
if (ctx.reporter.hasErrors) {
5455
System.err.println("reporter had errors:")

0 commit comments

Comments
 (0)