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

[Perl/perl5] e69366: error messages - do not repeat class namestwice i...

From:
Yves Orton via perl5-changes
Date:
August 27, 2022 08:21
Subject:
[Perl/perl5] e69366: error messages - do not repeat class namestwice i...
Message ID:
Perl/perl5/push/refs/heads/yves/no_repeat_package/455b62-e69366@github.com
  Branch: refs/heads/yves/no_repeat_package
  Home:   https://github.com/Perl/perl5
  Commit: e69366783d7ab28238f95ab666684e29c0a24ade
      https://github.com/Perl/perl5/commit/e69366783d7ab28238f95ab666684e29c0a24ade
  Author: Yves Orton <demerphq@gmail.com>
  Date:   2022-08-27 (Sat, 27 Aug 2022)

  Changed paths:
    M gv.c
    M pod/perldiag.pod
    M pp_sys.c
    M t/lib/warnings/gv
    M t/op/tie.t
    M t/run/fresh_perl.t

  Log Message:
  -----------
  error messages - do not repeat class names twice in our error messages

Showing the classname twice in the error message seems friendly when the
class name is short, but when it is long enough that the line wraps the
duplication just increases cognitive load understand the error message.
This is especially the case when the value is a total error and contains
gibberish or a long binary string or such things, something that is all
to common with this type of error. Even with the recently merged eliding
of names the duplication means that an error message can be 2k long in
the worst case, mostly because of the unnecessary duplication.

As a compromise we can simply replace the second invocation of the class
name by saying "it" instead, and that is what this patch does. The error
message is still friendly, but not repetitive. We could also use "the
package" if people preferred.

Thus:
$ perl -le'("x" x 50)->new()'
Can't locate object method "new" via package "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
 (perhaps you forgot to load "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"?) at -e line 1.

Turns into:
$ ./perl -le'("x" x 50)->new()'
Can't locate object method "new" via package "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
 (perhaps you forgot to load it?) at -e line 1.





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