[Issue 10956] std.getopt error on wrongly position arguments should improve

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Tue Dec 1 05:25:24 PST 2015


https://issues.dlang.org/show_bug.cgi?id=10956

--- Comment #2 from bb.temp at gmx.com ---
(In reply to Andrej Mitrovic from comment #0)
> -----
> import std.getopt;
> 
> void main(string[] args)
> {
>     int i;
>     getopt(args, &i, "");
> }
> -----
> 
> This call is wrong, the text argument should come before the pointer, but
> the diagnostics are bad:
> 
> std\getopt.d(499): Deprecation: using * on an array is deprecated; use
> *(receiver).ptr instead
> std\getopt.d(499): Error: cannot modify immutable expression
> *cast(immutable(char)*)receiver
> std\getopt.d(500): Deprecation: using * on an array is deprecated; use
> *(receiver).ptr instead
> std\getopt.d(500): Deprecation: using * on an array is deprecated; use
> *(receiver).ptr instead
> std\getopt.d(500): Error: cannot modify immutable expression
> *cast(immutable(char)*)receiver
> std\getopt.d(400): Error: template instance std.getopt.handleOption!string
> error instantiating
> std\getopt.d(351):        instantiated from here: getoptImpl!(int*, string)
> test.d(8):        instantiated from here: getopt!(int*, string)
> std\getopt.d(351): Error: template instance std.getopt.getoptImpl!(int*,
> string) error instantiating
> test.d(8):        instantiated from here: getopt!(int*, string)
> test.d(8): Error: template instance std.getopt.getopt!(int*, string) error
> instantiating

I'll probably propose something in the next weeks. I've currently designed a
template that works in the constraint, however it misses a special case (option
passed for next param):

http://dpaste.dzfl.pl/b8d1fb991482

Anyway, quite faisable...

--


More information about the Digitalmars-d-bugs mailing list