dmd/compiler/test/fail_compilation/ice12174.d
2022-09-06 15:03:04 +09:00

51 lines
1,007 B
D

/*
TEST_OUTPUT:
---
fail_compilation/ice12174.d(12): Error: no property `sum` for `[1, 2, 3]` of type `int[]`
fail_compilation/ice12174.d(20): Error: CTFE failed because of previous errors in `this`
fail_compilation/ice12174.d(13): called from here: `filter([1, 2, 3])`
---
*/
void main()
{
enum foo3 = (int n) => [1,2,3].sum;
enum bar3 = [1,2,3].filter!(n => n % foo3(n) == 0);
}
template filter(alias pred)
{
auto filter(Range)(Range rs)
{
return FilterResult!(pred, Range)(rs);
}
}
private struct FilterResult(alias pred, R)
{
R _input;
this(R r)
{
_input = r;
while (_input.length && !pred(_input[0]))
{
_input = _input[1..$];
}
}
@property bool empty() { return _input.length == 0; }
@property auto ref front()
{
return _input[0];
}
void popFront()
{
do
{
_input = _input[1..$];
} while (_input.length && !pred(_input[0]));
}
}