[flang-commits] [PATCH] D135216: [flang] Improve syntax error messages by fixing withMessage() parser combinator

Peter Klausler via Phabricator via flang-commits flang-commits at lists.llvm.org
Tue Oct 4 15:11:18 PDT 2022


klausler created this revision.
klausler added a reviewer: clementval.
klausler added a project: Flang.
Herald added a subscriber: jdoerfert.
Herald added a reviewer: sscalpone.
Herald added a reviewer: awarzynski.
Herald added a project: All.
klausler requested review of this revision.

The parser combinator withMessage("error message"_err_en_US, PARSER) is meant
to run the parser PARSER and, if it fails, override its error messages if
it failed silently or it was unable to recognize any tokens at all.  This
gives the parser a way to avoid emitting some confusing or missing error
messages.  Unfortunately, the implementation could sometimes lose track of
whether any tokens had been recognized, leading to problems with outer usage
of withMessage() and also -- more seriously -- with ParseState::CombineFailedParses().
That's a utility that determines which error messages to retain when two
or more parsers have been attempted at the same starting point and none
of them succceed.  Its policy is to retain the state from the parser that
consumed the most input text before failing, so long as it had recognized at
least one token.

So anyway, fix up withMessage(), adjust the tests, and add a test of the
original motivating confusing error situation, in which a syntax error in
a COMMON statement was being diagnosed as a problem with a statement function
definition because withMessage() had lost the fact that the parse of the
COMMON statement had recognized some tokens, and the last attempted parse
later was a failed attempt to parse a statement function.


https://reviews.llvm.org/D135216

Files:
  flang/lib/Parser/basic-parsers.h
  flang/test/Driver/color-diagnostics-parse.f90
  flang/test/Parser/doubled-comma.f90
  flang/test/Semantics/error_stop1a.f90
  flang/test/Semantics/synchronization01a.f90
  flang/test/Semantics/synchronization03a.f90

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D135216.465194.patch
Type: text/x-patch
Size: 7959 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/flang-commits/attachments/20221004/a544f34f/attachment.bin>


More information about the flang-commits mailing list