|
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