CTFE Evaluation with JSON Objects
rbscott
tjonsies818 at yahoo.com
Wed Jan 22 10:17:43 UTC 2020
Hello,
I am running into an error during compilation and I can't figure
out a way to work around it. The use case is pretty simple, to
pull an integer out of a JSON Object at compile time.
import std.json;
void main()
{
// Basic, should be the same principle?
const jsonNumber = new JSONValue(1);
pragma(msg, jsonNumber.integer);
// Why does this work?
const jsonObject = parseJSON(`{ "str" : "string", "integer":
2 }`);
pragma(msg, jsonObject["str"].str);
// Why does this fail?
pragma(msg, jsonObject["integer"].integer);
}
All of the compilers seem to fail with the error, "Error:
reinterpretation through overlapped field integer is not allowed
in CTFE". I think this is related to working with unions at
compile time, but a. I am not sure why it doesn't happen when
using a new JSONValue directly, and b. how to work around this
limitation. Looking at the JSONValue source, the store is private
and so even using a C cast wouldn't work without modifying the
source.
Any thoughts or ideas?
thanks!
rbscott
More information about the Digitalmars-d
mailing list