Made "operator" a reserved keyword for future versions of Dao.
Made the last of the bug fixes to the "Dao.Object.Random" module that have been uncovered by the test program. The random syntax generator is now, unless I missed some detail, completely in tune with the parser, every expression generated can be pretty printed in such a way that parsing it generates the exact same object.
Made the last of the bug fixes to the "Dao.Object.Random" module that have been uncovered by the test program. The random syntax generator is now, unless I missed some detail, completely in tune with the parser, every expression generated can be pretty printed in such a way that parsing it generates the exact same object.
I had long ago added several constructors to the "Dao.Object.PrefixOp" type, but I had until now forgotten to update the binary serializer for that data type. The test program discovered this bug, and it has been fixed.
I have modified the kinds of tests that are executed, now half of all tests generated a random object rather than a random abstract syntax tree. This is because not all syntactically correct randomly generated AST data structures map to the all possible pretty-printed representation of arbitrary object values. In order to truly test every possible object value, not just syntactically correct values, in tests like serialization and structurization, it is necessary to generate arbitrary object values as well as AST objects.
The parser test treats arbitrary object values differently. The object is pretty printed and parsed, but the value of the object is not compared to the parsed result, it is simply checked if the pretty printer for the object generated syntactically correct code.
Also, the serializer test had not been used until this evening. I discovered that the way I had initially written it was incorrect. I have fixed the serializer tests now.
Updated the status of various bugs and feature requests in the TODO file for the first time in a long time.
Added the reserved keywords (for future use) "public" and "private".
Made error reporting on structurizing tests more verbose and useful.