New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
scalac crashes after reporting name clash between val and compiler generated companion object, given constructor default params. #3649
Milestone
Comments
Imported From: https://issues.scala-lang.org/browse/SI-3649?orig=1 |
@hubertp said: src/A1.scala:1: error: C is already defined as (compiler-generated) case class companion object C
object T { class C(val s: String = ""); val C = new C() {} }
^
Exception in thread "main" java.lang.Error: no-symbol does not have owner
at scala.tools.nsc.symtab.SymbolTable.abort(SymbolTable.scala:35)
at scala.tools.nsc.symtab.Symbols$$NoSymbol$$.owner(Symbols.scala:2055)
at scala.tools.nsc.ast.TreeGen.mkAttributedRef(TreeGen.scala:116)
at scala.tools.nsc.typechecker.NamesDefaults$$$$anonfun$$11.apply(NamesDefaults.scala:375)
at scala.tools.nsc.typechecker.NamesDefaults$$$$anonfun$$11.apply(NamesDefaults.scala:372)
at scala.collection.TraversableLike$$$$anonfun$$map$$1.apply(TraversableLike.scala:239)
at scala.collection.TraversableLike$$$$anonfun$$map$$1.apply(TraversableLike.scala:239)
at scala.collection.LinearSeqOptimized$$class.foreach(LinearSeqOptimized.scala:61)
at scala.collection.immutable.List.foreach(List.scala:45)
at scala.collection.TraversableLike$$class.map(TraversableLike.scala:239)
at scala.collection.immutable.List.map(List.scala:45)
at scala.tools.nsc.typechecker.NamesDefaults$$class.addDefaults(NamesDefaults.scala:372)
at scala.tools.nsc.Global$$analyzer$$.addDefaults(Global.scala:360)
at scala.tools.nsc.typechecker.Typers$$Typer.tryNamesDefaults$$1(Typers.scala:2313)
at scala.tools.nsc.typechecker.Typers$$Typer.doTypedApply(Typers.scala:2338)
at scala.tools.nsc.typechecker.Typers$$Typer.typedApply$$1(Typers.scala:3267)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3970)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4125)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStat$$1(Typers.scala:2029)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$24.apply(Typers.scala:2112)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$24.apply(Typers.scala:2112)
at scala.collection.immutable.List.loop$$1(List.scala:117)
at scala.collection.immutable.List.mapConserve(List.scala:133)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStats(Typers.scala:2112)
at scala.tools.nsc.typechecker.Typers$$Typer.typedBlock(Typers.scala:1854)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3817)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4125)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4174)
at scala.tools.nsc.typechecker.Typers$$Typer.typedDefDef(Typers.scala:1693)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3785)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4125)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStat$$1(Typers.scala:2029)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$24.apply(Typers.scala:2112)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$24.apply(Typers.scala:2112)
at scala.collection.immutable.List.loop$$1(List.scala:117)
at scala.collection.immutable.List.mapConserve(List.scala:133)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStats(Typers.scala:2112)
at scala.tools.nsc.typechecker.Typers$$Typer.typedTemplate(Typers.scala:1457)
at scala.tools.nsc.typechecker.Typers$$Typer.typedClassDef(Typers.scala:1218)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3776)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4125)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStat$$1(Typers.scala:2029)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$24.apply(Typers.scala:2112)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$24.apply(Typers.scala:2112)
at scala.collection.immutable.List.loop$$1(List.scala:117)
at scala.collection.immutable.List.mapConserve(List.scala:133)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStats(Typers.scala:2112)
at scala.tools.nsc.typechecker.Typers$$Typer.typedBlock(Typers.scala:1854)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3817)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4125)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4187)
at scala.tools.nsc.typechecker.Typers$$Typer.computeType(Typers.scala:4260)
at scala.tools.nsc.typechecker.Namers$$Namer.typeSig(Namers.scala:1190)
at scala.tools.nsc.typechecker.Namers$$Namer$$$$anonfun$$typeCompleter$$1.apply(Namers.scala:548)
at scala.tools.nsc.typechecker.Namers$$Namer$$$$anonfun$$typeCompleter$$1.apply(Namers.scala:546)
at scala.tools.nsc.typechecker.Namers$$$$anon$$1.complete(Namers.scala:1358)
at scala.tools.nsc.typechecker.Namers$$$$anon$$1.complete(Namers.scala:1356)
at scala.tools.nsc.symtab.Symbols$$Symbol.info(Symbols.scala:706)
at scala.tools.nsc.symtab.Symbols$$Symbol.initialize(Symbols.scala:818)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3763)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4125)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStat$$1(Typers.scala:2029)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$24.apply(Typers.scala:2112)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$24.apply(Typers.scala:2112)
at scala.collection.immutable.List.loop$$1(List.scala:117)
at scala.collection.immutable.List.mapConserve(List.scala:133)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStats(Typers.scala:2112)
at scala.tools.nsc.typechecker.Typers$$Typer.typedTemplate(Typers.scala:1457)
at scala.tools.nsc.typechecker.Typers$$Typer.typedModuleDef(Typers.scala:1260)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3779)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4125)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStat$$1(Typers.scala:2029)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$24.apply(Typers.scala:2112)
at scala.tools.nsc.typechecker.Typers$$Typer$$$$anonfun$$24.apply(Typers.scala:2112)
at scala.collection.immutable.List.loop$$1(List.scala:117)
at scala.collection.immutable.List.mapConserve(List.scala:133)
at scala.tools.nsc.typechecker.Typers$$Typer.typedStats(Typers.scala:2112)
at scala.tools.nsc.typechecker.Typers$$Typer.typed1(Typers.scala:3772)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4125)
at scala.tools.nsc.typechecker.Typers$$Typer.typed(Typers.scala:4174)
at scala.tools.nsc.typechecker.Analyzer$$typerFactory$$$$anon$$3.apply(Analyzer.scala:94)
at scala.tools.nsc.Global$$GlobalPhase$$$$anonfun$$applyPhase$$1.apply$$mcV$$sp(Global.scala:340)
at scala.tools.nsc.Global$$GlobalPhase$$$$anonfun$$applyPhase$$1.apply(Global.scala:340)
at scala.tools.nsc.Global$$GlobalPhase$$$$anonfun$$applyPhase$$1.apply(Global.scala:340)
at scala.tools.nsc.reporters.Reporter.withSource(Reporter.scala:48)
at scala.tools.nsc.Global$$GlobalPhase.applyPhase(Global.scala:340)
at scala.tools.nsc.typechecker.Analyzer$$typerFactory$$$$anon$$3$$$$anonfun$$run$$1.apply(Analyzer.scala:86)
at scala.tools.nsc.typechecker.Analyzer$$typerFactory$$$$anon$$3$$$$anonfun$$run$$1.apply(Analyzer.scala:86)
at scala.collection.Iterator$$class.foreach(Iterator.scala:644)
at scala.collection.mutable.ListBuffer$$$$anon$$1.foreach(ListBuffer.scala:311)
at scala.tools.nsc.typechecker.Analyzer$$typerFactory$$$$anon$$3.run(Analyzer.scala:86)
at scala.tools.nsc.Global$$Run.compileSources(Global.scala:874)
at scala.tools.nsc.Global$$Run.compile(Global.scala:971)
at scala.tools.nsc.Main$$.process(Main.scala:106)
at scala.tools.nsc.Main$$.main(Main.scala:122)
at scala.tools.nsc.Main.main(Main.scala) |
@hubertp said: |
@hubertp said: object T { class C(val s: String = ""); val C = new C() {} which crashes the compiler. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
While poking around #3648, I found this.
If C is a case class without constructor default params, the name clash is reported without a crash:
Tested both in the REPL behaviour and with scalac.
The text was updated successfully, but these errors were encountered: