Skip to content

Compiler crash: Private object accessed from constructor #3302

Closed
@allanrenucci

Description

@allanrenucci

In file A.scala:

case class A(x: Int)
private object A

In file B.scala:

object B {
  A(0)
}

Running dotc A.scala B.scala

Stacktrace
exception while transforming A of class class dotty.tools.dotc.ast.Trees$Ident # 762
exception while transforming A.apply of class class dotty.tools.dotc.ast.Trees$Select # 763
exception while transforming A.apply(0) of class class dotty.tools.dotc.ast.Trees$Apply # 765
exception while transforming {
  super()
  A.apply(0)
  ()
} of class class dotty.tools.dotc.ast.Trees$Block # 1021
exception while transforming def (): Unit = 
  {
    super()
    A.apply(0)
    ()
  } of class class dotty.tools.dotc.ast.Trees$DefDef # 1022
exception while transforming  extends Object { 
  def (): Unit = 
    {
      super()
      A.apply(0)
      ()
    }
} of class class dotty.tools.dotc.ast.Trees$Template # 1023
exception while transforming @scala.annotation.internal.SourceFile("tests/allan/Test2.scala") final module 
  class
 B extends Object { 
  def (): Unit = 
    {
      super()
      A.apply(0)
      ()
    }
} of class class dotty.tools.dotc.ast.Trees$TypeDef # 1024
exception while transforming package  {
  final lazy module val B: B = new B()
  @scala.annotation.internal.SourceFile("tests/allan/Test2.scala") final module 
    class
   B extends Object { 
    def (): Unit = 
      {
        super()
        A.apply(0)
        ()
      }
  }
} of class class dotty.tools.dotc.ast.Trees$PackageDef # 1025

exception occurred while compiling tests/allan/Test.scala, tests/allan/Test2.scala
Exception in thread "main" java.lang.AssertionError: assertion failed: private object A in tests/allan/Test.scala accessed from constructor B in object B in tests/allan/Test2.scala
at scala.Predef$.assert(Predef.scala:219)
at dotty.tools.dotc.transform.ExpandPrivate.ensurePrivateAccessible(ExpandPrivate.scala:95)
at dotty.tools.dotc.transform.ExpandPrivate.transformIdent(ExpandPrivate.scala:100)
at dotty.tools.dotc.transform.ExpandPrivate.transformIdent(ExpandPrivate.scala:39)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.goIdent(TreeTransform.scala:587)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transformNamed(TreeTransform.scala:969)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.$anonfun$transform$5(TreeTransform.scala:1208)
at dotty.tools.dotc.reporting.Reporting.traceIndented(Reporter.scala:140)
at dotty.tools.dotc.reporting.Reporting.traceIndented$(Reporter.scala:139)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transform(TreeTransform.scala:1200)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transformNamed(TreeTransform.scala:974)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.$anonfun$transform$5(TreeTransform.scala:1208)
at dotty.tools.dotc.reporting.Reporting.traceIndented(Reporter.scala:140)
at dotty.tools.dotc.reporting.Reporting.traceIndented$(Reporter.scala:139)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transform(TreeTransform.scala:1200)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transformUnnamed(TreeTransform.scala:1021)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.$anonfun$transform$5(TreeTransform.scala:1209)
at dotty.tools.dotc.reporting.Reporting.traceIndented(Reporter.scala:140)
at dotty.tools.dotc.reporting.Reporting.traceIndented$(Reporter.scala:139)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transform(TreeTransform.scala:1200)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transformStat$1(TreeTransform.scala:1236)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.$anonfun$transformStats$2(TreeTransform.scala:1238)
at dotty.tools.dotc.core.Decorators$ListDecorator$.loop$1(Decorators.scala:62)
at dotty.tools.dotc.core.Decorators$ListDecorator$.mapconserve$extension(Decorators.scala:78)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transformStats(TreeTransform.scala:1238)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transformUnnamed(TreeTransform.scala:1043)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.$anonfun$transform$5(TreeTransform.scala:1209)
at dotty.tools.dotc.reporting.Reporting.traceIndented(Reporter.scala:140)
at dotty.tools.dotc.reporting.Reporting.traceIndented$(Reporter.scala:139)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transform(TreeTransform.scala:1200)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transformNamed(TreeTransform.scala:994)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.$anonfun$transform$5(TreeTransform.scala:1208)
at dotty.tools.dotc.reporting.Reporting.traceIndented(Reporter.scala:140)
at dotty.tools.dotc.reporting.Reporting.traceIndented$(Reporter.scala:139)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transform(TreeTransform.scala:1200)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transformSub(TreeTransform.scala:1246)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transformUnnamed(TreeTransform.scala:1124)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.$anonfun$transform$5(TreeTransform.scala:1209)
at dotty.tools.dotc.reporting.Reporting.traceIndented(Reporter.scala:140)
at dotty.tools.dotc.reporting.Reporting.traceIndented$(Reporter.scala:139)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transform(TreeTransform.scala:1200)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transformNamed(TreeTransform.scala:1001)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.$anonfun$transform$5(TreeTransform.scala:1208)
at dotty.tools.dotc.reporting.Reporting.traceIndented(Reporter.scala:140)
at dotty.tools.dotc.reporting.Reporting.traceIndented$(Reporter.scala:139)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transform(TreeTransform.scala:1200)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transformStat$1(TreeTransform.scala:1234)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.$anonfun$transformStats$2(TreeTransform.scala:1238)
at dotty.tools.dotc.core.Decorators$ListDecorator$.loop$1(Decorators.scala:62)
at dotty.tools.dotc.core.Decorators$ListDecorator$.mapconserve$extension(Decorators.scala:78)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transformStats(TreeTransform.scala:1238)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transformUnnamed(TreeTransform.scala:1153)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.$anonfun$transform$5(TreeTransform.scala:1209)
at dotty.tools.dotc.reporting.Reporting.traceIndented(Reporter.scala:140)
at dotty.tools.dotc.reporting.Reporting.traceIndented$(Reporter.scala:139)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.transform(TreeTransform.scala:1200)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.macroTransform(TreeTransform.scala:580)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.run(TreeTransform.scala:498)
at dotty.tools.dotc.core.Phases$Phase.$anonfun$runOn$1(Phases.scala:288)
at scala.collection.immutable.List.map(List.scala:287)
at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:286)
at dotty.tools.dotc.core.Phases$Phase.runOn$(Phases.scala:285)
at dotty.tools.dotc.transform.TreeTransforms$TreeTransformer.runOn(TreeTransform.scala:492)
at dotty.tools.dotc.Run.$anonfun$compileUnits$3(Run.scala:124)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.util.Stats$.trackTime(Stats.scala:47)
at dotty.tools.dotc.Run.$anonfun$compileUnits$2(Run.scala:122)
at dotty.tools.dotc.Run.$anonfun$compileUnits$2$adapted(Run.scala:120)
at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:191)
at dotty.tools.dotc.Run.$anonfun$compileUnits$1(Run.scala:120)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:86)
at dotty.tools.dotc.Run.compileUnits(Run.scala:108)
at dotty.tools.dotc.Run.compileSources(Run.scala:95)
at dotty.tools.dotc.Run.compile(Run.scala:79)
at dotty.tools.dotc.Driver.doCompile(Driver.scala:26)
at dotty.tools.dotc.Driver.process(Driver.scala:124)
at dotty.tools.dotc.Driver.process(Driver.scala:93)
at dotty.tools.dotc.Driver.process(Driver.scala:105)
at dotty.tools.dotc.Driver.main(Driver.scala:132)
at dotty.tools.dotc.Main.main(Main.scala)


Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions