On Thursday, 24 July 2014 at 15:20:58 UTC, Justin Whear wrote:
On Thu, 24 Jul 2014 15:15:36 +0000, Pavel wrote:
Ok, let me start with the sample code:
import std.stdio;
import std.json;
void main() {
scope(failure) writeln("FaILED!!");
string jsonStr = `{ "name": "1", "type": "r" }`;
auto parsed = parseJSON(jsonStr);
string s = parsed["fail"].str;
writeln(s == "");
writeln(s is null);
writeln(s);
}
Running "rdmd app.d" doesn't produce any output.
Can anyone explain such a behavior???
PS: Running dmd v2.065 on Linux x64.
That's because it produces a segmentation fault, which rdmd
masks for
some reason. The `parsed["fail"]` should throw a range bounds
exception--
not sure why it's not.
Here's phobos code from github:
/// Hash syntax for json objects.
/// Throws $(D JSONException) if $(D type) is not $(D
JSON_TYPE.OBJECT).
ref inout(JSONValue) opIndex(string k) inout
{
enforceEx!JSONException(type == JSON_TYPE.OBJECT,
"JSONValue is not an object");
return *enforceEx!JSONException(k in store.object,
"Key not found: " ~ k);
}
Added in
https://github.com/D-Programming-Language/phobos/commit/13fbd451bcca923cf8d1028495e58aa88cc7efeb
Maybe phobos is not up to date for me???