D.gnu - getopt errors
- Sebastiaan Koppe (104/104) Jan 21 2016 This code:
- Johannes Pfau (5/26) Jan 22 2016 defaultGetoptPrinter is not yet available in the phobos version
- Sebastiaan Koppe (9/12) Jan 22 2016 Thanks. I never know which version of this supports which version
- Johannes Pfau (34/48) Jan 22 2016 The best way is running this code snippet:
- Sebastiaan Koppe (5/28) Jan 22 2016 When I have nothing to do I might setup a service that tells you
This code:
bool time;
string fileIn;
string fileOut;
auto helpInformation = getopt(
args,
"time", "Show timing information", &time,
"i|input", "Input file (defaults to stdin)", &fileIn,
"o|output", "Output file (defaults to stdout)", &fileOut
);
if (helpInformation.helpWanted)
{
defaultGetoptPrinter("ECMAScript 5
minifier.\n\nUsage:\t"~baseName(args[0])~"
[OPTIONS]\n\nOptions:\n", helpInformation.options);
return 1;
}
on gdc 5.3.0-1 Gives me:
/usr/include/dlang/gdc/std/getopt.d:547:36: error: cannot modify
immutable expression *cast(immutable(char)*)receiver
if (incremental) ++*receiver;
^
/usr/include/dlang/gdc/std/getopt.d:548:22: error: cannot modify
immutable expression *cast(immutable(char)*)receiver
else *receiver = to!(typeof(*receiver))(val);
^
/usr/include/dlang/gdc/std/getopt.d:441:25: error: template
instance std.getopt.handleOption!string error instantiating
handleOption(option, receiver, args, cfg,
incremental);
^
/usr/include/dlang/gdc/std/getopt.d:392:22: note: instantiated
from here: getoptImpl!(string, string, bool*, string, string,
string*, string, string, string*)
return getoptImpl(args, cfg, opts);
^
source/app.d:24:31: note: instantiated from here: getopt!(string,
string, bool*, string, string, string*, string, string, string*)
auto helpInformation = getopt(
^
/usr/include/dlang/gdc/std/getopt.d:433:33: error: array index
[1] is outside array bounds [0 .. 1]
auto receiver = opts[1];
^
/usr/include/dlang/gdc/std/getopt.d:442:46: error: string slice
[2 .. 1] is out of bounds
return getoptImpl(args, cfg, opts[2 .. $]);
^
/usr/include/dlang/gdc/std/getopt.d:442:13: error: cannot return
non-void from void function
return getoptImpl(args, cfg, opts[2 .. $]);
^
/usr/include/dlang/gdc/std/getopt.d:442:30: error: template
instance std.getopt.getoptImpl!(string*) error instantiating
return getoptImpl(args, cfg, opts[2 .. $]);
^
/usr/include/dlang/gdc/std/getopt.d:442:30: note: instantiated
from here: getoptImpl!(string, string, string*)
return getoptImpl(args, cfg, opts[2 .. $]);
^
/usr/include/dlang/gdc/std/getopt.d:442:30: note: instantiated
from here: getoptImpl!(string, string*, string, string, string*)
return getoptImpl(args, cfg, opts[2 .. $]);
^
/usr/include/dlang/gdc/std/getopt.d:442:30: note: instantiated
from here: getoptImpl!(bool*, string, string, string*, string,
string, string*)
return getoptImpl(args, cfg, opts[2 .. $]);
^
/usr/include/dlang/gdc/std/getopt.d:392:22: note: instantiated
from here: getoptImpl!(string, string, bool*, string, string,
string*, string, string, string*)
return getoptImpl(args, cfg, opts);
^
source/app.d:24:31: note: instantiated from here: getopt!(string,
string, bool*, string, string, string*, string, string, string*)
auto helpInformation = getopt(
^
/usr/include/dlang/gdc/std/getopt.d:442:13: error: cannot return
non-void from void function
return getoptImpl(args, cfg, opts[2 .. $]);
^
/usr/include/dlang/gdc/std/getopt.d:442:13: error: cannot return
non-void from void function
return getoptImpl(args, cfg, opts[2 .. $]);
^
/usr/include/dlang/gdc/std/getopt.d:442:13: error: cannot return
non-void from void function
return getoptImpl(args, cfg, opts[2 .. $]);
^
/usr/include/dlang/gdc/std/getopt.d:442:13: error: cannot return
non-void from void function
return getoptImpl(args, cfg, opts[2 .. $]);
^
/usr/include/dlang/gdc/std/getopt.d:392:5: error: cannot return
non-void from void function
return getoptImpl(args, cfg, opts);
^
source/app.d:33:3: error: undefined identifier
defaultGetoptPrinter
defaultGetoptPrinter("ECMAScript 5
minifier.\n\nUsage:\t"~baseName(args[0])~"
[OPTIONS]\n\nOptions:\n", helpInformation.options);
^
Jan 21 2016
Am Thu, 21 Jan 2016 12:06:18 +0000
schrieb Sebastiaan Koppe <mail skoppe.eu>:
This code:
bool time;
string fileIn;
string fileOut;
auto helpInformation = getopt(
args,
"time", "Show timing information", &time,
"i|input", "Input file (defaults to stdin)", &fileIn,
"o|output", "Output file (defaults to stdout)",
&fileOut );
if (helpInformation.helpWanted)
{
defaultGetoptPrinter("ECMAScript 5
minifier.\n\nUsage:\t"~baseName(args[0])~"
[OPTIONS]\n\nOptions:\n", helpInformation.options);
return 1;
}
defaultGetoptPrinter is not yet available in the phobos version
used by GDC. GDC uses phobos version 2.066, defaultGetoptPrinter was
added in 2.067.
Jan 22 2016
On Friday, 22 January 2016 at 10:06:01 UTC, Johannes Pfau wrote:defaultGetoptPrinter is not yet available in the phobos version used by GDC. GDC uses phobos version 2.066, defaultGetoptPrinter was added in 2.067.Thanks. I never know which version of this supports which version of that. Any easy way of checking this? I mean, how can I tell that gdc 5.3.0-1 supports phobos 2.066? I reckon other people run into these errors as well, and it would be nice if there was a way of checking whether a function is supported in gdc/ldc x.x.x Hmm. Sounds like a nice project with git, libdparse and vibe. What about the other errors though?
Jan 22 2016
Am Fri, 22 Jan 2016 11:32:30 +0000 schrieb Sebastiaan Koppe <mail skoppe.eu>:On Friday, 22 January 2016 at 10:06:01 UTC, Johannes Pfau wrote:The best way is running this code snippet: --------------------------------------------------- import std.compiler; import std.stdio; void main() { writefln("%s %s %s.%s (D%s)", name, vendor, version_major, version_minor, D_major); } --------------------------------------------------- You can also have a look at the std.compiler implementation if you want to use the __VERSION__ and __VENDOR__ variables directly.defaultGetoptPrinter is not yet available in the phobos version used by GDC. GDC uses phobos version 2.066, defaultGetoptPrinter was added in 2.067.Thanks. I never know which version of this supports which version of that. Any easy way of checking this? I mean, how can I tell that gdc 5.3.0-1 supports phobos 2.066?I reckon other people run into these errors as well, and it would be nice if there was a way of checking whether a function is supported in gdc/ldc x.x.x Hmm. Sounds like a nice project with git, libdparse and vibe.Yes, this is really a common problem. I'd say the simplest way to check is trying to compile the code with the matching DMD version (e.g. 2.066.1).What about the other errors though?Same reason. The old getopt code can't handle the help strings and therefore produces these error messages. This works: --------------------------------------------------- import std.getopt; void main(string[] args) { bool time; string fileIn; string fileOut; getopt( args, "time", &time, "i|input", &fileIn, "o|output", &fileOut ); }
Jan 22 2016
On Friday, 22 January 2016 at 13:03:58 UTC, Johannes Pfau wrote:Am Fri, 22 Jan 2016 11:32:30 +0000 schrieb Sebastiaan Koppe <mail skoppe.eu>:Why doesn't gdc emit this when called with `--version`?Thanks. I never know which version of this supports which version of that. Any easy way of checking this? I mean, how can I tell that gdc 5.3.0-1 supports phobos 2.066?The best way is running this code snippet: --------------------------------------------------- import std.compiler; import std.stdio; void main() { writefln("%s %s %s.%s (D%s)", name, vendor, version_major, version_minor, D_major); } ---------------------------------------------------Yes, this is really a common problem. I'd say the simplest way to check is trying to compile the code with the matching DMD version (e.g. 2.066.1).When I have nothing to do I might setup a service that tells you in which version a symbol was introduced.I see, I was mislead due to the errors being in the std code.What about the other errors though?Same reason. The old getopt code can't handle the help strings and therefore produces these error messages.
Jan 22 2016








Sebastiaan Koppe <mail skoppe.eu>