This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add test for experimental::builtin warnings blead
authorDagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Sat, 22 Jan 2022 18:28:14 +0000 (18:28 +0000)
committerPaul Evans <leonerd@leonerd.org.uk>
Tue, 25 Jan 2022 15:02:58 +0000 (15:02 +0000)
MANIFEST
t/lib/warnings/builtin [new file with mode: 0644]

index f57ef5c..061b343 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -5709,6 +5709,7 @@ t/lib/warnings/8signal            Tests warnings + __WARN__ and __DIE__
 t/lib/warnings/9enabled                Tests warnings
 t/lib/warnings/9uninit         Tests "Use of uninitialized" warnings
 t/lib/warnings/av              Tests for av.c for warnings.t
+t/lib/warnings/builtin         Tests for builtin.c for warnings.t
 t/lib/warnings/doio            Tests for doio.c for warnings.t
 t/lib/warnings/gv              Tests for gv.c for warnings.t
 t/lib/warnings/hv              Tests for hv.c for warnings.t
diff --git a/t/lib/warnings/builtin b/t/lib/warnings/builtin
new file mode 100644 (file)
index 0000000..693bfd0
--- /dev/null
@@ -0,0 +1,109 @@
+  builtin.c     experimental warnings from builtin functions
+
+__END__
+# builtin.c - booleans
+use strict;
+use warnings qw(all -void);
+use builtin qw(isbool true false);
+my ($isbool, $true, $false) = (\&isbool, \&true, \&false);
+isbool(0);
+true;
+false;
+&isbool(0);
+&true;
+&false;
+$isbool->(0);
+$true->();
+$false->();
+no warnings 'experimental::builtin';
+isbool(0);
+true;
+false;
+&isbool(0);
+&true;
+&false;
+$isbool->(0);
+$true->();
+$false->();
+EXPECT
+Built-in function 'builtin::isbool' is experimental at - line 6.
+Built-in function 'builtin::true' is experimental at - line 7.
+Built-in function 'builtin::false' is experimental at - line 8.
+Built-in function 'builtin::isbool' is experimental at - line 9.
+Built-in function 'builtin::true' is experimental at - line 10.
+Built-in function 'builtin::false' is experimental at - line 11.
+Built-in function 'builtin::isbool' is experimental at - line 12.
+Built-in function 'builtin::true' is experimental at - line 13.
+Built-in function 'builtin::false' is experimental at - line 14.
+########
+# builtin.c - weakrefs
+use strict;
+use warnings qw(all -void);
+use builtin qw(weaken unweaken isweak);
+my ($isweak, $weaken, $unweaken) = (\&weaken, \&unweaken, \&isweak);
+my $ref = [];
+isweak($ref);
+weaken($ref);
+unweaken($ref);
+&isweak($ref);
+&weaken($ref);
+&unweaken($ref);
+$isweak->($ref);
+$weaken->($ref);
+$unweaken->($ref);
+no warnings 'experimental::builtin';
+isweak($ref);
+weaken($ref);
+unweaken($ref);
+&isweak($ref);
+&weaken($ref);
+&unweaken($ref);
+$isweak->($ref);
+$weaken->($ref);
+$unweaken->($ref);
+EXPECT
+Built-in function 'builtin::isweak' is experimental at - line 7.
+Built-in function 'builtin::weaken' is experimental at - line 8.
+Built-in function 'builtin::unweaken' is experimental at - line 9.
+Built-in function 'builtin::isweak' is experimental at - line 10.
+Built-in function 'builtin::weaken' is experimental at - line 11.
+Built-in function 'builtin::unweaken' is experimental at - line 12.
+Built-in function 'builtin::weaken' is experimental at - line 13.
+Built-in function 'builtin::unweaken' is experimental at - line 14.
+Built-in function 'builtin::isweak' is experimental at - line 15.
+########
+# builtin.c - blessed refs
+use strict;
+use warnings qw(all -void);
+use builtin qw(blessed refaddr reftype);
+my ($reftype, $blessed, $refaddr) = (\&blessed, \&refaddr, \&reftype);
+my $ref = [];
+blessed($ref);
+refaddr($ref);
+reftype($ref);
+&blessed($ref);
+&refaddr($ref);
+&reftype($ref);
+$blessed->($ref);
+$refaddr->($ref);
+$reftype->($ref);
+no warnings 'experimental::builtin';
+blessed($ref);
+refaddr($ref);
+reftype($ref);
+&blessed($ref);
+&refaddr($ref);
+&reftype($ref);
+$blessed->($ref);
+$refaddr->($ref);
+$reftype->($ref);
+EXPECT
+Built-in function 'builtin::blessed' is experimental at - line 7.
+Built-in function 'builtin::refaddr' is experimental at - line 8.
+Built-in function 'builtin::reftype' is experimental at - line 9.
+Built-in function 'builtin::blessed' is experimental at - line 10.
+Built-in function 'builtin::refaddr' is experimental at - line 11.
+Built-in function 'builtin::reftype' is experimental at - line 12.
+Built-in function 'builtin::refaddr' is experimental at - line 13.
+Built-in function 'builtin::reftype' is experimental at - line 14.
+Built-in function 'builtin::blessed' is experimental at - line 15.