On Fri, Feb 3, 2017 at 3:49 PM, Robert Haas <robertmh...@gmail.com> wrote:
> On Fri, Feb 3, 2017 at 11:08 AM, Corey Huinker <corey.huin...@gmail.com> > wrote: > > I could bulk up the error message on if/elif like such: > > > > if: true, executing commands. > > if: false, ignoring commands until next \else, \elif, or \endif. > > if: error, ignoring all commands until next \endif > > else: true, executing commands > > else: false, ignoring commands until next \endif > > else: error, ignoring commands until next \endif > > endif: now executing commands > > endif: ignoring commands until next [\else, [\elif [, \endif]] > > > > Basically, I'd tailor the message to as closely reflect what is possible > for > > the user at this moment. > > I think that this is kinda hairy. When I see "endif: now executing > commands", my reaction is "oh crap, which commands are you > executing?". What you really mean is that future command are expected > to be executed unless things change (for example, due to another \if > in the meantime), but somebody might have a different interpretation > of these messages. > > I think that the messages you are proposing for "if" and "else" are > reasonable, but for "endif" I would just say "endif: exiting if" or > something like that. If the user doesn't know to what state they are > returning, c'est la vie. > That might be what we end up doing. I'm willing to see how unwieldy it gets before rolling back to "endif: peace out". The state logic has stuff to do anyway, so for the moment I've added psql_error() messages at each endpoint. My current (unsubmitted) work has: if you were in a true branch and leave it (i.e yes->yes) + psql_error("exited \\if to true parent branch, \n" + "continuing executing commands\n"); if you were in a false branch beneath a true branch and leave it (no->yes) + psql_error("exited \\if to true parent branch, \n" + "resuming executing commands\n"); And if you were in a branch that was a child of a false branch (no->no): + psql_error("exited \\if to false parent branch, \n" + "ignoring commands until next \\endif\n"); And the (yes->no) is an impossibility, so no message there. I'm not too concerned about what wording we finally go with, and as the coder I realize I'm too close to know the wording that will be most helpful to an outsider, so I'm very much trusting others to guide me.