typelevel / scala

Typelevel Scala, a fork of Scala
http://typelevel.org/scala/
372 stars 21 forks source link

Problems with -Ykind-polymorphism #167

Open nigredo-tori opened 6 years ago

nigredo-tori commented 6 years ago

Here are two bugs that are triggered by -Ykind-polymorphism. Both can be reproduced with SBT 1.0.0 and following options:

scalaOrganization in ThisBuild := "org.typelevel"
scalaVersion in ThisBuild := "2.12.3-bin-typelevel-4"
scalacOptions += "-Ykind-polymorphism"

First, this code:

trait Foo[A, B]
object Foo {
  type FooInt[X] = Foo[Int, X]
}
case class Bar(foo: Foo.FooInt[String])

fails to compile:

[error] /home/dmitry/work/various-examples/scala/kind-polymorphism-1/Main.scala:5:25: [Kind-Polymorphic Error] Foo.FooInt[String] inferred to type Foo.FooInt[String] with illegally kinded type arguments String applied to type Foo[A,B] 
[error] case class Bar(foo: Foo.FooInt[String])
[error]                         ^

Second, this code:

case class Foo(
  bar: Bar[Option]
)
case class Bar[F[_]]()

results in typer crash:

[error] 
[error]   no-symbol does not have a type constructor (this may indicate scalac cannot find fundamental classes)
[error]      while compiling: /home/dmitry/work/various-examples/scala/kind-polymorphism-2/Main.scala
[error]         during phase: typer
[error]      library version: version 2.12.3-bin-typelevel-4
[error]     compiler version: version 2.12.3-bin-typelevel-4
[error]   reconstructed args: -Ykind-polymorphism -bootclasspath /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/resources.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jce.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jfr.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/classes:/home/dmitry/.ivy2/cache/org.typelevel/scala-library/jars/scala-library-2.12.3-bin-typelevel-4.jar -classpath /home/dmitry/work/various-examples/scala/kind-polymorphism-2/target/scala-2.12/classes
[error] 
[error]   last tree to typer: AppliedTypeTree
[error]        tree position: line 2 of /home/dmitry/work/various-examples/scala/kind-polymorphism-2/Main.scala
[error]             tree tpe: Bar[Option]
[error]               symbol: <none>
[error]    symbol definition: <none> (a NoSymbol)
[error]       symbol package: <none>
[error]        symbol owners: 
[error]            call site: value bar in class Foo in package <empty>
[error] 
[error] == Source file context for tree position ==
[error] 
[error]      1 case class Foo(
[error]      2   bar: Bar[Option]
[error]      3 )
[error]      4 case class Bar[F[_]]()
[error] ## Exception when compiling 1 sources to /home/dmitry/work/various-examples/scala/kind-polymorphism-2/target/scala-2.12/classes
[error] 
[error]   no-symbol does not have a type constructor (this may indicate scalac cannot find fundamental classes)
[error]      while compiling: /home/dmitry/work/various-examples/scala/kind-polymorphism-2/Main.scala
[error]         during phase: typer
[error]      library version: version 2.12.3-bin-typelevel-4
[error]     compiler version: version 2.12.3-bin-typelevel-4
[error]   reconstructed args: -Ykind-polymorphism -bootclasspath /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/resources.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jce.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jfr.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/classes:/home/dmitry/.ivy2/cache/org.typelevel/scala-library/jars/scala-library-2.12.3-bin-typelevel-4.jar -classpath /home/dmitry/work/various-examples/scala/kind-polymorphism-2/target/scala-2.12/classes
[error] 
[error]   last tree to typer: AppliedTypeTree
[error]        tree position: line 2 of /home/dmitry/work/various-examples/scala/kind-polymorphism-2/Main.scala
[error]             tree tpe: Bar[Option]
[error]               symbol: <none>
[error]    symbol definition: <none> (a NoSymbol)
[error]       symbol package: <none>
[error]        symbol owners: 
[error]            call site: value bar in class Foo in package <empty>
[error] 
[error] == Source file context for tree position ==
[error] 
[error]      1 case class Foo(
[error]      2   bar: Bar[Option]
[error]      3 )
[error]      4 case class Bar[F[_]]()
[error] scala.reflect.internal.Reporting.abort(Reporting.scala:61)
[error] scala.reflect.internal.Reporting.abort$(Reporting.scala:57)
[error] scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:16)
[error] scala.reflect.internal.Symbols$Symbol.typeConstructor(Symbols.scala:1479)
[error] scala.reflect.internal.Symbols$TypeSymbol.$anonfun$updateTypeCache$1(Symbols.scala:3137)
[error] scala.collection.immutable.List.map(List.scala:283)
[error] scala.reflect.internal.Symbols$TypeSymbol.updateTypeCache(Symbols.scala:3137)
[error] scala.reflect.internal.Symbols$TypeSymbol.maybeUpdateTypeCache(Symbols.scala:3123)
[error] scala.reflect.internal.Symbols$TypeSymbol.tpe_$times(Symbols.scala:3101)
[error] scala.reflect.internal.Symbols$Symbol.tpe(Symbols.scala:1460)
[error] scala.tools.nsc.typechecker.Typers$Typer.$anonfun$adapt$7(Typers.scala:968)
[error] scala.collection.immutable.List.flatMap(List.scala:335)
[error] scala.tools.nsc.typechecker.Typers$Typer.kpBadKindArityMatches$1(Typers.scala:967)
[error] scala.tools.nsc.typechecker.Typers$Typer.adaptType$1(Typers.scala:1003)
[error] scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1182)
[error] scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1244)
[error] scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5671)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5687)
[error] scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5631)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5635)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedType(Typers.scala:5780)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedType(Typers.scala:5783)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2300)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5569)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5620)
[error] scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5657)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5687)
[error] scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5631)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5635)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5718)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:3120)
[error] scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$6(Typers.scala:3218)
[error] scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$6$adapted(Typers.scala:3215)
[error] scala.Option.foreach(Option.scala:257)
[error] scala.Option$WithFilter.foreach(Option.scala:209)
[error] scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$4(Typers.scala:3215)
[error] scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$4$adapted(Typers.scala:3213)
[error] scala.collection.immutable.List.foreach(List.scala:389)
[error] scala.reflect.internal.Scopes$Scope.foreach(Scopes.scala:396)
[error] scala.tools.nsc.typechecker.Typers$Typer.addSynthetics$1(Typers.scala:3213)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3275)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:2017)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1841)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5570)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5620)
[error] scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5657)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5687)
[error] scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5631)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5635)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5718)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:3120)
[error] scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3265)
[error] scala.collection.immutable.List.loop$1(List.scala:176)
[error] scala.collection.immutable.List.mapConserve(List.scala:200)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3265)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:5260)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5573)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5620)
[error] scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5657)
[error] scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5687)
[error] scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5631)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5635)
[error] scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5714)
[error] scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.apply(Analyzer.scala:102)
[error] scala.tools.nsc.Global$GlobalPhase.$anonfun$applyPhase$1(Global.scala:428)
[error] scala.tools.nsc.Global$GlobalPhase.withCurrentUnitNoLog(Global.scala:421)
[error] scala.tools.nsc.Global$GlobalPhase.withCurrentUnit(Global.scala:412)
[error] scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:428)
[error] scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.$anonfun$run$1(Analyzer.scala:94)
[error] scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.$anonfun$run$1$adapted(Analyzer.scala:93)
[error] scala.collection.Iterator.foreach(Iterator.scala:929)
[error] scala.collection.Iterator.foreach$(Iterator.scala:929)
[error] scala.collection.AbstractIterator.foreach(Iterator.scala:1417)
[error] scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.run(Analyzer.scala:93)
[error] scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1465)
[error] scala.tools.nsc.Global$Run.compileUnits(Global.scala:1450)
[error] scala.tools.nsc.Global$Run.compileSources(Global.scala:1446)
[error] scala.tools.nsc.Global$Run.compile(Global.scala:1549)
[error] xsbt.CachedCompiler0.run(CompilerInterface.scala:131)
[error] xsbt.CachedCompiler0.run(CompilerInterface.scala:106)
[error] xsbt.CompilerInterface.run(CompilerInterface.scala:32)
[error] sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error] sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] java.lang.reflect.Method.invoke(Method.java:498)
[error] sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:237)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:111)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:90)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:81)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:132)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:72)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:115)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:305)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:305)
[error] sbt.internal.inc.Incremental$.doCompile(Incremental.scala:101)
[error] sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:82)
[error] sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:118)
[error] sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:64)
[error] sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:84)
[error] sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:129)
[error] sbt.internal.inc.Incremental$.compile(Incremental.scala:75)
[error] sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:70)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:309)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:267)
[error] sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:158)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:237)
[error] sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:68)
[error] sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:1393)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:1375)
[error] scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:42)
[error] sbt.std.Transform$$anon$4.work(System.scala:64)
[error] sbt.Execute.$anonfun$submit$2(Execute.scala:257)
[error] sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
[error] sbt.Execute.work(Execute.scala:266)
[error] sbt.Execute.$anonfun$submit$1(Execute.scala:257)
[error] sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:167)
[error] sbt.CompletionService$$anon$2.call(CompletionService.scala:32)
[error] java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error] java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error] java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error] java.lang.Thread.run(Thread.java:748)
[error]            
[error] scala.reflect.internal.FatalError: 
[error]   no-symbol does not have a type constructor (this may indicate scalac cannot find fundamental classes)
[error]      while compiling: /home/dmitry/work/various-examples/scala/kind-polymorphism-2/Main.scala
[error]         during phase: typer
[error]      library version: version 2.12.3-bin-typelevel-4
[error]     compiler version: version 2.12.3-bin-typelevel-4
[error]   reconstructed args: -Ykind-polymorphism -bootclasspath /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/resources.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jce.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jfr.jar:/usr/lib/jvm/java-8-openjdk-amd64/jre/classes:/home/dmitry/.ivy2/cache/org.typelevel/scala-library/jars/scala-library-2.12.3-bin-typelevel-4.jar -classpath /home/dmitry/work/various-examples/scala/kind-polymorphism-2/target/scala-2.12/classes
[error] 
[error]   last tree to typer: AppliedTypeTree
[error]        tree position: line 2 of /home/dmitry/work/various-examples/scala/kind-polymorphism-2/Main.scala
[error]             tree tpe: Bar[Option]
[error]               symbol: <none>
[error]    symbol definition: <none> (a NoSymbol)
[error]       symbol package: <none>
[error]        symbol owners: 
[error]            call site: value bar in class Foo in package <empty>
[error] 
[error] == Source file context for tree position ==
[error] 
[error]      1 case class Foo(
[error]      2   bar: Bar[Option]
[error]      3 )
[error]      4 case class Bar[F[_]]()
[error]     at scala.reflect.internal.Reporting.abort(Reporting.scala:61)
[error]     at scala.reflect.internal.Reporting.abort$(Reporting.scala:57)
[error]     at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:16)
[error]     at scala.reflect.internal.Symbols$Symbol.typeConstructor(Symbols.scala:1479)
[error]     at scala.reflect.internal.Symbols$TypeSymbol.$anonfun$updateTypeCache$1(Symbols.scala:3137)
[error]     at scala.collection.immutable.List.map(List.scala:283)
[error]     at scala.reflect.internal.Symbols$TypeSymbol.updateTypeCache(Symbols.scala:3137)
[error]     at scala.reflect.internal.Symbols$TypeSymbol.maybeUpdateTypeCache(Symbols.scala:3123)
[error]     at scala.reflect.internal.Symbols$TypeSymbol.tpe_$times(Symbols.scala:3101)
[error]     at scala.reflect.internal.Symbols$Symbol.tpe(Symbols.scala:1460)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$adapt$7(Typers.scala:968)
[error]     at scala.collection.immutable.List.flatMap(List.scala:335)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.kpBadKindArityMatches$1(Typers.scala:967)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.adaptType$1(Typers.scala:1003)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.vanillaAdapt$1(Typers.scala:1182)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1244)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5671)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5687)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5631)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5635)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedType(Typers.scala:5780)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedType(Typers.scala:5783)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:2300)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5569)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5620)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5657)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5687)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5631)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5635)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5718)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:3120)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$6(Typers.scala:3218)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$6$adapted(Typers.scala:3215)
[error]     at scala.Option.foreach(Option.scala:257)
[error]     at scala.Option$WithFilter.foreach(Option.scala:209)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$4(Typers.scala:3215)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$4$adapted(Typers.scala:3213)
[error]     at scala.collection.immutable.List.foreach(List.scala:389)
[error]     at scala.reflect.internal.Scopes$Scope.foreach(Scopes.scala:396)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.addSynthetics$1(Typers.scala:3213)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3275)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:2017)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1841)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5570)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5620)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5657)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5687)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5631)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5635)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5718)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:3120)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.$anonfun$typedStats$10(Typers.scala:3265)
[error]     at scala.collection.immutable.List.loop$1(List.scala:176)
[error]     at scala.collection.immutable.List.mapConserve(List.scala:200)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3265)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:5260)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5573)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5620)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5657)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typedInternal(Typers.scala:5687)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5631)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5635)
[error]     at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5714)
[error]     at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.apply(Analyzer.scala:102)
[error]     at scala.tools.nsc.Global$GlobalPhase.$anonfun$applyPhase$1(Global.scala:428)
[error]     at scala.tools.nsc.Global$GlobalPhase.withCurrentUnitNoLog(Global.scala:421)
[error]     at scala.tools.nsc.Global$GlobalPhase.withCurrentUnit(Global.scala:412)
[error]     at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:428)
[error]     at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.$anonfun$run$1(Analyzer.scala:94)
[error]     at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.$anonfun$run$1$adapted(Analyzer.scala:93)
[error]     at scala.collection.Iterator.foreach(Iterator.scala:929)
[error]     at scala.collection.Iterator.foreach$(Iterator.scala:929)
[error]     at scala.collection.AbstractIterator.foreach(Iterator.scala:1417)
[error]     at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.run(Analyzer.scala:93)
[error]     at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1465)
[error]     at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1450)
[error]     at scala.tools.nsc.Global$Run.compileSources(Global.scala:1446)
[error]     at scala.tools.nsc.Global$Run.compile(Global.scala:1549)
[error]     at xsbt.CachedCompiler0.run(CompilerInterface.scala:131)
[error]     at xsbt.CachedCompiler0.run(CompilerInterface.scala:106)
[error]     at xsbt.CompilerInterface.run(CompilerInterface.scala:32)
[error]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error]     at java.lang.reflect.Method.invoke(Method.java:498)
[error]     at sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:237)
[error]     at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:111)
[error]     at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:90)
[error]     at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:81)
[error]     at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error]     at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:132)
[error]     at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:72)
[error]     at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:115)
[error]     at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:305)
[error]     at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:305)
[error]     at sbt.internal.inc.Incremental$.doCompile(Incremental.scala:101)
[error]     at sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:82)
[error]     at sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:118)
[error]     at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:64)
[error]     at sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:84)
[error]     at sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:129)
[error]     at sbt.internal.inc.Incremental$.compile(Incremental.scala:75)
[error]     at sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:70)
[error]     at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:309)
[error]     at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:267)
[error]     at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:158)
[error]     at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:237)
[error]     at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:68)
[error]     at sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:1393)
[error]     at sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:1375)
[error]     at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error]     at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:42)
[error]     at sbt.std.Transform$$anon$4.work(System.scala:64)
[error]     at sbt.Execute.$anonfun$submit$2(Execute.scala:257)
[error]     at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
[error]     at sbt.Execute.work(Execute.scala:266)
[error]     at sbt.Execute.$anonfun$submit$1(Execute.scala:257)
[error]     at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:167)
[error]     at sbt.CompletionService$$anon$2.call(CompletionService.scala:32)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]     at java.lang.Thread.run(Thread.java:748)

Test projects: https://github.com/nigredo-tori/various-examples/tree/master/scala/kind-polymorphism-1 https://github.com/nigredo-tori/various-examples/tree/master/scala/kind-polymorphism-2

keritaf commented 6 years ago

I do have almost the same compilation error in my project when using -Ykind-polymorphism. E.g. https://travis-ci.org/exon-it/redmine-scala-client/builds/282120780