diff options
author | Paul "LeoNerd" Evans <leonerd@leonerd.org.uk> | 2021-09-14 21:30:42 +0100 |
---|---|---|
committer | Paul Evans <leonerd@leonerd.org.uk> | 2022-01-26 21:02:05 +0000 |
commit | 0f5b7492ba5f0c2a0b81fef18b71bc3a3c3828c6 (patch) | |
tree | 90894680e7e235a0cf0c8bcfd264c083a93b3982 /ext/XS-APItest | |
parent | 1dd43bcec3ba1445e696f8031bbc7c5d7b6a1a49 (diff) | |
download | perl-0f5b7492ba5f0c2a0b81fef18b71bc3a3c3828c6.tar.gz |
Have sv_numeq() respect == overloading unless the SV_SKIP_OVERLOAD flag is passed
Diffstat (limited to 'ext/XS-APItest')
-rw-r--r-- | ext/XS-APItest/Makefile.PL | 2 | ||||
-rw-r--r-- | ext/XS-APItest/t/sv_numeq.t | 16 |
2 files changed, 16 insertions, 2 deletions
diff --git a/ext/XS-APItest/Makefile.PL b/ext/XS-APItest/Makefile.PL index 16b024e97c..b666a3d137 100644 --- a/ext/XS-APItest/Makefile.PL +++ b/ext/XS-APItest/Makefile.PL @@ -25,7 +25,7 @@ my @names = (qw(HV_DELETE HV_DISABLE_UVAR_XKEY HV_FETCH_ISSTORE G_SCALAR G_LIST G_VOID G_DISCARD G_EVAL G_NOARGS G_KEEPERR G_NODEBUG G_METHOD G_FAKINGEVAL G_RETHROW GV_NOADD_NOINIT - SV_GMAGIC + SV_GMAGIC SV_SKIP_OVERLOAD IS_NUMBER_IN_UV IS_NUMBER_GREATER_THAN_UV_MAX IS_NUMBER_NOT_INT IS_NUMBER_NEG IS_NUMBER_INFINITY IS_NUMBER_NAN IS_NUMBER_TRAILING PERL_SCAN_TRAILING diff --git a/ext/XS-APItest/t/sv_numeq.t b/ext/XS-APItest/t/sv_numeq.t index d183e67548..1949715f6b 100644 --- a/ext/XS-APItest/t/sv_numeq.t +++ b/ext/XS-APItest/t/sv_numeq.t @@ -1,6 +1,6 @@ #!perl -use Test::More tests => 6; +use Test::More tests => 9; use XS::APItest; my $four = 4; @@ -15,3 +15,17 @@ ok !sv_numeq($six_point_five, 6.6), '$six_point_five == 6.6'; "10" =~ m/(\d+)/; ok !sv_numeq_flags($1, 10, 0), 'sv_numeq_flags with no flags does not GETMAGIC'; ok sv_numeq_flags($1, 10, SV_GMAGIC), 'sv_numeq_flags with SV_GMAGIC does'; + +# overloading +{ + package AlwaysTen { + use overload + '==' => sub { return $_[1] == 10 }, + '0+' => sub { 123456 }; + } + + ok sv_numeq(bless([], "AlwaysTen"), 10), 'AlwaysTen is 10'; + ok !sv_numeq(bless([], "AlwaysTen"), 11), 'AlwaysTen is not 11'; + + ok !sv_numeq_flags(bless([], "AlwaysTen"), 10, SV_SKIP_OVERLOAD), 'AlwaysTen is not 10 with SV_SKIP_OVERLOAD' +} |