@@ -125,9 +125,9 @@ object root:
125
125
/** The type of fresh references */
126
126
type Fresh = AnnotatedType
127
127
128
+ /** Constructor and extractor methods for "fresh" capabilities */
128
129
object Fresh :
129
- /** Constructor and extractor methods for "fresh" capabilities */
130
- private def make (owner : Symbol )(using Context ): CaptureRef =
130
+ def apply (using Context )(owner : Symbol = ctx.owner): CaptureRef =
131
131
if ccConfig.useSepChecks then
132
132
val hiddenSet = CaptureSet .HiddenSet (owner)
133
133
val res = AnnotatedType (cap, Annot (Kind .Fresh (hiddenSet)))
@@ -137,9 +137,6 @@ object root:
137
137
else
138
138
cap
139
139
140
- def withOwner (owner : Symbol )(using Context ): CaptureRef = make(owner)
141
- def apply ()(using Context ): CaptureRef = make(NoSymbol )
142
-
143
140
def unapply (tp : AnnotatedType ): Option [CaptureSet .HiddenSet ] = tp.annot match
144
141
case Annot (Kind .Fresh (hidden)) => Some (hidden)
145
142
case _ => None
@@ -168,14 +165,14 @@ object root:
168
165
/** Map each occurrence of cap to a different Fresh instance
169
166
* Exception: CapSet^ stays as it is.
170
167
*/
171
- class CapToFresh (owner : Symbol )(using Context ) extends BiTypeMap , FollowAliasesMap :
168
+ class CapToFresh ()(using Context ) extends BiTypeMap , FollowAliasesMap :
172
169
thisMap =>
173
170
174
171
override def apply (t : Type ) =
175
172
if variance <= 0 then t
176
173
else t match
177
174
case t : CaptureRef if t.isCap =>
178
- Fresh .withOwner(owner )
175
+ Fresh ( )
179
176
case t @ CapturingType (parent : TypeRef , _) if parent.symbol == defn.Caps_CapSet =>
180
177
t
181
178
case t @ CapturingType (_, _) =>
@@ -213,12 +210,12 @@ object root:
213
210
end CapToFresh
214
211
215
212
/** Maps cap to fresh */
216
- def capToFresh (tp : Type , owner : Symbol = NoSymbol )(using Context ): Type =
217
- if ccConfig.useSepChecks then CapToFresh (owner )(tp) else tp
213
+ def capToFresh (tp : Type )(using Context ): Type =
214
+ if ccConfig.useSepChecks then CapToFresh ()(tp) else tp
218
215
219
216
/** Maps fresh to cap */
220
217
def freshToCap (tp : Type )(using Context ): Type =
221
- if ccConfig.useSepChecks then CapToFresh (NoSymbol ).inverse(tp) else tp
218
+ if ccConfig.useSepChecks then CapToFresh ().inverse(tp) else tp
222
219
223
220
/** Map top-level free existential variables one-to-one to Fresh instances */
224
221
def resultToFresh (tp : Type )(using Context ): Type =
0 commit comments