@@ -218,7 +218,7 @@ The theory is based on type-and-effect systems [1]. We introduce two concepts,
218
218
_ effects_ and _ potentials_ :
219
219
220
220
```
221
- π = C.this | Warm[C, π] | π.f | π.m | C.super[D] | Cold | Fun(Π, Φ)
221
+ π = C.this | Warm[C, π] | π.f | π.m | C.super[D] | Cold | Fun(Π, Φ) | Outer(C, π)
222
222
ϕ = π↑ | π.f! | π.m!
223
223
```
224
224
@@ -231,6 +231,7 @@ Potentials (π) represent values that are possibly under initialization.
231
231
- ` C.super[D] ` : essentially the current object, used for virtual method resolution
232
232
- ` Cold ` : an object with unknown initialization status
233
233
- ` Fun(Π, Φ) ` : a function, when called produce effects Φ and return potentials Π.
234
+ - ` Outer(C, π) ` : the potential of ` this ` for the enclosing class of ` C ` when ` C.this ` is ` π ` .
234
235
235
236
Effects are triggered from potentials:
236
237
@@ -247,6 +248,9 @@ initialized.
247
248
For an expression ` e ` , it may be summarized by the pair ` (Π, Φ) ` ,
248
249
which means evaluation of ` e ` may produce the effects Φ and return the
249
250
potentials Π. Each field and method is associated with such a pair.
251
+ We call such a pair _ summary_ . The expansion of proxy potentials and effects,
252
+ such as ` π.f ` , ` π.m ` and ` π.m! ` , will take advantage of the summaries.
253
+ Depending on the potential ` π ` for ` this ` , the summaries need to be rebased (` asSeenFrom ` ) before usage.
250
254
251
255
The checking treats the templates of concrete classes as entry points.
252
256
It maintains the set of initialized fields as initialization
0 commit comments