`mkAttributedQualifier(_1.type, <none>)` compiler crash
It took long to minimize :cry: Here is the code that demonstrates two bugs: an error and a compiler crash (see the comments at the end).
package DFiant
object Extras {
type <>[DF <: DFAny, Dir <: DFDir] = DFAny.Port[DF, Dir] with DF
//Direction of a Port
sealed trait DFDir
sealed trait IN extends DFDir
implicit object IN extends IN
sealed trait OUT extends DFDir
implicit object OUT extends OUT
////////////////////////////////////////////////////////////////////////////////////
}
import Extras._
class IfWithRetVal[RV <: DFAny, Builder[L, R] <: DFAny.Op.Builder[L, R]] {
protected[DFiant] class DFIfBlock(val cond : Boolean, block : => RV) {
def elsedf[R](elseBlock: => Unit)(implicit op : Builder[RV, R]) : RV = ???
}
def apply[R](cond: Boolean)(block: => Unit)(implicit op : Builder[RV, R]) : DFIfBlock = ???
}
trait DFAny {
type TVal <: DFAny.Unbounded[TCompanion]
type TCompanion <: DFAny.Companion
type TUnbounded = protComp.Unbounded
protected[DFiant] val protComp : TCompanion
}
object DFAny {
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Head Types
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
trait Unbounded[T <: DFAny.Companion] extends DFAny {
type TCompanion = T
}
trait Var extends DFAny {
final def <> [RDIR <: DFDir](right: TVal <> RDIR) : Unit = ???
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Abstract Constructors
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
abstract class NewVar[DF <: DFAny](
implicit cmp : Companion
) extends DFAny.Var {
final protected[DFiant] lazy val protComp : TCompanion = cmp.asInstanceOf[TCompanion]
def <> [Dir <: DFDir](dir : Dir)(implicit port : protComp.Port.Builder[TVal, Dir]) : Unit = {}
final object ifdf extends IfWithRetVal[TVal, protComp.`Op:=`.Builder]
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Port
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
abstract class Port[DF <: DFAny, Dir <: DFDir](dfVar : DF, val dir : Dir)(
implicit cmp : Companion
) extends DFAny.Var {
final protected[DFiant] lazy val protComp : TCompanion = cmp.asInstanceOf[TCompanion]
}
object Port {
trait Builder[L <: DFAny, Dir <: DFDir] {
def apply(right : L, dir : Dir) : Unit
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Op
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
object Op {
trait Builder[L, R] {
type Comp <: DFAny
def apply(left : L, rightR : R) : Comp
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Create Companion object of DFXXX extenders of DFAny
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
trait Companion {
type Unbounded <: DFAny.Unbounded[this.type]
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Port
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
trait PortCO {
type Builder[L <: DFAny, Dir <: DFDir] <: DFAny.Port.Builder[L, Dir]
}
val Port : PortCO
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Common Ops
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
trait `Op:=` {
type Builder[L, R] <: DFAny.Op.Builder[L, R]
}
val `Op:=` : `Op:=`
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
implicit val cmp = this
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
trait DFBits extends DFBits.Unbounded {
}
object DFBits extends DFAny.Companion {
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Unbounded Val
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
trait Unbounded extends DFAny.Unbounded[DFBits.type] {
type TVal = DFBits
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Var
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
trait Var extends DFBits with DFAny.Var {
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Public Constructors
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
def apply() : NewVar = ???
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Protected Constructors
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
protected[DFiant] final class NewVar extends DFAny.NewVar[DFBits] with Var {}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Port
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
object Port extends PortCO {
trait Builder[L <: DFAny, Dir <: DFDir] extends DFAny.Port.Builder[L, Dir]
object Builder {
implicit def conn[LW, Dir <: DFDir]
: Builder[DFBits, Dir] = ???
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Assign & Connect
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
trait `Ops:=,<>` extends `Op:=` {
@scala.annotation.implicitNotFound("Dataflow variable ${L} does not support assignment/connect operation with the type ${R}")
trait Builder[L, R] extends DFAny.Op.Builder[L, R]
object Builder {
type Aux[L, R, Comp0] = Builder[L, R] {
type Comp = Comp0
}
implicit def evDFBits_op_DFBits[LW, RW] : Aux[DFBits, DFBits, DFBits] = ???
}
}
object `Op:=` extends `Ops:=,<>`
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
trait Bugs {
val bug1 = DFBits() <> IN //error: does not take parameters
val bug2 = DFBits().ifdf(true) {} elsedf {} //compiler crash: mkAttributedQualifier(_1.type, <none>)
val workaround = DFBits()
val ok1 = workaround <> IN
val ok2 = workaround.ifdf(true) {} elsedf {}
}
this isn't standalone code — it chokes on protected[DFiant], since DFiant isn't defined
it's also difficult to believe that it can't be minimized much more than this — it's extremely rare that any bug requires so much code to demonstrate it
we'd want separate reports with separate minimizations on the error and the crash, unless you can show that they are inextricably related
Why close the issue @SethTisue ?
for the reasons I stated, and because it's highly unlikely to progress without a minimization
(regardless, the closed issue will turn up in searches and discussion remains possible here; the ticket isn't annihilated, merely closed; and closed tickets can be reopened, even)
The most immediate reason I closed it is that isn't even reproducible. I cannot compile this code to see if it crashes Scala 2.13.10 or not, or if Scala 3 compiles it.
Look, this is the first feedback I got on that bug report after almost 5 years. Maybe it was a small mistake and that can be mitigated, maybe now, after accumulating the 5-year knowledge, I can further minimize the bug. Closing this suddenly without first inquiring is a total disregard for the time spent in minimizing and submitting the ticket (could even have been days of work). Very disappointing.
it crashes after the error.
Just slapping package DFiant lets it crash in more pure fashion.
Maybe it was a small mistake and that can be mitigated, maybe now, after accumulating the 5-year knowledge, I can further minimize the bug
Indeed, and if that happens, we'd be more than happy to reopen the ticket.
The open/closed bit on a ticket is just that: a bit. Flipping it is a single mouse click, and flipping it again is another mouse click.
Very disappointing.
I assume you meant well in your original report. I ask you to assume that I also mean well; because I do.
related: our previous discussion at https://github.com/scala/scala-dev/issues/577
related: our previous discussion at scala/scala-dev#577
The arguments pro/con closing an old issue ticket is different than PRs. This is literally sweeping bugs under the (closed ticket) carpet, and with total disregard to the efforts, well intentioned or not. The bug exists, is reproduceable, as @som-snytt demonstrated, and has zero dependencies. Want it minimized further? put a flag on it that the ticket requires further minimization. Keep under backlog forever, for all I care. But if someone else wastes their time minimizing and re-reporting the same bug just because this ticket is closed, that's on you. Closing it achieves less benefit to the community than keeping it open for visibility.
I've added the "needs info" label. We don't have a more specific label than that, but we're free to get more specific in the comments. (I've already done so, above.)
I'm reopening the ticket. But I'm doing it not because I agree with your remarks, but because Som says he was able to reproduce it and he told us how. I've edited the code at the top of the report to include the required package declaration.
perhaps related: https://github.com/scala/bug/issues/10636
Som says he was able to reproduce it and he told us how.
Note that if all you had done to start with is to notify me that there is problem in the bug report, I would have checked it myself and may very well have reduced the bug even further (assuming it's possible). By ignoring the effort taken thus far to report the bug, I really find no motivation to proceed further.
Thus far I've invested considerable amount of time minimizing and reporting Scala bugs that I already found workarounds for. Such interactions leave me wondering what's the point.
Such interactions leave me wondering what's the point
same
Motivation is always a challenge for unpaid labor.
I tried out the example because of the crying face in the post.
The sunk cost fallacy is not in itself a reason to keep tickets open.
I'm not sure this is the most minimal code for reproducing the crash, but it's gotta be close:
trait IfWithRetVal[T] {
def foo(implicit op: T): Unit = {}
}
trait NewVar {
val protComp: DFBits
def ifdf: IfWithRetVal[protComp.ops.Builder] = ???
}
trait DFBits {
trait Ops {
trait Builder
object Builder {
implicit def x: Nothing = ???
}
}
val ops: Ops
def nv: NewVar
nv.ifdf.foo
}
on this code Scala 3 does not crash and gives the error:
[error] ./S.scala:18:14
[error] Failure to generate given instance for type ?1.protComp.ops.Builder)
[error]
[error] I found: <skolem>.protComp.ops.Builder.x
[error] But the part corresponding to `<skolem>` is not a reference that can be generated.
[error] This might be because resolution yielded as given instance a function that is not
[error] known to be total and side-effect free.
[error]
[error] where: ?1 is an unknown value of type NewVar
[error] nv.ifdf.foo
[error] ^
in essence, it's complaining that nv (corresponding to Oron's DFBits()) isn't a stable path, which seems like a reasonable complaint to me, unless I'm missing something. (so that's why I've added the "should not compile" label)
Note that I've narrowed the scope of the ticket to be about the crash only. Feel free to open a separate ticket on the "does not take parameters" error.
How can it be both "Should not compile" and "fixed in Scala 3" ?
Oh, my mistake, I misread. It's fixed that the error is generated.
we usually use “should not compile” as a way to indicate that the compiler is accepting something it shouldn't, but I thought it could also make sense on compiler crash tickets to distinguish should-compile crashes (more severe) from should-be-an-error crashes (somewhat less severe, though still notable)
may be affecting me, when compiling a frameless patch:
https://github.com/tribbloid/frameless/blob/3b321dbfff5d811aae0ad39067aea6a03a4b4c2f/dataset/src/test/scala/frameless/TypedRowSpec.scala
got the following error:
scala: ## Exception when compiling 79 sources to /home/peng/git-release/frameless/dataset/target/scala-2.13/test-classes
java.lang.AssertionError: assertion failed:
mkAttributedQualifier(_1.type, <none>)
while compiling: /home/peng/git-release/frameless/dataset/src/test/scala/frameless/TypedRowSpec.scala
during phase: typer
library version: version 2.13.13
compiler version: version 2.13.13
reconstructed args: -deprecation -feature -unchecked -Wconf:cat=feature:w -Wconf:cat=unchecked:w -Wconf:cat=deprecation:w -Wconf:cat=deprecation:ws -Wconf:cat=feature:ws -Wconf:cat=optimizer:ws -Wdead-code -Wvalue-discard -Wnumeric-widen -Wperformance:nonlocal-return -Xlint:adapted-args -Xlint:nullary-unit -Xlint:inaccessible -Xlint:infer-any -Xlint:doc-detached -Xlint:private-shadow -Xlint:type-parameter-shadow -Xlint:poly-implicit-overload -Xlint:option-implicit -Xlint:delayedinit-select -Xlint:package-object-classes -Xlint:stars-align -Xlint:strict-unsealed-patmat -Xlint:constant -Xlint:nonlocal-return -Xlint:implicit-not-found -Xlint:serial -Xlint:valpattern -Xlint:eta-zero -Xlint:eta-sam -Xlint:deprecation -Xlint:recurse-with-default -Xlint:unit-special -Xlint:multiarg-infix -Xlint:implicit-recursion -Xlint:universal-methods -Xlint:numeric-methods -Xlint:arg-discard -Xlint:int-div-to-float -Xlint:named-booleans -Xlint:pattern-shadow -Xlint:cloneable -classpath /home/peng/git-release/frameless/dataset/target/scala-2.13/test-classes:/home/peng/git-release/frameless/dataset/target/scala-2.13/classes:/home/peng/git-release/frameless/core/target/scala-2.13/test-classes:/home/peng/git-release/frameless/core/target/scala-2.13/classes:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/chuusai/shapeless_2.13/2.3.10/shapeless_2.13-2.3.10.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/clearspring/analytics/stream/2.9.6/stream-2.9.6.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/esotericsoftware/kryo-shaded/4.0.2/kryo-shaded-4.0.2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/esotericsoftware/minlog/1.3.0/minlog-1.3.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.15.2/jackson-annotations-2.15.2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.15.2/jackson-core-2.15.2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.15.2/jackson-databind-2.15.2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.15.1/jackson-datatype-jsr310-2.15.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/fasterxml/jackson/module/jackson-module-scala_2.13/2.15.2/jackson-module-scala_2.13-2.15.2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/luben/zstd-jni/1.5.5-4/zstd-jni-1.5.5-4.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/globalmentor/hadoop-bare-naked-local-fs/0.1.0/hadoop-bare-naked-local-fs-0.1.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/google/crypto/tink/tink/1.9.0/tink-1.9.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/google/flatbuffers/flatbuffers-java/1.12.0/flatbuffers-java-1.12.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/google/guava/guava/16.0.1/guava-16.0.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/google/protobuf/protobuf-java/3.19.6/protobuf-java-3.19.6.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/ning/compress-lzf/1.1.2/compress-lzf-1.1.2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/thoughtworks/paranamer/paranamer/2.8/paranamer-2.8.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/twitter/chill-java/0.10.0/chill-java-0.10.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/twitter/chill_2.13/0.10.0/chill_2.13-0.10.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/com/univocity/univocity-parsers/2.9.1/univocity-parsers-2.9.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/commons-codec/commons-codec/1.16.0/commons-codec-1.16.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/commons-io/commons-io/2.13.0/commons-io-2.13.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/airlift/aircompressor/0.25/aircompressor-0.25.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/dropwizard/metrics/metrics-core/4.2.19/metrics-core-4.2.19.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/dropwizard/metrics/metrics-graphite/4.2.19/metrics-graphite-4.2.19.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/dropwizard/metrics/metrics-jmx/4.2.19/metrics-jmx-4.2.19.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/dropwizard/metrics/metrics-json/4.2.19/metrics-json-4.2.19.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/dropwizard/metrics/metrics-jvm/4.2.19/metrics-jvm-4.2.19.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-all/4.1.96.Final/netty-all-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-buffer/4.1.96.Final/netty-buffer-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-codec-http2/4.1.96.Final/netty-codec-http2-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-codec-http/4.1.96.Final/netty-codec-http-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-codec-socks/4.1.96.Final/netty-codec-socks-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-codec/4.1.96.Final/netty-codec-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-common/4.1.96.Final/netty-common-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-handler-proxy/4.1.96.Final/netty-handler-proxy-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-handler/4.1.96.Final/netty-handler-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-resolver/4.1.96.Final/netty-resolver-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-transport-classes-epoll/4.1.96.Final/netty-transport-classes-epoll-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-transport-classes-kqueue/4.1.96.Final/netty-transport-classes-kqueue-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-epoll/4.1.96.Final/netty-transport-native-epoll-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-epoll/4.1.96.Final/netty-transport-native-epoll-4.1.96.Final-linux-aarch_64.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-epoll/4.1.96.Final/netty-transport-native-epoll-4.1.96.Final-linux-x86_64.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-kqueue/4.1.96.Final/netty-transport-native-kqueue-4.1.96.Final-osx-aarch_64.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-kqueue/4.1.96.Final/netty-transport-native-kqueue-4.1.96.Final-osx-x86_64.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-transport-native-unix-common/4.1.96.Final/netty-transport-native-unix-common-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/io/netty/netty-transport/4.1.96.Final/netty-transport-4.1.96.Final.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/jakarta/annotation/jakarta.annotation-api/1.3.5/jakarta.annotation-api-1.3.5.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/jakarta/servlet/jakarta.servlet-api/4.0.3/jakarta.servlet-api-4.0.3.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/jakarta/ws/rs/jakarta.ws.rs-api/2.1.6/jakarta.ws.rs-api-2.1.6.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/javax/activation/activation/1.1.1/activation-1.1.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/joda-time/joda-time/2.12.5/joda-time-2.12.5.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/net/razorvine/pickle/1.3/pickle-1.3.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/net/sf/py4j/py4j/0.10.9.7/py4j-0.10.9.7.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/antlr/antlr4-runtime/4.9.3/antlr4-runtime-4.9.3.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/arrow/arrow-format/12.0.1/arrow-format-12.0.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/arrow/arrow-memory-core/12.0.1/arrow-memory-core-12.0.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/arrow/arrow-memory-netty/12.0.1/arrow-memory-netty-12.0.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/arrow/arrow-vector/12.0.1/arrow-vector-12.0.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/avro/avro-ipc/1.11.2/avro-ipc-1.11.2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/avro/avro-mapred/1.11.2/avro-mapred-1.11.2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/avro/avro/1.11.2/avro-1.11.2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-collections4/4.4/commons-collections4-4.4.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-compress/1.23.0/commons-compress-1.23.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-crypto/1.1.0/commons-crypto-1.1.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-text/1.10.0/commons-text-1.10.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/curator/curator-client/2.13.0/curator-client-2.13.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/curator/curator-framework/2.13.0/curator-framework-2.13.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/curator/curator-recipes/2.13.0/curator-recipes-2.13.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/datasketches/datasketches-java/3.3.0/datasketches-java-3.3.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/datasketches/datasketches-memory/2.1.0/datasketches-memory-2.1.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/hadoop/hadoop-client-api/3.3.4/hadoop-client-api-3.3.4.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/hadoop/hadoop-client-runtime/3.3.4/hadoop-client-runtime-3.3.4.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/hive/hive-storage-api/2.8.1/hive-storage-api-2.8.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/ivy/ivy/2.5.1/ivy-2.5.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/logging/log4j/log4j-1.2-api/2.20.0/log4j-1.2-api-2.20.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/logging/log4j/log4j-api/2.20.0/log4j-api-2.20.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/logging/log4j/log4j-core/2.20.0/log4j-core-2.20.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/logging/log4j/log4j-slf4j2-impl/2.20.0/log4j-slf4j2-impl-2.20.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/orc/orc-core/1.9.2/orc-core-1.9.2-shaded-protobuf.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/orc/orc-mapreduce/1.9.2/orc-mapreduce-1.9.2-shaded-protobuf.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/orc/orc-shims/1.9.2/orc-shims-1.9.2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/parquet/parquet-column/1.13.1/parquet-column-1.13.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/parquet/parquet-common/1.13.1/parquet-common-1.13.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/parquet/parquet-encoding/1.13.1/parquet-encoding-1.13.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/parquet/parquet-format-structures/1.13.1/parquet-format-structures-1.13.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/parquet/parquet-hadoop/1.13.1/parquet-hadoop-1.13.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/parquet/parquet-jackson/1.13.1/parquet-jackson-1.13.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/spark/spark-catalyst_2.13/3.5.1/spark-catalyst_2.13-3.5.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/spark/spark-common-utils_2.13/3.5.1/spark-common-utils_2.13-3.5.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/spark/spark-core_2.13/3.5.1/spark-core_2.13-3.5.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/spark/spark-kvstore_2.13/3.5.1/spark-kvstore_2.13-3.5.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/spark/spark-launcher_2.13/3.5.1/spark-launcher_2.13-3.5.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/spark/spark-network-common_2.13/3.5.1/spark-network-common_2.13-3.5.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/spark/spark-network-shuffle_2.13/3.5.1/spark-network-shuffle_2.13-3.5.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/spark/spark-sketch_2.13/3.5.1/spark-sketch_2.13-3.5.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/spark/spark-sql-api_2.13/3.5.1/spark-sql-api_2.13-3.5.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/spark/spark-sql_2.13/3.5.1/spark-sql_2.13-3.5.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/spark/spark-tags_2.13/3.5.1/spark-tags_2.13-3.5.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/spark/spark-unsafe_2.13/3.5.1/spark-unsafe_2.13-3.5.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/xbean/xbean-asm9-shaded/4.23/xbean-asm9-shaded-4.23.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/yetus/audience-annotations/0.13.0/audience-annotations-0.13.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/zookeeper/zookeeper-jute/3.6.3/zookeeper-jute-3.6.3.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/zookeeper/zookeeper/3.6.3/zookeeper-3.6.3.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/janino/commons-compiler/3.1.9/commons-compiler-3.1.9.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/janino/janino/3.1.9/janino-3.1.9.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/fusesource/leveldbjni/leveldbjni-all/1.8/leveldbjni-all-1.8.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/glassfish/hk2/external/aopalliance-repackaged/2.6.1/aopalliance-repackaged-2.6.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/glassfish/hk2/external/jakarta.inject/2.6.1/jakarta.inject-2.6.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/glassfish/hk2/hk2-api/2.6.1/hk2-api-2.6.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/glassfish/hk2/hk2-locator/2.6.1/hk2-locator-2.6.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/glassfish/hk2/hk2-utils/2.6.1/hk2-utils-2.6.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/glassfish/hk2/osgi-resource-locator/1.0.3/osgi-resource-locator-1.0.3.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet-core/2.40/jersey-container-servlet-core-2.40.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/glassfish/jersey/containers/jersey-container-servlet/2.40/jersey-container-servlet-2.40.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-client/2.40/jersey-client-2.40.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-common/2.40/jersey-common-2.40.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/glassfish/jersey/core/jersey-server/2.40/jersey-server-2.40.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/glassfish/jersey/inject/jersey-hk2/2.40/jersey-hk2-2.40.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/javassist/javassist/3.29.2-GA/javassist-3.29.2-GA.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/jetbrains/annotations/17.0.0/annotations-17.0.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-ast_2.13/3.7.0-M11/json4s-ast_2.13-3.7.0-M11.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-core_2.13/3.7.0-M11/json4s-core_2.13-3.7.0-M11.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-jackson_2.13/3.7.0-M11/json4s-jackson_2.13-3.7.0-M11.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-scalap_2.13/3.7.0-M11/json4s-scalap_2.13-3.7.0-M11.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/lz4/lz4-java/1.8.0/lz4-java-1.8.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/objenesis/objenesis/2.5.1/objenesis-2.5.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/roaringbitmap/RoaringBitmap/0.9.45/RoaringBitmap-0.9.45.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/roaringbitmap/shims/0.9.45/shims-0.9.45.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/rocksdb/rocksdbjni/8.3.2/rocksdbjni-8.3.2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-parallel-collections_2.13/1.0.4/scala-parallel-collections_2.13-1.0.4.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-parser-combinators_2.13/2.3.0/scala-parser-combinators_2.13-2.3.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/2.1.0/scala-xml_2.13-2.1.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.13/scala-library-2.13.13.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.13/scala-reflect-2.13.13.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-sbt/test-interface/1.0/test-interface-1.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalacheck/scalacheck_2.13/1.17.0/scalacheck_2.13-1.17.0.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalactic/scalactic_2.13/3.2.18/scalactic_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest-compatible/3.2.18/scalatest-compatible-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest-core_2.13/3.2.18/scalatest-core_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest-diagrams_2.13/3.2.18/scalatest-diagrams_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest-featurespec_2.13/3.2.18/scalatest-featurespec_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest-flatspec_2.13/3.2.18/scalatest-flatspec_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest-freespec_2.13/3.2.18/scalatest-freespec_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest-funspec_2.13/3.2.18/scalatest-funspec_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest-funsuite_2.13/3.2.18/scalatest-funsuite_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest-matchers-core_2.13/3.2.18/scalatest-matchers-core_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest-mustmatchers_2.13/3.2.18/scalatest-mustmatchers_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest-propspec_2.13/3.2.18/scalatest-propspec_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest-refspec_2.13/3.2.18/scalatest-refspec_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest-shouldmatchers_2.13/3.2.18/scalatest-shouldmatchers_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest-wordspec_2.13/3.2.18/scalatest-wordspec_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatest/scalatest_2.13/3.2.18/scalatest_2.13-3.2.18.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scalatestplus/scalatestplus-scalacheck_2.13/3.1.0.0-RC2/scalatestplus-scalacheck_2.13-3.1.0.0-RC2.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/slf4j/jcl-over-slf4j/2.0.7/jcl-over-slf4j-2.0.7.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/slf4j/jul-to-slf4j/2.0.7/jul-to-slf4j-2.0.7.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/slf4j/slf4j-api/2.0.7/slf4j-api-2.0.7.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/threeten/threeten-extra/1.7.1/threeten-extra-1.7.1.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/org/xerial/snappy/snappy-java/1.1.10.3/snappy-java-1.1.10.3.jar:/home/peng/.cache/coursier/v1/https/repo1.maven.org/maven2/oro/oro/2.0.8/oro-2.0.8.jar -language:existentials -language:higherKinds -language:implicitConversions
last tree to typer: TypeTree(<refinement of Int with shapeless.labelled.KeyTag[Symbol with shapeless.tag.Tagged[String("a")],Int]>)
tree position: line 101 of /home/peng/git-release/frameless/dataset/src/test/scala/frameless/TypedRowSpec.scala
tree tpe: Int with shapeless.labelled.KeyTag[Symbol with shapeless.tag.Tagged[String("a")],Int]
symbol: <refinement of Int with shapeless.labelled.KeyTag[Symbol with shapeless.tag.Tagged[String("a")],Int]> in object labelled
symbol definition: class <refinement> extends Int with labelled.KeyTag[Symbol with shapeless.tag.Tagged[String("a")],Int] (a RefinementClassSymbol)
symbol package: shapeless
symbol owners: <refinement of Int with shapeless.labelled.KeyTag[Symbol with shapeless.tag.Tagged[String("a")],Int]> -> object labelled
call site: class TypedRowSpec in package frameless in package frameless
== Source file context for tree position ==
98 val r1 = TypedRow.ofRecord(a = 1)
99
100 {
101 val fn = TypedRow.For[r1.Repr].NativeOrdering().fn
102
103 fn(r1).runtimeList.mkString(",").shouldBe("")
104 }
scala.reflect.internal.SymbolTable.throwAssertionError(SymbolTable.scala:171)
scala.reflect.internal.TreeGen.mkAttributedQualifier(TreeGen.scala:102)
scala.reflect.internal.TreeGen.mkAttributedQualifier(TreeGen.scala:75)
special thanks to @SethTisue for working in the weekend :-)