|
56 | 56 | |
|
57 | 57 | | longer explanation available when compiling with `-explain`
|
58 | 58 | -- Error: tests/neg-custom-args/captures/reaches.scala:79:10 -----------------------------------------------------------
|
59 |
| -79 | ps.map((x, y) => compose1(x, y)) // error // error |
| 59 | +79 | ps.map((x, y) => compose1(x, y)) // error // error // error sepcheck |
60 | 60 | | ^
|
61 | 61 | | Local reach capability ps* leaks into capture scope of method mapCompose.
|
62 | 62 | | To allow this, the parameter ps should be declared with a @use annotation
|
63 | 63 | -- Error: tests/neg-custom-args/captures/reaches.scala:79:13 -----------------------------------------------------------
|
64 |
| -79 | ps.map((x, y) => compose1(x, y)) // error // error |
| 64 | +79 | ps.map((x, y) => compose1(x, y)) // error // error // error sepcheck |
65 | 65 | | ^
|
66 | 66 | | Local reach capability ps* leaks into capture scope of method mapCompose.
|
67 | 67 | | To allow this, the parameter ps should be declared with a @use annotation
|
| 68 | +-- Error: tests/neg-custom-args/captures/reaches.scala:79:31 ----------------------------------------------------------- |
| 69 | +79 | ps.map((x, y) => compose1(x, y)) // error // error // error sepcheck |
| 70 | + | ^ |
| 71 | + | Separation failure: argument of type (x$0: A) ->{y} box A^? |
| 72 | + | to method compose1: [A, B, C](f: A => B, g: B => C): A ->{f, g} C |
| 73 | + | corresponds to capture-polymorphic formal parameter g of type box A^? => box A^? |
| 74 | + | and captures {ps*}, but this capability is also passed separately |
| 75 | + | in the first argument with type (x$0: A) ->{x} box A^?. |
| 76 | + | |
| 77 | + | Capture set of first argument : {x} |
| 78 | + | Hidden set of current argument : {y} |
| 79 | + | Footprint of first argument : {x, ps*} |
| 80 | + | Hidden footprint of current argument : {y, ps*} |
| 81 | + | Declared footprint of current argument: {} |
| 82 | + | Undeclared overlap of footprints : {ps*} |
| 83 | +-- Error: tests/neg-custom-args/captures/reaches.scala:82:31 ----------------------------------------------------------- |
| 84 | +82 | ps.map((x, y) => compose1(x, y)) // error sepcheck |
| 85 | + | ^ |
| 86 | + | Separation failure: argument of type (x$0: A) ->{y} box A^? |
| 87 | + | to method compose1: [A, B, C](f: A => B, g: B => C): A ->{f, g} C |
| 88 | + | corresponds to capture-polymorphic formal parameter g of type box A^? => box A^? |
| 89 | + | and captures {ps*}, but this capability is also passed separately |
| 90 | + | in the first argument with type (x$0: A) ->{x} box A^?. |
| 91 | + | |
| 92 | + | Capture set of first argument : {x} |
| 93 | + | Hidden set of current argument : {y} |
| 94 | + | Footprint of first argument : {x, ps*} |
| 95 | + | Hidden footprint of current argument : {y, ps*} |
| 96 | + | Declared footprint of current argument: {} |
| 97 | + | Undeclared overlap of footprints : {ps*} |
68 | 98 | -- Error: tests/neg-custom-args/captures/reaches.scala:61:31 -----------------------------------------------------------
|
69 | 99 | 61 | val leaked = usingFile[File^{id*}]: f => // error
|
70 | 100 | | ^^^
|
|
0 commit comments