Branch: refs/heads/yves/no_repeat_package
  Home:   https://github.com/Perl/perl5
  Commit: 3cf01b37d63347eda11fa86c02c79d71ea002085
      
https://github.com/Perl/perl5/commit/3cf01b37d63347eda11fa86c02c79d71ea002085
  Author: Yves Orton <demer...@gmail.com>
  Date:   2024-12-05 (Thu, 05 Dec 2024)

  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.



To unsubscribe from these emails, change your notification settings at 
https://github.com/Perl/perl5/settings/notifications

Reply via email to