Typer failure in local recursive union types
See original GitHub issueCompiler version
3.2.0-RC1-bin-20220429-400427d-NIGHTLY Works with 3.1.2
First bad commit bf937ed24697831b613450cfdcd26932803f7172 in #14295
Minimized code
//> using scala "3.2.0-RC1-bin-20220429-400427d-NIGHTLY"
// //> using scala "3.1.2" // Last stable working version
import scala.collection.mutable
// https://github.com/plokhotnyuk/jsoniter-scala/blob/74d6d557bf81e904d07d4b8fbead4e4cab700bea/jsoniter-scala-macros/shared/src/test/scala-3/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodeMakerNewTypeSpec.scala#L40-L148
class Spec {
inline def in(testFun: => Any): Unit = {
val _ = testFun
}
in {
type JsonPrimitive = String | Int
type Rec[JA[_], A] = A match {
case JsonPrimitive => JsonPrimitive | JA[Rec[JA, JsonPrimitive]]
case _ => A | JA[Rec[JA, A]]
}
type Json = Rec[
[A] =>> Seq[A],
JsonPrimitive
]
val arr = new mutable.ArrayBuffer[Json](8)
}
}
Output (click arrow to expand)
Short error message:
java.lang.AssertionError: assertion failed: no owner from <none>/ <none> in new collection.mutable.ArrayBuffer[Json]
[info] compiling 1 Scala source to /home/wmazur/projects/virtuslab/dotty-community/jsoniter-scala/jsoniter-scala-macros/jvm/target/scala-3.2.0-RC1-bin-20220510-96ac286-NIGHTLY/test-classes ...
exception while typing new collection.mutable.ArrayBuffer[Json] of class class dotty.tools.dotc.ast.Trees$Select # -1
exception while typing new collection.mutable.ArrayBuffer[Json] of class class dotty.tools.dotc.ast.Trees$TypeApply # -1
exception while typing new collection.mutable.ArrayBuffer[Json](8) of class class dotty.tools.dotc.ast.Trees$Apply # -1
exception while typing val arr: scala.collection.mutable.ArrayBuffer[Json] =
new collection.mutable.ArrayBuffer[Json](8) of class class dotty.tools.dotc.ast.Trees$ValDef # -1
exception while typing {
type JsonPrimitive = String | Int | Double | Boolean | None.type
type Rec =
[JA[_$1], JO[_$2], A] =>>
A match {
case JsonPrimitive => JsonPrimitive | JA[Rec[JA, JO, JsonPrimitive]] |
JO[Rec[JA, JO, JsonPrimitive]]
case Any => A | JA[Rec[JA, JO, A]] | JO[Rec[JA, JO, A]]
}
type Json =
JsonPrimitive |
collection.mutable.Buffer[
Rec[collection.mutable.Buffer, [A] =>> collection.mutable.Map[String, A]
,
JsonPrimitive]
]
|
collection.mutable.Map[String,
Rec[collection.mutable.Buffer, [A] =>> collection.mutable.Map[String, A]
,
JsonPrimitive]
]
type JsonObject = collection.mutable.Map[String, Json]
val arr: scala.collection.mutable.ArrayBuffer[Json] =
new collection.mutable.ArrayBuffer[Json](8)
type JsonArray = collection.mutable.Buffer[Json]
()
} of class class dotty.tools.dotc.ast.Trees$Block # -1
exception while typing def f$proxy1: Unit =
{
type JsonPrimitive = String | Int | Double | Boolean | None.type
type Rec =
[JA[_$1], JO[_$2], A] =>>
A match {
case JsonPrimitive => JsonPrimitive | JA[Rec[JA, JO, JsonPrimitive]]
| JO[Rec[JA, JO, JsonPrimitive]]
case Any => A | JA[Rec[JA, JO, A]] | JO[Rec[JA, JO, A]]
}
type Json =
JsonPrimitive |
collection.mutable.Buffer[
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
|
collection.mutable.Map[String,
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
type JsonObject = collection.mutable.Map[String, Json]
val arr: scala.collection.mutable.ArrayBuffer[Json] =
new collection.mutable.ArrayBuffer[Json](8)
type JsonArray = collection.mutable.Buffer[Json]
()
} of class class dotty.tools.dotc.ast.Trees$DefDef # -1
exception while typing {
val WordSpecStringWrapper_this:
JsonCodecMakerNewTypeSpec.this.WordSpecStringWrapper
=
this.convertToWordSpecStringWrapper(
"serialize and deserialize Scala3 union types"
)
val AnyWordSpecLike_this:
(JsonCodecMakerNewTypeSpec.this :
com.github.plokhotnyuk.jsoniter_scala.macros.JsonCodecMakerNewTypeSpec
)
=
WordSpecStringWrapper_this.
org$scalatest$wordspec$AnyWordSpecLike$WordSpecStringWrapper$$$outer
.$asInstanceOf[
(JsonCodecMakerNewTypeSpec.this :
com.github.plokhotnyuk.jsoniter_scala.macros.JsonCodecMakerNewTypeSpec
)
]
def f$proxy1: Unit =
{
type JsonPrimitive = String | Int | Double | Boolean | None.type
type Rec =
[JA[_$1], JO[_$2], A] =>>
A match {
case JsonPrimitive => JsonPrimitive |
JA[Rec[JA, JO, JsonPrimitive]]
| JO[Rec[JA, JO, JsonPrimitive]]
case Any => A | JA[Rec[JA, JO, A]] | JO[Rec[JA, JO, A]]
}
type Json =
JsonPrimitive |
collection.mutable.Buffer[
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
|
collection.mutable.Map[String,
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
type JsonObject = collection.mutable.Map[String, Json]
val arr: scala.collection.mutable.ArrayBuffer[Json] =
new collection.mutable.ArrayBuffer[Json](8)
type JsonArray = collection.mutable.Buffer[Json]
()
}
{
{
val pos$proxy1: org.scalactic.source.Position =
org.scalactic.source.Position.apply("JsonCodeMakerNewTypeSpec.scala",
"Please set the environment variable SCALACTIC_FILL_FILE_PATHNAMES to yes at compile time to enable this feature."
, 28)
{
AnyWordSpecLike_this.
org$scalatest$wordspec$AnyWordSpecLike$$inline$registerTestToRun
(WordSpecStringWrapper_this.inline$string,
List.apply[Nothing](
scala.runtime.ScalaRunTime.genericWrapArray[Nothing]([ : Nothing])
)
, "in",
{
def $anonfun(): Any = f$proxy1
closure($anonfun)
}
, pos$proxy1)
}
}
}:Unit
} of class class dotty.tools.dotc.ast.Trees$Inlined # -1
exception while typing def $anonfun(): Unit =
{
val WordSpecStringWrapper_this:
JsonCodecMakerNewTypeSpec.this.WordSpecStringWrapper
=
this.convertToWordSpecStringWrapper(
"serialize and deserialize Scala3 union types"
)
val AnyWordSpecLike_this:
(JsonCodecMakerNewTypeSpec.this :
com.github.plokhotnyuk.jsoniter_scala.macros.JsonCodecMakerNewTypeSpec
)
=
WordSpecStringWrapper_this.
org$scalatest$wordspec$AnyWordSpecLike$WordSpecStringWrapper$$$outer
.$asInstanceOf[
(JsonCodecMakerNewTypeSpec.this :
com.github.plokhotnyuk.jsoniter_scala.macros.
JsonCodecMakerNewTypeSpec
)
]
def f$proxy1: Unit =
{
type JsonPrimitive = String | Int | Double | Boolean | None.type
type Rec =
[JA[_$1], JO[_$2], A] =>>
A match {
case JsonPrimitive => JsonPrimitive |
JA[Rec[JA, JO, JsonPrimitive]]
| JO[Rec[JA, JO, JsonPrimitive]]
case Any => A | JA[Rec[JA, JO, A]] | JO[Rec[JA, JO, A]]
}
type Json =
JsonPrimitive |
collection.mutable.Buffer[
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
|
collection.mutable.Map[String,
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
type JsonObject = collection.mutable.Map[String, Json]
val arr: scala.collection.mutable.ArrayBuffer[Json] =
new collection.mutable.ArrayBuffer[Json](8)
type JsonArray = collection.mutable.Buffer[Json]
()
}
{
{
val pos$proxy1: org.scalactic.source.Position =
org.scalactic.source.Position.apply("JsonCodeMakerNewTypeSpec.scala",
"Please set the environment variable SCALACTIC_FILL_FILE_PATHNAMES to yes at compile time to enable this feature."
, 28)
{
AnyWordSpecLike_this.
org$scalatest$wordspec$AnyWordSpecLike$$inline$registerTestToRun
(WordSpecStringWrapper_this.inline$string,
List.apply[Nothing](
scala.runtime.ScalaRunTime.genericWrapArray[Nothing]([ : Nothing])
)
, "in",
{
def $anonfun(): Any = f$proxy1
closure($anonfun)
}
, pos$proxy1)
}
}
}:Unit
} of class class dotty.tools.dotc.ast.Trees$DefDef # -1
exception while typing {
def $anonfun(): Unit =
{
val WordSpecStringWrapper_this:
JsonCodecMakerNewTypeSpec.this.WordSpecStringWrapper
=
this.convertToWordSpecStringWrapper(
"serialize and deserialize Scala3 union types"
)
val AnyWordSpecLike_this:
(JsonCodecMakerNewTypeSpec.this :
com.github.plokhotnyuk.jsoniter_scala.macros.
JsonCodecMakerNewTypeSpec
)
=
WordSpecStringWrapper_this.
org$scalatest$wordspec$AnyWordSpecLike$WordSpecStringWrapper$$$outer
.$asInstanceOf[
(JsonCodecMakerNewTypeSpec.this :
com.github.plokhotnyuk.jsoniter_scala.macros.
JsonCodecMakerNewTypeSpec
)
]
def f$proxy1: Unit =
{
type JsonPrimitive = String | Int | Double | Boolean | None.type
type Rec =
[JA[_$1], JO[_$2], A] =>>
A match {
case JsonPrimitive => JsonPrimitive |
JA[Rec[JA, JO, JsonPrimitive]]
| JO[Rec[JA, JO, JsonPrimitive]]
case Any => A | JA[Rec[JA, JO, A]] | JO[Rec[JA, JO, A]]
}
type Json =
JsonPrimitive |
collection.mutable.Buffer[
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
|
collection.mutable.Map[String,
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
type JsonObject = collection.mutable.Map[String, Json]
val arr: scala.collection.mutable.ArrayBuffer[Json] =
new collection.mutable.ArrayBuffer[Json](8)
type JsonArray = collection.mutable.Buffer[Json]
()
}
{
{
val pos$proxy1: org.scalactic.source.Position =
org.scalactic.source.Position.apply("JsonCodeMakerNewTypeSpec.scala"
,
"Please set the environment variable SCALACTIC_FILL_FILE_PATHNAMES to yes at compile time to enable this feature."
, 28)
{
AnyWordSpecLike_this.
org$scalatest$wordspec$AnyWordSpecLike$$inline$registerTestToRun
(WordSpecStringWrapper_this.inline$string,
List.apply[Nothing](
scala.runtime.ScalaRunTime.genericWrapArray[Nothing](
[ : Nothing]
)
)
, "in",
{
def $anonfun(): Any = f$proxy1
closure($anonfun)
}
, pos$proxy1)
}
}
}:Unit
}
closure($anonfun:() ?=> Unit)
} of class class dotty.tools.dotc.ast.Trees$Block # -1
exception while typing this.convertToStringShouldWrapperForVerb(
"JsonCodecMaker.make generate codecs which"
)(
org.scalactic.source.Position.apply("JsonCodeMakerNewTypeSpec.scala",
"Please set the environment variable SCALACTIC_FILL_FILE_PATHNAMES to yes at compile time to enable this feature."
, 27):org.scalactic.source.Position
).should(
{
def $anonfun(): Unit =
{
val WordSpecStringWrapper_this:
JsonCodecMakerNewTypeSpec.this.WordSpecStringWrapper
=
this.convertToWordSpecStringWrapper(
"serialize and deserialize Scala3 union types"
)
val AnyWordSpecLike_this:
(JsonCodecMakerNewTypeSpec.this :
com.github.plokhotnyuk.jsoniter_scala.macros.
JsonCodecMakerNewTypeSpec
)
=
WordSpecStringWrapper_this.
org$scalatest$wordspec$AnyWordSpecLike$WordSpecStringWrapper$$$outer
.$asInstanceOf[
(JsonCodecMakerNewTypeSpec.this :
com.github.plokhotnyuk.jsoniter_scala.macros.
JsonCodecMakerNewTypeSpec
)
]
def f$proxy1: Unit =
{
type JsonPrimitive = String | Int | Double | Boolean | None.type
type Rec =
[JA[_$1], JO[_$2], A] =>>
A match {
case JsonPrimitive => JsonPrimitive |
JA[Rec[JA, JO, JsonPrimitive]]
| JO[Rec[JA, JO, JsonPrimitive]]
case Any => A | JA[Rec[JA, JO, A]] | JO[Rec[JA, JO, A]]
}
type Json =
JsonPrimitive |
collection.mutable.Buffer[
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
|
collection.mutable.Map[String,
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
type JsonObject = collection.mutable.Map[String, Json]
val arr: scala.collection.mutable.ArrayBuffer[Json] =
new collection.mutable.ArrayBuffer[Json](8)
type JsonArray = collection.mutable.Buffer[Json]
()
}
{
{
val pos$proxy1: org.scalactic.source.Position =
org.scalactic.source.Position.apply(
"JsonCodeMakerNewTypeSpec.scala"
,
"Please set the environment variable SCALACTIC_FILL_FILE_PATHNAMES to yes at compile time to enable this feature."
, 28)
{
AnyWordSpecLike_this.
org$scalatest$wordspec$AnyWordSpecLike$$inline$registerTestToRun
(WordSpecStringWrapper_this.inline$string,
List.apply[Nothing](
scala.runtime.ScalaRunTime.genericWrapArray[Nothing](
[ : Nothing]
)
)
, "in",
{
def $anonfun(): Any = f$proxy1
closure($anonfun)
}
, pos$proxy1)
}
}
}:Unit
}
closure($anonfun:() ?=> Unit)
}
) of class class dotty.tools.dotc.ast.Trees$Apply # -1
exception while typing this.convertToStringShouldWrapperForVerb(
"JsonCodecMaker.make generate codecs which"
)(
org.scalactic.source.Position.apply("JsonCodeMakerNewTypeSpec.scala",
"Please set the environment variable SCALACTIC_FILL_FILE_PATHNAMES to yes at compile time to enable this feature."
, 27):org.scalactic.source.Position
).should(
{
def $anonfun(): Unit =
{
val WordSpecStringWrapper_this:
JsonCodecMakerNewTypeSpec.this.WordSpecStringWrapper
=
this.convertToWordSpecStringWrapper(
"serialize and deserialize Scala3 union types"
)
val AnyWordSpecLike_this:
(JsonCodecMakerNewTypeSpec.this :
com.github.plokhotnyuk.jsoniter_scala.macros.
JsonCodecMakerNewTypeSpec
)
=
WordSpecStringWrapper_this.
org$scalatest$wordspec$AnyWordSpecLike$WordSpecStringWrapper$$$outer
.$asInstanceOf[
(JsonCodecMakerNewTypeSpec.this :
com.github.plokhotnyuk.jsoniter_scala.macros.
JsonCodecMakerNewTypeSpec
)
]
def f$proxy1: Unit =
{
type JsonPrimitive = String | Int | Double | Boolean | None.type
type Rec =
[JA[_$1], JO[_$2], A] =>>
A match {
case JsonPrimitive => JsonPrimitive |
JA[Rec[JA, JO, JsonPrimitive]]
| JO[Rec[JA, JO, JsonPrimitive]]
case Any => A | JA[Rec[JA, JO, A]] | JO[Rec[JA, JO, A]]
}
type Json =
JsonPrimitive |
collection.mutable.Buffer[
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
|
collection.mutable.Map[String,
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
type JsonObject = collection.mutable.Map[String, Json]
val arr: scala.collection.mutable.ArrayBuffer[Json] =
new collection.mutable.ArrayBuffer[Json](8)
type JsonArray = collection.mutable.Buffer[Json]
()
}
{
{
val pos$proxy1: org.scalactic.source.Position =
org.scalactic.source.Position.apply(
"JsonCodeMakerNewTypeSpec.scala"
,
"Please set the environment variable SCALACTIC_FILL_FILE_PATHNAMES to yes at compile time to enable this feature."
, 28)
{
AnyWordSpecLike_this.
org$scalatest$wordspec$AnyWordSpecLike$$inline$registerTestToRun
(WordSpecStringWrapper_this.inline$string,
List.apply[Nothing](
scala.runtime.ScalaRunTime.genericWrapArray[Nothing](
[ : Nothing]
)
)
, "in",
{
def $anonfun(): Any = f$proxy1
closure($anonfun)
}
, pos$proxy1)
}
}
}:Unit
}
closure($anonfun:() ?=> Unit)
}
)(this.subjectRegistrationFunction) of class class dotty.tools.dotc.ast.Trees$Apply # -1
exception while typing @SourceFile(
"jsoniter-scala-macros/shared/src/test/scala-3/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodeMakerNewTypeSpec.scala"
) class JsonCodecMakerNewTypeSpec() extends
com.github.plokhotnyuk.jsoniter_scala.macros.VerifyingSpec
() {
this.convertToStringShouldWrapperForVerb(
"JsonCodecMaker.make generate codecs which"
)(
org.scalactic.source.Position.apply("JsonCodeMakerNewTypeSpec.scala",
"Please set the environment variable SCALACTIC_FILL_FILE_PATHNAMES to yes at compile time to enable this feature."
, 27):org.scalactic.source.Position
).should(
{
def $anonfun(): Unit =
{
val WordSpecStringWrapper_this:
JsonCodecMakerNewTypeSpec.this.WordSpecStringWrapper
=
this.convertToWordSpecStringWrapper(
"serialize and deserialize Scala3 union types"
)
val AnyWordSpecLike_this:
(JsonCodecMakerNewTypeSpec.this :
com.github.plokhotnyuk.jsoniter_scala.macros.
JsonCodecMakerNewTypeSpec
)
=
WordSpecStringWrapper_this.
org$scalatest$wordspec$AnyWordSpecLike$WordSpecStringWrapper$$$outer
.$asInstanceOf[
(JsonCodecMakerNewTypeSpec.this :
com.github.plokhotnyuk.jsoniter_scala.macros.
JsonCodecMakerNewTypeSpec
)
]
def f$proxy1: Unit =
{
type JsonPrimitive = String | Int | Double | Boolean | None.type
type Rec =
[JA[_$1], JO[_$2], A] =>>
A match {
case JsonPrimitive => JsonPrimitive |
JA[Rec[JA, JO, JsonPrimitive]]
| JO[Rec[JA, JO, JsonPrimitive]]
case Any => A | JA[Rec[JA, JO, A]] | JO[Rec[JA, JO, A]]
}
type Json =
JsonPrimitive |
collection.mutable.Buffer[
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
|
collection.mutable.Map[String,
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
type JsonObject = collection.mutable.Map[String, Json]
val arr: scala.collection.mutable.ArrayBuffer[Json] =
new collection.mutable.ArrayBuffer[Json](8)
type JsonArray = collection.mutable.Buffer[Json]
()
}
{
{
val pos$proxy1: org.scalactic.source.Position =
org.scalactic.source.Position.apply(
"JsonCodeMakerNewTypeSpec.scala"
,
"Please set the environment variable SCALACTIC_FILL_FILE_PATHNAMES to yes at compile time to enable this feature."
, 28)
{
AnyWordSpecLike_this.
org$scalatest$wordspec$AnyWordSpecLike$$inline$registerTestToRun
(WordSpecStringWrapper_this.inline$string,
List.apply[Nothing](
scala.runtime.ScalaRunTime.genericWrapArray[Nothing](
[ : Nothing]
)
)
, "in",
{
def $anonfun(): Any = f$proxy1
closure($anonfun)
}
, pos$proxy1)
}
}
}:Unit
}
closure($anonfun:() ?=> Unit)
}
)(this.subjectRegistrationFunction)
} of class class dotty.tools.dotc.ast.Trees$TypeDef # -1
exception while typing package com.github.plokhotnyuk.jsoniter_scala.macros {
@SourceFile(
"jsoniter-scala-macros/shared/src/test/scala-3/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodeMakerNewTypeSpec.scala"
) class JsonCodecMakerNewTypeSpec() extends
com.github.plokhotnyuk.jsoniter_scala.macros.VerifyingSpec
() {
this.convertToStringShouldWrapperForVerb(
"JsonCodecMaker.make generate codecs which"
)(
org.scalactic.source.Position.apply("JsonCodeMakerNewTypeSpec.scala",
"Please set the environment variable SCALACTIC_FILL_FILE_PATHNAMES to yes at compile time to enable this feature."
, 27):org.scalactic.source.Position
).should(
{
def $anonfun(): Unit =
{
val WordSpecStringWrapper_this:
JsonCodecMakerNewTypeSpec.this.WordSpecStringWrapper
=
this.convertToWordSpecStringWrapper(
"serialize and deserialize Scala3 union types"
)
val AnyWordSpecLike_this:
(JsonCodecMakerNewTypeSpec.this :
com.github.plokhotnyuk.jsoniter_scala.macros.
JsonCodecMakerNewTypeSpec
)
=
WordSpecStringWrapper_this.
org$scalatest$wordspec$AnyWordSpecLike$WordSpecStringWrapper$$$outer
.$asInstanceOf[
(JsonCodecMakerNewTypeSpec.this :
com.github.plokhotnyuk.jsoniter_scala.macros.
JsonCodecMakerNewTypeSpec
)
]
def f$proxy1: Unit =
{
type JsonPrimitive = String | Int | Double | Boolean | None.type
type Rec =
[JA[_$1], JO[_$2], A] =>>
A match {
case JsonPrimitive => JsonPrimitive |
JA[Rec[JA, JO, JsonPrimitive]]
| JO[Rec[JA, JO, JsonPrimitive]]
case Any => A | JA[Rec[JA, JO, A]] | JO[Rec[JA, JO, A]]
}
type Json =
JsonPrimitive |
collection.mutable.Buffer[
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
|
collection.mutable.Map[String,
Rec[collection.mutable.Buffer,
[A] =>> collection.mutable.Map[String, A]
, JsonPrimitive]
]
type JsonObject = collection.mutable.Map[String, Json]
val arr: scala.collection.mutable.ArrayBuffer[Json] =
new collection.mutable.ArrayBuffer[Json](8)
type JsonArray = collection.mutable.Buffer[Json]
()
}
{
{
val pos$proxy1: org.scalactic.source.Position =
org.scalactic.source.Position.apply(
"JsonCodeMakerNewTypeSpec.scala"
,
"Please set the environment variable SCALACTIC_FILL_FILE_PATHNAMES to yes at compile time to enable this feature."
, 28)
{
AnyWordSpecLike_this.
org$scalatest$wordspec$AnyWordSpecLike$$inline$registerTestToRun
(WordSpecStringWrapper_this.inline$string,
List.apply[Nothing](
scala.runtime.ScalaRunTime.genericWrapArray[Nothing](
[ : Nothing]
)
)
, "in",
{
def $anonfun(): Any = f$proxy1
closure($anonfun)
}
, pos$proxy1)
}
}
}:Unit
}
closure($anonfun:() ?=> Unit)
}
)(this.subjectRegistrationFunction)
}
final lazy module val JsonCodeMakerNewTypeSpec$package:
com.github.plokhotnyuk.jsoniter_scala.macros.
JsonCodeMakerNewTypeSpec$package
=
new
com.github.plokhotnyuk.jsoniter_scala.macros.
JsonCodeMakerNewTypeSpec$package
()
@SourceFile(
"jsoniter-scala-macros/shared/src/test/scala-3/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodeMakerNewTypeSpec.scala"
) final module class JsonCodeMakerNewTypeSpec$package() extends Object() {
private def writeReplace(): AnyRef =
new scala.runtime.ModuleSerializationProxy(
classOf[
com.github.plokhotnyuk.jsoniter_scala.macros.
JsonCodeMakerNewTypeSpec$package
.type
]
)
type Year = Int
final lazy module val Year:
com.github.plokhotnyuk.jsoniter_scala.macros.JsonCodeMakerNewTypeSpec$package
.
Year
=
new
com.github.plokhotnyuk.jsoniter_scala.macros.JsonCodeMakerNewTypeSpec$package
.
Year
()
final module class Year() extends Object() {
private def writeReplace(): AnyRef =
new scala.runtime.ModuleSerializationProxy(
classOf[
com.github.plokhotnyuk.jsoniter_scala.macros.JsonCodeMakerNewTypeSpec$package
.
Year.type
]
)
def apply(value: Int):
com.github.plokhotnyuk.jsoniter_scala.macros.JsonCodeMakerNewTypeSpec$package
.
Year
= value
def safe(value: Int):
Option[
com.github.plokhotnyuk.jsoniter_scala.macros.JsonCodeMakerNewTypeSpec$package
.
Year
]
= if value.>(1900) then Some.apply[Int](value) else None
extension (
year:
com.github.plokhotnyuk.jsoniter_scala.macros.JsonCodeMakerNewTypeSpec$package
.
Year
) def value: Int = year
}
}
} of class class dotty.tools.dotc.ast.Trees$PackageDef # -1
[info] exception occurred while compiling /home/wmazur/projects/virtuslab/dotty-community/jsoniter-scala/jsoniter-scala-macros/shared/src/test/scala-3/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodeMakerNewTypeSpec.scala
java.lang.AssertionError: assertion failed: no owner from <none>/ <none> in new collection.mutable.ArrayBuffer[Json] while compiling /home/wmazur/projects/virtuslab/dotty-community/jsoniter-scala/jsoniter-scala-macros/shared/src/test/scala-3/com/github/plokhotnyuk/jsoniter_scala/macros/JsonCodeMakerNewTypeSpec.scala
[error] ## Exception when compiling 9 sources to /home/wmazur/projects/virtuslab/dotty-community/jsoniter-scala/jsoniter-scala-macros/jvm/target/scala-3.2.0-RC1-bin-20220510-96ac286-NIGHTLY/test-classes
[error] java.lang.AssertionError: assertion failed: no owner from <none>/ <none> in new collection.mutable.ArrayBuffer[Json]
[error] scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedSelect(Erasure.scala:699)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2834)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2928)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2994)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2998)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3114)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedTypeApply(Erasure.scala:795)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2884)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2929)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2994)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2998)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3114)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedApply(Erasure.scala:814)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2865)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2929)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2994)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2998)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3114)
[error] dotty.tools.dotc.typer.Typer.typedValDef(Typer.scala:2238)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedValDef(Erasure.scala:884)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2838)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2928)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2994)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2998)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3020)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3070)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1029)
[error] dotty.tools.dotc.typer.Typer.typedBlockStats(Typer.scala:1067)
[error] dotty.tools.dotc.typer.Typer.typedBlock(Typer.scala:1071)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2873)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2929)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2994)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2998)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3114)
[error] dotty.tools.dotc.typer.Typer.$anonfun$48(Typer.scala:2302)
[error] dotty.tools.dotc.typer.PrepareInlineable$.dropInlineIfError(PrepareInlineable.scala:248)
[error] dotty.tools.dotc.typer.Typer.typedDefDef(Typer.scala:2302)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedDefDef(Erasure.scala:931)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2841)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2928)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2994)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2998)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3020)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3070)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1029)
[error] dotty.tools.dotc.typer.Typer.typedBlockStats(Typer.scala:1067)
[error] dotty.tools.dotc.typer.Typer.typedInlined(Typer.scala:1895)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedInlined(Erasure.scala:875)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2887)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2929)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2994)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2998)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3114)
[error] dotty.tools.dotc.typer.Typer.$anonfun$48(Typer.scala:2302)
[error] dotty.tools.dotc.typer.PrepareInlineable$.dropInlineIfError(PrepareInlineable.scala:248)
[error] dotty.tools.dotc.typer.Typer.typedDefDef(Typer.scala:2302)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedDefDef(Erasure.scala:931)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2841)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2928)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2994)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2998)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3020)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3070)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1029)
[error] dotty.tools.dotc.typer.Typer.typedBlockStats(Typer.scala:1067)
[error] dotty.tools.dotc.typer.Typer.typedBlock(Typer.scala:1071)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2873)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2929)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2994)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2998)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3114)
[error] dotty.tools.dotc.transform.Erasure$Typer.$anonfun$9(Erasure.scala:827)
[error] dotty.tools.dotc.core.Decorators$ListDecorator$.zipWithConserve$extension(Decorators.scala:151)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedApply(Erasure.scala:827)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2865)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2929)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2994)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2998)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3114)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedApply(Erasure.scala:814)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2865)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2929)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2994)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2998)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3047)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3070)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1029)
[error] dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:2507)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedClassDef(Erasure.scala:1019)
[error] dotty.tools.dotc.typer.Typer.typedTypeOrClassDef$1(Typer.scala:2853)
[error] dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2857)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2928)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2994)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2998)
[error] dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:3020)
[error] dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:3070)
[error] dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:1029)
[error] dotty.tools.dotc.typer.Typer.typedPackageDef(Typer.scala:2636)
[error] dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2898)
[error] dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2929)
[error] dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2994)
[error] dotty.tools.dotc.typer.Typer.typed(Typer.scala:2998)
[error] dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:3114)
[error] dotty.tools.dotc.transform.Erasure.run(Erasure.scala:144)
[error] dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:311)
[error] scala.collection.immutable.List.map(List.scala:246)
[error] dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:312)
[error] dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:225)
[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:1328)
[error] dotty.tools.dotc.Run.runPhases$1(Run.scala:236)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:244)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:253)
[error] dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:68)
[error] dotty.tools.dotc.Run.compileUnits(Run.scala:253)
[error] dotty.tools.dotc.Run.compileSources(Run.scala:186)
[error] dotty.tools.dotc.Run.compile(Run.scala:170)
[error] dotty.tools.dotc.Driver.doCompile(Driver.scala:35)
[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:208)
[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:177)
[error] sbt.internal.inc.Incremental$.$anonfun$apply$5$adapted(Incremental.scala:175)
[error] sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:461)
[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:416)
[error] sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:503)
[error] sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:403)
[error] sbt.internal.inc.Incremental$.apply(Incremental.scala:169)
[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:2366)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$2(Defaults.scala:2316)
[error] sbt.internal.server.BspCompileTask$.$anonfun$compute$1(BspCompileTask.scala:30)
[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:30)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:2314)
[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.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error] java.base/java.lang.Thread.run(Thread.java:834)
[error]
[error] stack trace is suppressed; run last jsoniter-scala-macrosJVM / Test / compileIncremental for the full output
[error] (jsoniter-scala-macrosJVM / Test / compileIncremental) java.lang.AssertionError: assertion failed: no owner from <none>/ <none> in new collection.mutable.ArrayBuffer[Json]
Issue Analytics
- State:
- Created a year ago
- Reactions:1
- Comments:9 (6 by maintainers)
Top Results From Across the Web
recursive alias of union type not working as expected #4118
the issue union type created using recursive alias doesn't work as intended (this code is copied directly from the alias page with 2...
Read more >Breaking Circular Dependencies in Recursive Union Types ...
Unexpected to some, it lacks a recursive wrapper that lets programmers easily define recursive union types, for example JSON-like structures ...
Read more >4.6 Recursive Types
In functional languages such as ML or Haskell, recursive type definitions are not directly available, but the results of elaborating syntactically more ...
Read more >Flattening type that gives a union of all keys in a nested object
Your first method failed because of the infer U . This check actually returns true for primitives. type Test1 = number extends Record<string, ......
Read more >Subtyping Recursive Types - Luca Cardelli
With this motivation, we investigate type systems with recursive types and subtyping, and the related problems of structural matching and structural ...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Can confirm that bisection points to bf937ed24697831b613450cfdcd26932803f7172 as the first bad commmit.
A reproducer without stdlib:
@nicolasstucki I’ve managed to minimize it to not require scalatest, seems that issue is present due to the bug in inlining. I’ve updated the snippet in the issue description