| /* |
| TEST_OUTPUT: |
| --- |
| fail_compilation/fail13574.d(21): Error: cannot modify operator `$` |
| fail_compilation/fail13574.d(27): Error: cannot modify operator `$` |
| --- |
| */ |
| |
| struct Foo |
| { |
| void opSlice(size_t a, size_t b) { } |
| alias opDollar = length; |
| size_t length; |
| } |
| |
| void main() |
| { |
| Foo foo; |
| foo[0 .. foo.length = 1]; |
| assert(foo.length == 1); |
| foo[0 .. $ = 2]; // assigns to the temporary dollar variable |
| //assert(foo.length == 2); |
| |
| int[] arr = [1,2,3]; |
| auto x = arr[0 .. arr.length = 1]; |
| assert(arr.length == 1); |
| auto y = arr[0 .. $ = 2]; // should also be disallowed |
| //assert(arr.length == 2); |
| } |