| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
These tests fail on the EN_US.UTF-8 locale.
Some fail due to a bug fixed in later AIX (lib/locale.t,
t/run/locale.t) and the other due to an apparent bug in the locale
itself.
https://perl5.test-smoke.org/report/5034327
|
|
|
|
| |
Fix spelling on various files pertaining to core Perl.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch uses a collection of heuristics to skip test files which
would die on a perl compiled with -DNO_TAINT_SUPPORT but without
-DSILENT_NO_TAINT_SUPPORT.
-DNO_TAINT_SUPPORT disables taint support in a "safe" way, such that if
you try to use taint mode with the -t or -T options an exception will be
thrown informing you that the perl you are using does not support taint.
(The related setting -DSILENT_NO_TAINT_SUPPORT disables taint support
but causes the -t and -T options to be silently ignored.)
The error from using -t and -T is thrown very early in the process
startup and there is no way to "gracefully" handle it and convert it
into something else, for instance to skip a test file which contains it.
This patch generally fixes our code to skip these tests.
* Make t/TEST and t/harness check shebang lines and use filename checks
to filter out tests that use -t or -T. Primarily this is the result of
checking their shebang line, but some cpan/ files are excluded by
name, either from a very short list of exclusions, or because their
file name contains the word "taint". Non-cpan test files were fixed
individually as noted below.
* test.pl - make run_multiple_progs() skip test cases based on the
switches that are part of the test definition. This function is
used in a great deal of our internal tests, so it fixes a lot of
tests in one go.
* XS-APITest/t/call.t, t/run/switchDX.t, lib/B/Deparse.t - Skip a small
set of tests in each file.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds 'taint_disabled' and 'taint_support' to Config.pm and %Config.
This way people can use them while we decide what to do about the
changes to Configure. We shouldn't need to have Configure changed to
export status variables like this in Config.pm
See: https://github.com/Perl-Toolchain-Gang/Test-Harness/pull/118
and: https://github.com/Perl/perl5/pull/20972
for related work that is stalled because we have not decided what
to do about these variables.
|
|
|
|
|
|
|
|
|
| |
- fix (;$)
- remove infinite loops from check_proto()
- implement (+)
- fix (\@) and (\%)
Fixes GH #20989.
|
|
|
|
|
|
| |
In particular, explain that "preserve permission bits like cp" means the
default behavior of /bin/cp, not "cp -p" or "cp --preserve", so the
umask still applies.
|
|
|
|
|
|
|
| |
Previously it would default to Perl, which happens to produce the right
comment character ("#"), but results in nonsensical syntax highlighting.
Now we set $lang to the special value 'None', which still produces
read-only declarations, but doesn't force a mode/filetype on editors.
|
|
|
|
|
| |
Vim's filetype declarations are case sensitive. The correct types for
Perl, C, and Pod are perl, c, and pod, respectively.
|
|
|
|
|
|
|
|
|
|
| |
Module-CoreList was synced with CPAN and had its version in
Porting/Maintainers.pl updated. Module-CoreList was also updated
by running:
./perl -Ilib Porting/corelist.pl cpan
With some manual fixups afterwards to make it pass test.
|
|
|
|
|
| |
This also fixes the version_downgrade to show the correct version that
version downgrades will be removed in.
|
|
|
|
|
| |
This category applies to attempts to goto the internals of a block
construct.
|
|
|
|
|
|
| |
Some delimiters are considered deprecated because in the future they
will be used as part of a paired delimiter. This adds a new category
for these cases.
|
|
|
|
|
|
|
| |
deprecation category
This category is about use of apostrophe as a package separator, eg
for things like "Test::More::isn't()".
|
|
|
|
|
|
| |
This category is only used in the regex engine, we should be able
to disable it specifically, as it seems like we will never actually
remove demove support for the things it warns about.
|
|
|
|
|
| |
Instead of using a generic warnings category switch to fine grained
control.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently we seem to lack a way to have a subcategory under deprecated.
It seems reasonable to me that people might want to disable a specific
subcategory warning while leaving the rest in place. This patch allows
that. Note that both
no warnings "deprecated";
and
no warnings "deprecated::smartmatch";
work to disable the warning. Deprecated warnings shouldn't be "all or
nothing", they should be specific and targetted.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Like the previous commit which did it for amagic_call() and call_sv(),
this commit makes executing the faked-up OP_ENTEREVAL be executed as
part of the runops loop rather than as a separate call. This is to allow
shortly fixing up for a reference-counted stack. (CALLRUNOPS() will
reify the stack if necessary, while the raw call to pp_entereval() won't
fix up the stack unless its part of the runops loop too.)
However, this is a bit more complex than call_sv() etc in that there is
a good reason for calling pp_entereval() separately. The faked up
OP_ENTEREVAL has its op_next set to NULL - this is the op which would
normally be returned on failure of the eval compilation. By seeing
whether the retuned value from pp_entereval() is NULL or not, eval_sv()
can tell whether compilation failed.
On the other hand, if pp_entereval() was made to be called as part of
the runops loop, then the runops loop *always* finishes with PL_op set
to NULL. So we can no lo longer distinguish between compile-failed and
compile-succeeded-and-eval-ran-to-completion.
This commit moves the entereval into the runops loop, but restores the
ability to distinguish in a slightly hacky way. It adds a new private
flag for OP_ENTEREVAL - OPpEVAL_EVALSV - which indicates to
pp_entereval() that it was called from eval_sv(). And of course
eval_sv() sets this flag on the OPpEVAL_EVALSV op it fakes up. If
pp_entereval() fails to compile, then if that flag is set, it pushes a
null pointer onto the argument stack before returning.
Thus by checking whether *PL_stack_sp is NULL or not on return from
CALLRUNOPS(), eval_sv() regains the ability to distinguish the two
cases.
|
|
|
|
|
| |
Change is actually made in regen/feature.pl, then we run 'perl
regen.pl'.
|
| |
|
| |
|
|
|
|
|
| |
Make the 'experimental::smartmatch' warning obsolete, and use
'deprecated' instead.
|
|
|
|
|
|
|
|
| |
If time() or times() is broken then Benchmark can infinite loop.
This adds a sanity check that will die early if it appears that
either are broken.
This fixes the infinite loop part of GH Issue #20839
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Multiple forms of syntax can be used to obtain a package name from
`caller`, which emits this as its first return value, and assign
that name to a lexical scalar.
The following each achieve the same result, but with varying efficiency:
* `sub callme { my $package = caller(2); ...}`
* `sub callme { my ($package) = caller(2); ...}`
* `sub callme { my $package = (caller(2))[0]; ...}`
In the first example, `pp_caller` determines only the package name
and pushes it to the stack. In the other two examples, the other 10 of
`caller`'s return values are calculated and pushed onto the stack,
before being discarded.
This commit changes non-CPAN-first instances of the latter two forms
in core to the first form.
Note: There is a special exception to the equivalence described above,
when caller is use in list context within the DB package. Such a
usage instance in regen/warnings.pl therefore remains unchanged.
|
|
|
|
|
| |
caller in scalar context does much less work so not only is this easier to read, it should be a tad faster.
And for good measure, switch to the modern version declaration while bumping.
|
|
|
|
| |
Be a bit clearer that this is used for testing perl itself.
|
| |
|
|
|
|
| |
so that github syntax highlights them properly
|
|
|
|
|
|
|
|
|
|
| |
This updates the mode-line for most of our generated files so that
they include file type information so they will be properly syntax
highlighted on github.
This does not make any other functional changes to the files.
[Note: Commit message rewritten by Yves]
|
|
|
|
|
|
|
|
|
|
|
| |
From Changes:
- Fix the name of the extra_paired_delimiters feature (previously
mis-documented as extra_paired_delims)
- Added "stable.pm", which acts like experimental.pm only for features which
have been marked non-experimental in their current form, in later version of
perl.
|
| |
|
|
|
|
|
| |
Allows non-constant expressions with side effects. Evaluated during the
constructor of each instance.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adds a new experimental warning, feature, keywords and enough parsing to
implement basic classes with an empty `new` constructor method.
Inject a $self lexical into method bodies; populate it with the object instance, suitably shifted
Creates a new OP_METHSTART opcode to perform method setup
Define an aux flag to remark which stashes are classes
Basic implementation of fields.
Basic anonymous methods.
|
|
|
|
|
|
|
| |
This fixes issue #15544. If the user has PATH, or similar variables
containing a list of directories separated by e.g. a colon character
these can easily become lines with more than 1000 characters in a perlbug
report, resulting in a test failure in lib/perlbug.t.
|
|
|
|
| |
Add `my`, and name variables differently to avoid confusion.
|
| |
|
|
|
|
| |
None of the other headings in feature.pm have full stops.
|
|
|
|
|
|
| |
Since lib/feature.pm is a generated file, the actual changes are made in
regen/feature.pl, followed by 'make regen' to regenerate lib/feature.pm
(and then followed by 'make test_porting') to confirm.
|
|
|
|
|
|
| |
I missed a parallelism issue in the DBM_Filter tests. This patch makes
01error.t and 02core.t use temporary directories for their tests so they
don't collide.
|
|
|
|
|
|
| |
Tests were using the same filenames for each test, and if
they ran at the same time, boom. Fixed them to each use their
own prefix.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This op is constructed using an OP_HELEM as the op_first and any scalar
expression as the op_other.
It is roughly equivalent to the following perl code:
exists $hv{$key} ? $hv{$key} : OTHER
except that the HV and the KEY expression are evaluated only once, and
only one hv_* function is invoked to both test and obtain the value. It
is therefore smaller and more efficient.
Likewise, adding the OPpHELEMEXISTSOR_DELETE flag turns it into the
equivalent of
exists $hv{$key} ? delete $hv{$key} : OTHER
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When dealing with a tied scalar with get magic, and the FETCH method
returned a blessed reference with overloading magic (with "a" magic),
the tied scalar returned from the fetch was not copied prior to calling
the magic function as an argument, this would then cause the get magic
to be called again if the overloaded method happened to copy or
otherwise use the tied scalar. The solution is to copy the reference
prior to dispatching the overload call.
It looks like we have been testing for the double FETCH for some time,
without any good rationale, so this test merely changes things to expect
the desired count.
|
|
|
|
| |
This was added in commit <https://github.com/Perl/perl5/commit/ff25e5dbbad6ccf83f2e2a874a3c90294ea8cb47>.
|
|
|
|
| |
This is in preparation for the next commit
|
| |
|
| |
|
|
|
|
|
|
| |
These create parameters where the default expression is assigned
whenever the caller did not pass a defined (or true) value. I.e. both if
it is missing, or is present but undef (or false).
|
| |
|
|
|
|
| |
This fixes GH #20419
|