@@ -53,7 +53,7 @@ object Message:
53
53
case None => false
54
54
end Disambiguation
55
55
56
- private type Recorded = Symbol | ParamRef | SkolemType | Capability
56
+ private type Recorded = Symbol | ParamRef | SkolemType | RootCapability
57
57
58
58
private case class SeenKey (str : String , isType : Boolean )
59
59
@@ -183,31 +183,11 @@ object Message:
183
183
s " is a ${ctx.printer.kindString(sym)}${sym.showExtendedLocation}${addendum(" bounds" , info)}"
184
184
case tp : SkolemType =>
185
185
s " is an unknown value of type ${tp.widen.show}"
186
- case ref : Capability =>
186
+ case ref : RootCapability =>
187
187
val relation =
188
188
if List (" ^" , " =>" , " ?=>" ).exists(key.startsWith) then " refers to"
189
189
else " is"
190
- def ownerStr (owner : Symbol ): String =
191
- if owner.isConstructor then
192
- i " constructor of ${ownerStr(owner.owner)}"
193
- else if owner.isAnonymousFunction then
194
- i " anonymous function of type ${owner.info}"
195
- else if owner.name.toString.contains('$' ) then
196
- ownerStr(owner.owner)
197
- else
198
- owner.show
199
- val descr =
200
- ref match
201
- case GlobalCap => " the universal root capability"
202
- case ref : FreshCap =>
203
- val descr = ref.origin match
204
- case origin @ Origin .InDecl (sym) if sym.exists =>
205
- origin.explanation
206
- case origin =>
207
- i " created in ${ownerStr(ref.hiddenSet.owner)}${origin.explanation}"
208
- i " a fresh root capability $descr"
209
- case ResultCap (binder) => i " a root capability associated with the result type of $binder"
210
- s " $relation $descr"
190
+ s " $relation ${ref.descr}"
211
191
end explanation
212
192
213
193
/** Produce a where clause with explanations for recorded iterms.
@@ -274,14 +254,16 @@ object Message:
274
254
override def toTextCapturing (parent : Type , refs : GeneralCaptureSet , boxText : Text ) = refs match
275
255
case refs : CaptureSet
276
256
if isUniversalCaptureSet(refs) && ! defn.isFunctionType(parent) && ! printDebug && seen.isActive =>
277
- boxText ~ toTextLocal(parent) ~ seen.record(" ^" , isType = true , refs.elems.nth(0 ))
257
+ boxText
258
+ ~ toTextLocal(parent)
259
+ ~ seen.record(" ^" , isType = true , refs.elems.nth(0 ).asInstanceOf [RootCapability ])
278
260
case _ =>
279
261
super .toTextCapturing(parent, refs, boxText)
280
262
281
263
override def funMiddleText (isContextual : Boolean , isPure : Boolean , refs : GeneralCaptureSet | Null ): Text =
282
264
refs match
283
265
case refs : CaptureSet if isUniversalCaptureSet(refs) && seen.isActive =>
284
- seen.record(arrow(isContextual, isPure = false ), isType = true , refs.elems.nth(0 ))
266
+ seen.record(arrow(isContextual, isPure = false ), isType = true , refs.elems.nth(0 ). asInstanceOf [ RootCapability ] )
285
267
case _ =>
286
268
super .funMiddleText(isContextual, isPure, refs)
287
269
0 commit comments