statement unittest
Nicholas Wilson
iamthewilsonator at hotmail.com
Fri Mar 29 11:53:52 UTC 2024
On Thursday, 21 March 2024 at 19:39:41 UTC, monkyyy wrote:
> I have this code:
>
> ```d
> auto reduce(alias F,R)(R r)=>r.acc!F.last.front;
> unittest{ assert(counter(10).reduce!((a,int b=0)=>a+b)==45);}
>
> auto all(alias F,R)(R r)=>r.map!F.filter!(a=>!a).empty;
> unittest{ assert([1,3,5,7,9].torange.all!(a=>a%2));}
>
> auto any(alias F,R)(R r)=> ! r.filter!F.empty;
> unittest{ assert([1,2,3,4,15].torange.any!(a=>a==15));}
>
> auto count(R)(R r)=>r.reduce!((a,int b=0)=>b+1);
> unittest{ assert(counter(10).filter!(a=>a%2).count==5);}
> ```
>
> "unittest{ assert(..);}" should be reduceable to `unittest(...)`
>
> i.e. `unittest(1==1)` would compile
there should be no DIP required here, `unittest`s are function
declarations, and so they _should_ work as `unittest =>
assert(1==1);`. They don't currently though (purely a problem
with the parser[1]), that seems like a bug, please file one.
[1]:
https://github.com/dlang/dmd/blob/e00869b27e3d9cabed2b6e73503561997398759c/compiler/src/dmd/parse.d#L521
explicitly checks for { }
a similar problem exists for `parseUnitTest` that calls
`parseStatement` that explicitly checks for `{}`
More information about the dip.ideas
mailing list