mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 21:21:48 +03:00
54 lines
1.7 KiB
D
54 lines
1.7 KiB
D
/*
|
|
TEST_OUTPUT:
|
|
---
|
|
fail_compilation/fail118.d(45): Error: invalid `foreach` aggregate `Iter` of type `Iter`
|
|
fail_compilation/fail118.d(45): `foreach` works with input ranges (implementing `front` and `popFront`), aggregates implementing `opApply`, or the result of an aggregate's `.tupleof` property
|
|
fail_compilation/fail118.d(45): https://dlang.org/phobos/std_range_primitives.html#isInputRange
|
|
fail_compilation/fail118.d(46): Error: invalid `foreach` aggregate `Iter` of type `Iter`
|
|
fail_compilation/fail118.d(46): `foreach` works with input ranges (implementing `front` and `popFront`), aggregates implementing `opApply`, or the result of an aggregate's `.tupleof` property
|
|
fail_compilation/fail118.d(46): https://dlang.org/phobos/std_range_primitives.html#isInputRange
|
|
fail_compilation/fail118.d(49): Error: invalid `foreach` aggregate `s` of type `S*`
|
|
fail_compilation/fail118.d(51): Error: undefined identifier `unknown`
|
|
fail_compilation/fail118.d(39): Error: undefined identifier `doesNotExist`
|
|
fail_compilation/fail118.d(53): Error: template instance `fail118.error!()` error instantiating
|
|
fail_compilation/fail118.d(53): Error: invalid `foreach` aggregate `error()` of type `void`
|
|
---
|
|
*/
|
|
|
|
// https://issues.dlang.org/show_bug.cgi?id=441
|
|
// Crash on foreach of mixed-in aggregate.
|
|
template opHackedApply()
|
|
{
|
|
struct Iter
|
|
{
|
|
}
|
|
}
|
|
|
|
class Foo
|
|
{
|
|
mixin opHackedApply!() oldIterMix;
|
|
}
|
|
|
|
struct S
|
|
{
|
|
int opApply(scope int delegate(const int) dg);
|
|
}
|
|
|
|
auto error()()
|
|
{
|
|
doesNotExist();
|
|
}
|
|
|
|
void main()
|
|
{
|
|
Foo f = new Foo;
|
|
foreach (int i; f.oldIterMix.Iter) {}
|
|
foreach ( i; f.oldIterMix.Iter) {}
|
|
|
|
S* s;
|
|
foreach (const i; s) {}
|
|
|
|
foreach(const i; unknown) {}
|
|
|
|
foreach (const i; error()) {}
|
|
}
|