Skip to content

scalac fails with a NullPointerException when compiling the attached program #5264

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

Closed
scabug opened this issue Dec 2, 2011 · 2 comments
Closed
Assignees

Comments

@scabug
Copy link

scabug commented Dec 2, 2011

trait GenCtx[Ctx <: GenCtx[Ctx]] {
  type EntityId[A]
}

trait Gen[Ctx <: GenCtx[Ctx], A] {}

class Patient {}
class IDocData {}

case class Hl7Generators[Ctx <: GenCtx[Ctx]]() {

  case class PatGen(patId: Ctx#EntityId[Patient]) extends Gen[Ctx, IDocData]
}

object Test {
  def foo[Ctx <: GenCtx[Ctx]](eid: Ctx#EntityId[Patient]): Gen[Ctx, IDocData] = {
    Hl7Generators[Ctx].PatGen(eid)
  }
}
Scala version 2.9.1.final (OpenJDK 64-Bit Server VM, Java 1.7.0_147-icedtea):
java.lang.NullPointerException
	at scala.tools.nsc.typechecker.Typers$Typer.typedTypeConstructor(Typers.scala:4394)
	at scala.tools.nsc.typechecker.Typers$Typer.typedTypeConstructor(Typers.scala:4418)
	at scala.tools.nsc.typechecker.Typers$Typer.typedNew$1(Typers.scala:3198)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4031)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4271)
	at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:4350)
	at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:4356)
	at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4144)
	at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:4271)
	at scala.tools.nsc.typechecker.Typers$Typer.typedOperator(Typers.scala:4362)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.toConstructor(RefChecks.scala:1018)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformCaseApply(RefChecks.scala:1307)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformSelect(RefChecks.scala:1378)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:1499)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:837)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:1517)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$5.apply(Trees.scala:783)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$5.apply(Trees.scala:781)
	at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:899)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:780)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:1517)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformStat(RefChecks.scala:1130)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer$$anonfun$transformStats$1.apply(RefChecks.scala:1030)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer$$anonfun$transformStats$1.apply(RefChecks.scala:1030)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
	at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
	at scala.collection.immutable.List.foreach(List.scala:45)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:200)
	at scala.collection.immutable.List.flatMap(List.scala:45)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformStats(RefChecks.scala:1030)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:797)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:1517)
	at scala.tools.nsc.ast.Trees$Transformer.transformTemplate(Trees.scala:875)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:767)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:766)
	at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:899)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:765)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:1517)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:873)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:873)
	at scala.collection.immutable.List.loop$1(List.scala:117)
	at scala.collection.immutable.List.mapConserve(List.scala:133)
	at scala.tools.nsc.ast.Trees$Transformer.transformTrees(Trees.scala:873)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.eliminateModuleDefs(RefChecks.scala:1078)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformStat(RefChecks.scala:1115)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer$$anonfun$transformStats$1.apply(RefChecks.scala:1030)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer$$anonfun$transformStats$1.apply(RefChecks.scala:1030)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
	at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
	at scala.collection.immutable.List.foreach(List.scala:45)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:200)
	at scala.collection.immutable.List.flatMap(List.scala:45)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformStats(RefChecks.scala:1030)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:797)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:1517)
	at scala.tools.nsc.ast.Trees$Transformer.transformTemplate(Trees.scala:875)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:767)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:766)
	at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:899)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:765)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:1517)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:873)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:873)
	at scala.collection.immutable.List.loop$1(List.scala:117)
	at scala.collection.immutable.List.mapConserve(List.scala:133)
	at scala.tools.nsc.ast.Trees$Transformer.transformTrees(Trees.scala:873)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.eliminateModuleDefs(RefChecks.scala:1078)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformStat(RefChecks.scala:1115)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer$$anonfun$transformStats$1.apply(RefChecks.scala:1030)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer$$anonfun$transformStats$1.apply(RefChecks.scala:1030)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
	at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
	at scala.collection.immutable.List.foreach(List.scala:45)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:200)
	at scala.collection.immutable.List.flatMap(List.scala:45)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformStats(RefChecks.scala:1030)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:797)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:1517)
	at scala.tools.nsc.ast.Trees$Transformer.transformTemplate(Trees.scala:875)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:767)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:766)
	at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:899)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:765)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:1517)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:873)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:873)
	at scala.collection.immutable.List.loop$1(List.scala:117)
	at scala.collection.immutable.List.mapConserve(List.scala:133)
	at scala.tools.nsc.ast.Trees$Transformer.transformTrees(Trees.scala:873)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.eliminateModuleDefs(RefChecks.scala:1078)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformStat(RefChecks.scala:1115)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer$$anonfun$transformStats$1.apply(RefChecks.scala:1030)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer$$anonfun$transformStats$1.apply(RefChecks.scala:1030)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
	at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
	at scala.collection.immutable.List.foreach(List.scala:45)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:200)
	at scala.collection.immutable.List.flatMap(List.scala:45)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformStats(RefChecks.scala:1030)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:797)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:1517)
	at scala.tools.nsc.ast.Trees$Transformer.transformTemplate(Trees.scala:875)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:767)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$2.apply(Trees.scala:766)
	at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:899)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:765)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:1517)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:873)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transformTrees$1.apply(Trees.scala:873)
	at scala.collection.immutable.List.loop$1(List.scala:117)
	at scala.collection.immutable.List.mapConserve(List.scala:133)
	at scala.tools.nsc.ast.Trees$Transformer.transformTrees(Trees.scala:873)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.eliminateModuleDefs(RefChecks.scala:1078)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformStat(RefChecks.scala:1115)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer$$anonfun$transformStats$1.apply(RefChecks.scala:1030)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer$$anonfun$transformStats$1.apply(RefChecks.scala:1030)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
	at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
	at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
	at scala.collection.immutable.List.foreach(List.scala:45)
	at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:200)
	at scala.collection.immutable.List.flatMap(List.scala:45)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transformStats(RefChecks.scala:1030)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$1.apply(Trees.scala:761)
	at scala.tools.nsc.ast.Trees$Transformer$$anonfun$transform$1.apply(Trees.scala:761)
	at scala.tools.nsc.ast.Trees$Transformer.atOwner(Trees.scala:899)
	at scala.tools.nsc.ast.Trees$Transformer.transform(Trees.scala:760)
	at scala.tools.nsc.typechecker.RefChecks$RefCheckTransformer.transform(RefChecks.scala:1517)
	at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:892)
	at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
	at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:329)
	at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:297)
	at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:297)
	at scala.collection.Iterator$class.foreach(Iterator.scala:660)
	at scala.collection.mutable.ListBuffer$$anon$1.foreach(ListBuffer.scala:316)
	at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:297)
	at scala.tools.nsc.Global$Run.compileSources(Global.scala:953)
	at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.compileAndSaveRun(IMain.scala:756)
	at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.compile(IMain.scala:731)
	at scala.tools.nsc.interpreter.IMain$Request.compile(IMain.scala:873)
	at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:576)
	at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:543)
	at scala.tools.nsc.interpreter.ILoop.pasteCommand(ILoop.scala:662)
	at scala.tools.nsc.interpreter.ILoop$$anonfun$standardCommands$9.apply(ILoop.scala:223)
	at scala.tools.nsc.interpreter.ILoop$$anonfun$standardCommands$9.apply(ILoop.scala:223)
	at scala.tools.nsc.interpreter.LoopCommands$LoopCommand$$anonfun$nullary$1.apply(LoopCommands.scala:64)
	at scala.tools.nsc.interpreter.LoopCommands$LoopCommand$$anonfun$nullary$1.apply(LoopCommands.scala:64)
	at scala.tools.nsc.interpreter.LoopCommands$NullaryCmd.apply(LoopCommands.scala:75)
	at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:646)
	at scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:542)
	at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:550)
	at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:822)
	at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:67)
	at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:80)
	at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:89)
	at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
Scala version 2.10.0.r26093-b20111130020250 (OpenJDK 64-Bit Server VM, Java 1.7.0_147-icedtea).

rejects the code:

<console>:23: error: Hl7Generators[Ctx] is not a legal prefix for a constructor
           Hl7Generators[Ctx].PatGen(eid)
                              ^
@scabug
Copy link
Author

scabug commented Dec 2, 2011

Imported From: https://issues.scala-lang.org/browse/SI-5264?orig=1
Reporter: Stefan Wehr (stefanwehr)
Affected Versions: 2.9.1
Attachments:

  • Bug.scala (created on Dec 2, 2011 5:44:47 PM UTC, 397 bytes)

@scabug
Copy link
Author

scabug commented Dec 2, 2011

@paulp said:
#4859.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants