-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Labels
Description
Compiler version
3.1.0
Minimized code
class DiscordRecord(fields: Map[String, Any]) extends Selectable {
def selectDynamic(name: String): Any = fields(name)
}
type IdentifyScope = DiscordRecord {
val username: String
}
type IncludeIf[Stated <: String, Requirement <: String, IfMatch] = Seq[Stated] match {
case Seq[Requirement] => IfMatch
case _ => Any
}
type RawUser[Scopes <: String] = DiscordRecord & IncludeIf[Scopes, "identify", IdentifyScope]
val obj: RawUser["identify"] = ???
obj.usernameRemoving the intersection type in RawUser fixes the problem. It's not needed in this case, but using an intersection type with something not redundant also crashes. The crash only happens when it would otherwise compile (I think). Changing obj.username to obj.foo does not compile sucessfully without a crash. Similarly, changing RawUser["identify"] to RawUser["foo"] also does not compile sucessfully without a crash.
Output (click arrow to expand)
Details
exception while typing this.obj.username of class class dotty.tools.dotc.ast.Trees$Select # -1
exception while typing @scala.annotation.internal.SourceFile("src/main/scala/testing/testing.scala")
class
testing() extends Object() {
class DiscordRecord(fields: scala.collection.immutable.Map[String, Any])
extends
Object(), Selectable {
private val fields: scala.collection.immutable.Map[String, Any]
def selectDynamic(name: String): Any = DiscordRecord.this.fields.apply(name)
private val $outer: testing.testing
final def testing$testing$DiscordRecord$$$outer: testing.testing =
DiscordRecord.this.$outer
}
type IdentifyScope = testing.this.DiscordRecord{username: String}
type IncludeIf =
([Stated <: String, Requirement <: String, IfMatch] =>>
scala.collection.immutable.Seq[Stated] match {
case scala.collection.immutable.Seq[Requirement] => IfMatch
case _ => Any
}
)
@_
type RawUser =
[Scopes <: String] =>> testing.this.DiscordRecord &
testing.this.IncludeIf[Scopes, ("identify" : String),
testing.this.IdentifyScope
]
def obj: testing.this.RawUser[("identify" : String)] = ???
this.obj.username
} of class class dotty.tools.dotc.ast.Trees$TypeDef # -1
exception while typing package testing {
@scala.annotation.internal.SourceFile("src/main/scala/testing/testing.scala")
class
testing() extends Object() {
class DiscordRecord(fields: scala.collection.immutable.Map[String, Any])
extends
Object(), Selectable {
private val fields: scala.collection.immutable.Map[String, Any]
def selectDynamic(name: String): Any =
DiscordRecord.this.fields.apply(name)
private val $outer: testing.testing
final def testing$testing$DiscordRecord$$$outer: testing.testing =
DiscordRecord.this.$outer
}
type IdentifyScope = testing.this.DiscordRecord{username: String}
type IncludeIf =
([Stated <: String, Requirement <: String, IfMatch] =>>
scala.collection.immutable.Seq[Stated] match {
case scala.collection.immutable.Seq[Requirement] => IfMatch
case _ => Any
}
)
@_
type RawUser =
[Scopes <: String] =>> testing.this.DiscordRecord &
testing.this.IncludeIf[Scopes, ("identify" : String),
testing.this.IdentifyScope
]
def obj: testing.this.RawUser[("identify" : String)] = ???
this.obj.username
}
} of class class dotty.tools.dotc.ast.Trees$PackageDef # -1
[info] exception occurred while compiling D:\DevProjects\Incubating\AckCordNext\src\main\scala\testing\testing.scala
java.lang.AssertionError: assertion failed: <none> while compiling D:\DevProjects\Incubating\AckCordNext\src\main\scala\testing\testing.scala
[error] ## Exception when compiling 15 sources to D:\DevProjects\Incubating\AckCordNext\target\scala-3.1.0\classes
[error] java.lang.AssertionError: assertion failed: <none>
[error] scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedSelect(Erasure.scala:721)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2725)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2817)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:121)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2883)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2887)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2936)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2959)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1053)
[error] dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:2409)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedClassDef(Erasure.scala:1043)
[error] dotty.tools.dotc.typer.Typer.typedTypeOrClassDef$2(Typer.scala:2743)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2747)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2817)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:121)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2883)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2887)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2909)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2959)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1053)
[error] dotty.tools.dotc.typer.Typer.typedPackageDef(Typer.scala:2532)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2788)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2818)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:121)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2883)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2887)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3003)
[error] dotty.tools.dotc.transform.Erasure.run(Erasure.scala:132)
[error] dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:308)
[error] scala.collection.immutable.List.map(List.scala:246)
[error] dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:309)
[error] dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:261)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
[error] dotty.tools.dotc.Run.runPhases$5(Run.scala:272)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:280)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
[error] dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:68)
[error] dotty.tools.dotc.Run.compileUnits(Run.scala:289)
[error] dotty.tools.dotc.Run.compileSources(Run.scala:222)
[error] dotty.tools.dotc.Run.compile(Run.scala:206)
[error] dotty.tools.dotc.Driver.doCompile(Driver.scala:39)
[error] dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:88)
[error] dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:192)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error] sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:247)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:182)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:163)
[error] sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:239)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:163)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:210)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:528)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:528)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$5(Incremental.scala:175)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$5$adapted(Incremental.scala:173)
[error] sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:459)
[error] sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
[error] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
[error] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
[error] sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:263)
[error] sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:414)
[error] sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:501)
[error] sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:401)
[error] sbt.internal.inc.Incremental$.apply(Incremental.scala:167)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:528)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:482)
[error] sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:420)
[error] sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
[error] sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:2357)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$2(Defaults.scala:2314)
[error] sbt.internal.io.Retry$.apply(Retry.scala:46)
[error] sbt.internal.io.Retry$.apply(Retry.scala:28)
[error] sbt.internal.io.Retry$.apply(Retry.scala:23)
[error] sbt.internal.server.BspCompileTask$.compute(BspCompileTask.scala:31)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:2310)
[error] scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] sbt.Execute.work(Execute.scala:291)
[error] sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[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)