develooper Front page | perl.perl5.changes | Postings from August 2022

[Perl/perl5] a240f0: Revert "postpone perl_parse() exit(0) bugfix"

From:
Yves Orton via perl5-changes
Date:
August 29, 2022 12:09
Subject:
[Perl/perl5] a240f0: Revert "postpone perl_parse() exit(0) bugfix"
Message ID:
Perl/perl5/push/refs/heads/yves/stop_first_error/e89295-1e18ad@github.com
  Branch: refs/heads/yves/stop_first_error
  Home:   https://github.com/Perl/perl5
  Commit: a240f0da07dc32bf5321af6e53a5d6c1f4877995
      https://github.com/Perl/perl5/commit/a240f0da07dc32bf5321af6e53a5d6c1f4877995
  Author: Yves Orton <demerphq@gmail.com>
  Date:   2022-08-29 (Mon, 29 Aug 2022)

  Changed paths:
    M perl.c
    M t/op/blocks.t

  Log Message:
  -----------
  Revert "postpone perl_parse() exit(0) bugfix"

This reverts commit 857320cbf85e762add18885ae8a197b5e0c21b69.

There were a lot of conflicts due to whitespace changes in the
intervening time. I manually reviewed the differences and merged them.


  Commit: 9a1cf68c4618090167ad58bc0be312d6ab7e573d
      https://github.com/Perl/perl5/commit/9a1cf68c4618090167ad58bc0be312d6ab7e573d
  Author: Yves Orton <demerphq@gmail.com>
  Date:   2022-08-29 (Mon, 29 Aug 2022)

  Changed paths:
    M perl.h

  Log Message:
  -----------
  perl.h - add DEBUG_force() macro, to force debug for DEBUG_l() style macros

If you temporarily want to force on a DEBUG_l({...}) style macro you
have to change a fair bit of code, which is error prone. DEBUG_force()
lets you replace any DEBUG_x() macro with DEBUG_force() which will force
the debug block to execute (under DEBUGGING).


  Commit: 924878c604ab14938c92f34fcdf66469267a5fff
      https://github.com/Perl/perl5/commit/924878c604ab14938c92f34fcdf66469267a5fff
  Author: Yves Orton <demerphq@gmail.com>
  Date:   2022-08-29 (Mon, 29 Aug 2022)

  Changed paths:
    M cop.h

  Log Message:
  -----------
  cop.h - show a bit more debug out in JMPENV macros, and minor fixes

Eg, use (v) consistently. Line up backslashes. Show the return from
JMPENV_PUSH().


  Commit: b714be94dc84b1e40883f1c3541e7c736fa86680
      https://github.com/Perl/perl5/commit/b714be94dc84b1e40883f1c3541e7c736fa86680
  Author: Yves Orton <demerphq@gmail.com>
  Date:   2022-08-29 (Mon, 29 Aug 2022)

  Changed paths:
    M pod/perlinterp.pod

  Log Message:
  -----------
  perlinterp.pod - minor enhancements of the docs about JMPENV_ macros

Added a bit more on the levels and return codes. 1 is actually used
in the outmost call, or at least there is code to support it. Also
added "level" info, since that is used in -Dl.


  Commit: e53ba00b68e50d4840b3239c693a54f745f93de0
      https://github.com/Perl/perl5/commit/e53ba00b68e50d4840b3239c693a54f745f93de0
  Author: Yves Orton <demerphq@gmail.com>
  Date:   2022-08-29 (Mon, 29 Aug 2022)

  Changed paths:
    M pp_ctl.c

  Log Message:
  -----------
  pp_ctl.c - use try_yyparse() for eval

CATCH_GET is never true in this code, so we never called try_yyparse()
which in turn meant we leaked debug data from failed evals. With this
in place an eval that dies during compile will always be handled by
doeval_comp() properly.

This fixes GH Issue #20161.


  Commit: 8701aa5cb5ff260c226e129c003a2aff8a11df19
      https://github.com/Perl/perl5/commit/8701aa5cb5ff260c226e129c003a2aff8a11df19
  Author: Yves Orton <demerphq@gmail.com>
  Date:   2022-08-29 (Mon, 29 Aug 2022)

  Changed paths:
    M toke.c

  Log Message:
  -----------
  toke.c - dont just return the function, assign it to an intermediary

So we can debug it before we return. an optimization compiler should
make them the same thing anyway, but under -Og it is helpful to be able
to be able to see the return before we return it.


  Commit: 1e18ad64d6a32a50e36807fc1132b41c51db0334
      https://github.com/Perl/perl5/commit/1e18ad64d6a32a50e36807fc1132b41c51db0334
  Author: Yves Orton <demerphq@gmail.com>
  Date:   2022-08-29 (Mon, 29 Aug 2022)

  Changed paths:
    M embed.fnc
    M perl.c
    M perl.h
    M pod/perldiag.pod
    M pp_ctl.c
    M proto.h
    M t/lib/croak/toke
    M t/lib/subs/subs
    M t/lib/warnings/7fatal
    M t/lib/warnings/toke
    M t/op/lex.t
    M t/op/tie.t
    M t/run/fresh_perl.t
    M toke.c

  Log Message:
  -----------
  DRAFT: Stop parsing on first syntax error.

We try to keep parsing after many types of errors, up to a (current)
maximum of 10 errors. Continuing after a semantic error (like
undeclared variables) can be helpful, for instance showing a set of
common errors, but continuing after a syntax error isn't helpful
most of the time and will produce sometimes completely bizarre errors
which just obscures the actual error.

This patch makes the parser stop after the first syntax error, while
preserving the current behavior for other errors. An error is considered
a syntax error if the error message from our internals is the literal
text "syntax error". This may not be a complete list.

This patch will fail test in t/comp/retainedlines.t but what that file
tries to testis already buggy, this change just exposes the bug inside
of the tests that retainedlines.t runs where it used to not to tickle
the bug. More details can be found in GH Issue #20161.


Compare: https://github.com/Perl/perl5/compare/e892954de38b...1e18ad64d6a3



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About