Since we already detect error and return NULL when lvalue is invalid, why redo the error checking later?

Another way would be to _first_ do PromiseCheckConstraints(), and then call ConstraintGetSyntax() which would have no error checking logic at all (or maybe abort in case of error).