Open
Description
Compiler version
3.2.0-RC3
Minimized example
This is the first initialization error messsge I have encountered in my own code "in the wild".
error] -- Error: /Users/odersky/workspace/dotty/compiler/src/dotty/tools/dotc/cc/CaptureSet.scala:87:16
[error] 87 | cs.addSuper(this)(using ctx, UnrecordedState)
[error] | ^^^^
[error] |Cannot prove the method argument is hot. Only hot values are safe to leak.
[error] |Found = ThisRef[class Mapped].
[error] |Non initialized field(s): value stack. Calling trace:
[error] |-> class Mapped private[CaptureSet] [ CaptureSet.scala:436 ]
[error] | ^
[error] |-> abstract class DerivedVar(initialElems: Refs)(using @constructorOnly ctx: Context) [ CaptureSet.scala:423 ]
[error] | ^
[error] |-> addSub(source) [ CaptureSet.scala:427 ]
[error] | ^^^^^^^^^^^^^^
[error] |-> protected def addSub(cs: CaptureSet)(using Context): this.type = [ CaptureSet.scala:86 ]
[error] | ^
[error] |-> cs.addSuper(this)(using ctx, UnrecordedState) [ CaptureSet.scala:87 ]
[error] | ^^^^
[error] one error found
The message should be clearer:
- 'Hot" is expert terminology from the paper. Nobody outside knows what that is. Use "fully initialized" instead.
- The rest of the message is also hard to parse. What is
ThisRef[class Mapped]
? What is the significance of the calling trace. As someone who knows the theory I can guess, but for a non-expert this is hard to parse.