diff options
author | gregor herrmann <gregoa@debian.org> | 2021-09-16 21:33:03 +0200 |
---|---|---|
committer | gregor herrmann <gregoa@debian.org> | 2021-09-16 21:33:03 +0200 |
commit | 7c869874293cd7c8a2f7a62ca1b25c80336571b1 (patch) | |
tree | a41939052dea8f074b422334547e315be30f7075 | |
parent | 4972080bc25e528dc49baa3028d58483c624b77e (diff) | |
parent | 0bd4991abcc5911b1f33b3e31f92fb3fb1ed9a7f (diff) |
Update upstream source from tag 'upstream/0.26'
Update to upstream version '0.26'
with Debian dir 67881798454f7b1b39e49065a40bd7f38e8c93a6
52 files changed, 434 insertions, 421 deletions
@@ -1,3 +1,4 @@ +use v5; use strict; use warnings; @@ -8,12 +9,14 @@ my $build = Module::Build->new( requires => { 'Encode' => 0, 'Exporter' => '5.57', - 'Future' => 0, + 'Feature::Compat::Try' => 0, + 'Future' => '0.36', 'List::Util' => '1.29', - 'perl' => 5.010, + 'perl' => '5.014', 'Parser::MGC' => '0.04', 'Struct::Dumb' => 0, 'Sub::Util' => '1.40', + 'Syntax::Keyword::Match' => 0, }, test_requires => { 'Struct::Dumb' => '0.09', @@ -1,5 +1,17 @@ Revision history for Tangence +0.26 2021-09-12 + [CHANGES] + * General code modernisation: + + Use Syntax::Keyword::Match instead of given/when + + Use Feature::Compat::Try instead of eval {} + + use VERSION in every .pm file + * Support core booleans in 'any' type packing + * Ensure that boolean stream values unpack to real booleans + + [BUGFIXES] + * Depend on Future >= 0.36 for ->retain method (RT131471) + 0.25 2020-01-14 [CHANGES] * Allow servers to disallow access to Registry @@ -1,4 +1,4 @@ -This software is copyright (c) 2020 by Paul Evans <leonerd@leonerd.org.uk>. +This software is copyright (c) 2021 by Paul Evans <leonerd@leonerd.org.uk>. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. @@ -12,7 +12,7 @@ b) the "Artistic License" --- The GNU General Public License, Version 1, February 1989 --- -This software is Copyright (c) 2020 by Paul Evans <leonerd@leonerd.org.uk>. +This software is Copyright (c) 2021 by Paul Evans <leonerd@leonerd.org.uk>. This is free software, licensed under: @@ -272,7 +272,7 @@ That's all there is to it! --- The Artistic License 1.0 --- -This software is Copyright (c) 2020 by Paul Evans <leonerd@leonerd.org.uk>. +This software is Copyright (c) 2021 by Paul Evans <leonerd@leonerd.org.uk>. This is free software, licensed under: @@ -4,7 +4,7 @@ "Paul Evans <leonerd@leonerd.org.uk>" ], "dynamic_config" : 1, - "generated_by" : "Module::Build version 0.4224", + "generated_by" : "Module::Build version 0.4231", "license" : [ "perl_5" ], @@ -23,12 +23,14 @@ "requires" : { "Encode" : "0", "Exporter" : "5.57", - "Future" : "0", + "Feature::Compat::Try" : "0", + "Future" : "0.36", "List::Util" : "1.29", "Parser::MGC" : "0.04", "Struct::Dumb" : "0", "Sub::Util" : "1.40", - "perl" : "5.01" + "Syntax::Keyword::Match" : "0", + "perl" : "5.014" } }, "test" : { @@ -46,101 +48,103 @@ "provides" : { "Tangence" : { "file" : "lib/Tangence.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Class" : { "file" : "lib/Tangence/Class.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Client" : { "file" : "lib/Tangence/Client.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Compiler::Parser" : { "file" : "lib/Tangence/Compiler/Parser.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Constants" : { "file" : "lib/Tangence/Constants.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Message" : { "file" : "lib/Tangence/Message.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Meta::Argument" : { "file" : "lib/Tangence/Meta/Argument.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Meta::Class" : { "file" : "lib/Tangence/Meta/Class.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Meta::Event" : { "file" : "lib/Tangence/Meta/Event.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Meta::Field" : { "file" : "lib/Tangence/Meta/Field.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Meta::Method" : { "file" : "lib/Tangence/Meta/Method.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Meta::Property" : { "file" : "lib/Tangence/Meta/Property.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Meta::Struct" : { "file" : "lib/Tangence/Meta/Struct.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Meta::Type" : { "file" : "lib/Tangence/Meta/Type.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Object" : { "file" : "lib/Tangence/Object.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::ObjectProxy" : { "file" : "lib/Tangence/ObjectProxy.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Property" : { "file" : "lib/Tangence/Property.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Registry" : { "file" : "lib/Tangence/Registry.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Server" : { "file" : "lib/Tangence/Server.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Server::Context" : { "file" : "lib/Tangence/Server/Context.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Stream" : { "file" : "lib/Tangence/Stream.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Struct" : { "file" : "lib/Tangence/Struct.pm", - "version" : "0.25" + "version" : "0.26" }, "Tangence::Type" : { - "file" : "lib/Tangence/Type.pm" + "file" : "lib/Tangence/Type.pm", + "version" : "0.26" }, "Tangence::Type::Primitive" : { - "file" : "lib/Tangence/Type/Primitive.pm" + "file" : "lib/Tangence/Type/Primitive.pm", + "version" : "0.26" }, "Tangence::Types" : { "file" : "lib/Tangence/Types.pm", - "version" : "0.25" + "version" : "0.26" } }, "release_status" : "stable", @@ -149,6 +153,6 @@ "http://dev.perl.org/licenses/" ] }, - "version" : "0.25", - "x_serialization_backend" : "JSON::PP version 4.04" + "version" : "0.26", + "x_serialization_backend" : "JSON::PP version 4.05" } @@ -13,7 +13,7 @@ build_requires: configure_requires: Module::Build: '0.4004' dynamic_config: 1 -generated_by: 'Module::Build version 0.4224, CPAN::Meta::Converter version 2.150010' +generated_by: 'Module::Build version 0.4231, CPAN::Meta::Converter version 2.150010' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -22,87 +22,91 @@ name: Tangence provides: Tangence: file: lib/Tangence.pm - version: '0.25' + version: '0.26' Tangence::Class: file: lib/Tangence/Class.pm - version: '0.25' + version: '0.26' Tangence::Client: file: lib/Tangence/Client.pm - version: '0.25' + version: '0.26' Tangence::Compiler::Parser: file: lib/Tangence/Compiler/Parser.pm - version: '0.25' + version: '0.26' Tangence::Constants: file: lib/Tangence/Constants.pm - version: '0.25' + version: '0.26' Tangence::Message: file: lib/Tangence/Message.pm - version: '0.25' + version: '0.26' Tangence::Meta::Argument: file: lib/Tangence/Meta/Argument.pm - version: '0.25' + version: '0.26' Tangence::Meta::Class: file: lib/Tangence/Meta/Class.pm - version: '0.25' + version: '0.26' Tangence::Meta::Event: file: lib/Tangence/Meta/Event.pm - version: '0.25' + version: '0.26' Tangence::Meta::Field: file: lib/Tangence/Meta/Field.pm - version: '0.25' + version: '0.26' Tangence::Meta::Method: file: lib/Tangence/Meta/Method.pm - version: '0.25' + version: '0.26' Tangence::Meta::Property: file: lib/Tangence/Meta/Property.pm - version: '0.25' + version: '0.26' Tangence::Meta::Struct: file: lib/Tangence/Meta/Struct.pm - version: '0.25' + version: '0.26' Tangence::Meta::Type: file: lib/Tangence/Meta/Type.pm - version: '0.25' + version: '0.26' Tangence::Object: file: lib/Tangence/Object.pm - version: '0.25' + version: '0.26' Tangence::ObjectProxy: file: lib/Tangence/ObjectProxy.pm - version: '0.25' + version: '0.26' Tangence::Property: file: lib/Tangence/Property.pm - version: '0.25' + version: '0.26' Tangence::Registry: file: lib/Tangence/Registry.pm - version: '0.25' + version: '0.26' Tangence::Server: file: lib/Tangence/Server.pm - version: '0.25' + version: '0.26' Tangence::Server::Context: file: lib/Tangence/Server/Context.pm - version: '0.25' + version: '0.26' Tangence::Stream: file: lib/Tangence/Stream.pm - version: '0.25' + version: '0.26' Tangence::Struct: file: lib/Tangence/Struct.pm - version: '0.25' + version: '0.26' Tangence::Type: file: lib/Tangence/Type.pm + version: '0.26' Tangence::Type::Primitive: file: lib/Tangence/Type/Primitive.pm + version: '0.26' Tangence::Types: file: lib/Tangence/Types.pm - version: '0.25' + version: '0.26' requires: Encode: '0' Exporter: '5.57' - Future: '0' + Feature::Compat::Try: '0' + Future: '0.36' List::Util: '1.29' Parser::MGC: '0.04' Struct::Dumb: '0' Sub::Util: '1.40' - perl: '5.01' + Syntax::Keyword::Match: '0' + perl: '5.014' resources: license: http://dev.perl.org/licenses/ -version: '0.25' +version: '0.26' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff --git a/lib/Tangence.pm b/lib/Tangence.pm index 2e020ef..d5c3edf 100644 --- a/lib/Tangence.pm +++ b/lib/Tangence.pm @@ -3,17 +3,15 @@ # # (C) Paul Evans, 2010 -- leonerd@leonerd.org.uk -package Tangence; +package Tangence 0.26; -use strict; +use v5.14; use warnings; # This package contains no code other than a declaration of the version. # It is provided simply to keep CPAN happy: # cpan -i Tangence -our $VERSION = '0.25'; - =head1 NAME C<Tangence> - attribute-oriented server/client object remoting framework diff --git a/lib/Tangence/Class.pm b/lib/Tangence/Class.pm index 460efae..4bb1a7f 100644 --- a/lib/Tangence/Class.pm +++ b/lib/Tangence/Class.pm @@ -3,9 +3,9 @@ # # (C) Paul Evans, 2010-2020 -- leonerd@leonerd.org.uk -package Tangence::Class; +package Tangence::Class 0.26; -use strict; +use v5.14; use warnings; use base qw( Tangence::Meta::Class ); @@ -21,8 +21,6 @@ use Carp; use Sub::Util 1.40 qw( set_subname ); -our $VERSION = '0.25'; - our %metas; # cache one per class, keyed by _Tangence_ class name sub new diff --git a/lib/Tangence/Client.pm b/lib/Tangence/Client.pm index fb1483e..b74d93f 100644 --- a/lib/Tangence/Client.pm +++ b/lib/Tangence/Client.pm @@ -3,22 +3,20 @@ # # (C) Paul Evans, 2010-2020 -- leonerd@leonerd.org.uk -package Tangence::Client; +package Tangence::Client 0.26; -use strict; +use v5.14; use warnings; use base qw( Tangence::Stream ); -our $VERSION = '0.25'; - use Carp; use Tangence::Constants; use Tangence::Types; use Tangence::ObjectProxy; -use Future; +use Future 0.36; # ->retain use List::Util qw( max ); @@ -32,37 +30,37 @@ C<Tangence::Client> - mixin class for building a C<Tangence> client This class is a mixin, it cannot be directly constructed - package Example::Client; - use base qw( Base::Client Tangence::Client ); + package Example::Client; + use base qw( Base::Client Tangence::Client ); - sub connect - { - my $self = shift; - $self->SUPER::connect( @_ ); + sub connect + { + my $self = shift; + $self->SUPER::connect( @_ ); - $self->tangence_connected; + $self->tangence_connected; - wait_for { defined $self->rootobj }; - } + wait_for { defined $self->rootobj }; + } - sub tangence_write - { - my $self = shift; - $self->write( $_[0] ); - } + sub tangence_write + { + my $self = shift; + $self->write( $_[0] ); + } - sub on_read - { - my $self = shift; - $self->tangence_readfrom( $_[0] ); - } + sub on_read + { + my $self = shift; + $self->tangence_readfrom( $_[0] ); + } - package main; + package main; - my $client = Example::Client->new; - $client->connect( "server.location.here" ); + my $client = Example::Client->new; + $client->connect( "server.location.here" ); - my $rootobj = $client->rootobj; + my $rootobj = $client->rootobj; =head1 DESCRIPTION @@ -185,19 +183,19 @@ to be disabled. Optional callback to be invoked once the root object has been returned. It will be passed a L<Tangence::ObjectProxy> to the root object. - $on_root->( $rootobj ) + $on_root->( $rootobj ) =item on_registry => CODE Optional callback to be invoked once the registry has been returned. It will be passed a L<Tangence::ObjectProxy> to the registry. - $on_registry->( $registry ) + $on_registry->( $registry ) Note that in the case that the server does not permit access to the registry or an error occurs while requesting it, this is invoked with an empty list. - $on_registry->() + $on_registry->() =item version_minor_min => INT diff --git a/lib/Tangence/Compiler/Parser.pm b/lib/Tangence/Compiler/Parser.pm index e4ce39a..8ba42dd 100644 --- a/lib/Tangence/Compiler/Parser.pm +++ b/lib/Tangence/Compiler/Parser.pm @@ -3,16 +3,13 @@ # # (C) Paul Evans, 2011-2017 -- leonerd@leonerd.org.uk -package Tangence::Compiler::Parser; +package Tangence::Compiler::Parser 0.26; -use strict; +use v5.14; use warnings; use base qw( Parser::MGC ); -use feature qw( switch ); # we like given/when -no if $] >= 5.017011, warnings => 'experimental::smartmatch'; - -our $VERSION = '0.25'; +use Syntax::Keyword::Match; use File::Basename qw( dirname ); @@ -44,16 +41,16 @@ and C<class> and C<struct> definitions. An C<include> directive imports the definitions from another file, named relative to the current file. - include "filename.tan" + include "filename.tan" =head2 class A C<class> definition defines the set of methods, events and properties defined by a named class. - class N { - ... - } + class N { + ... + } The contents of the class block will be a list of C<method>, C<event>, C<prop> and C<isa> declarations. @@ -63,9 +60,9 @@ and C<isa> declarations. A C<struct> definition defines the list of fields contained within a named structure type. - struct N { - ... - } + struct N { + ... + } The contents of the struct block will be a list of C<field> declarations. @@ -78,8 +75,8 @@ sub parse local $self->{package} = \my %package; while( !$self->at_eos ) { - given( $self->token_kw(qw( class struct include )) ) { - when( 'class' ) { + match( $self->token_kw(qw( class struct include )) : eq ) { + case( 'class' ) { my $classname = $self->token_ident; exists $package{$classname} and @@ -90,7 +87,7 @@ sub parse $self->scope_of( '{', sub { $self->parse_classblock( $class ) }, '}' ), } - when( 'struct' ) { + case( 'struct' ) { my $structname = $self->token_ident; exists $package{$structname} and @@ -101,7 +98,7 @@ sub parse $self->scope_of( '{', sub { $self->parse_structblock( $struct ) }, '}' ), } - when( 'include' ) { + case( 'include' ) { my $filename = dirname($self->{filename}) . "/" . $self->token_string; my $subparser = (ref $self)->new; @@ -128,14 +125,14 @@ sub parse A C<method> declaration defines one method in the class, giving its name (N) and types of its arguments and and return (T). - method N(T, T, ...) -> T; + method N(T, T, ...) -> T; =head2 event An C<event> declaration defines one event raised by the class, giving its name (N) and types of its arguments (T). - event N(T, T, ...); + event N(T, T, ...); =head2 prop @@ -143,17 +140,17 @@ A C<prop> declaration defines one property supported by the class, giving its name (N), dimension (D) and type (T). It may be declared as a C<smashed> property. - [smashed] prop N = D of T; + [smashed] prop N = D of T; Scalar properties may omit the C<scalar of>, by supplying just the type - [smashed] prop N = T; + [smashed] prop N = T; =head2 isa An C<isa> declaration declares a superclass of the class, by its name (C) - isa C; + isa C; =cut @@ -168,8 +165,8 @@ sub parse_classblock my @superclasses; while( !$self->at_eos ) { - given( $self->token_kw(qw( method event prop smashed isa )) ) { - when( 'method' ) { + match( $_ = $self->token_kw(qw( method event prop smashed isa )) : eq ) { + case( 'method' ) { my $methodname = $self->token_ident; exists $methods{$methodname} and @@ -192,7 +189,7 @@ sub parse_classblock ); } - when( 'event' ) { + case( 'event' ) { my $eventname = $self->token_ident; exists $events{$eventname} and @@ -207,15 +204,14 @@ sub parse_classblock ); } - my $smashed = 0; - when( 'smashed' ) { - $smashed = 1; + case( 'smashed' ), case( 'prop' ) { + my $smashed = 0; - $self->expect( 'prop' ); + if( $_ eq 'smashed' ) { + $smashed = 1; + $self->expect( 'prop' ); + } - $_ = 'prop'; continue; # goto case 'prop' - } - when( 'prop' ) { my $propname = $self->token_ident; exists $properties{$propname} and @@ -240,7 +236,7 @@ sub parse_classblock ); } - when( 'isa' ) { + case( 'isa' ) { my $supername = $self->token_ident; my $super = $self->{package}{$supername} or @@ -291,8 +287,8 @@ sub parse_structblock my %fieldnames; while( !$self->at_eos ) { - given( $self->token_kw(qw( field )) ) { - when( 'field' ) { + match( $self->token_kw(qw( field )) : eq ) { + case( 'field' ) { my $fieldname = $self->token_ident; exists $fieldnames{$fieldname} and @@ -321,12 +317,12 @@ sub parse_structblock The following basic type names are recognised - bool int str obj any - s8 s16 s32 s64 u8 u16 u32 u64 + bool int str obj any + s8 s16 s32 s64 u8 u16 u32 u64 Aggregate types may be formed of any type (T) by - list(T) dict(T) + list(T) dict(T) =cut diff --git a/lib/Tangence/Constants.pm b/lib/Tangence/Constants.pm index 26f65fe..3dd3a70 100644 --- a/lib/Tangence/Constants.pm +++ b/lib/Tangence/Constants.pm @@ -3,13 +3,11 @@ # # (C) Paul Evans, 2010-2016 -- leonerd@leonerd.org.uk -package Tangence::Constants; +package Tangence::Constants 0.26; -use strict; +use v5.14; use warnings; -our $VERSION = '0.25'; - use Exporter 'import'; our @EXPORT = qw( MSG_CALL diff --git a/lib/Tangence/Message.pm b/lib/Tangence/Message.pm index a66ed9f..0521415 100644 --- a/lib/Tangence/Message.pm +++ b/lib/Tangence/Message.pm @@ -3,18 +3,11 @@ # # (C) Paul Evans, 2010-2014 -- leonerd@leonerd.org.uk -package Tangence::Message; +package Tangence::Message 0.26; -use strict; +use v5.14; use warnings; -# Currently depends on atleast Perl 5.10.0 to provide the > format modifier -# for pack, to specify big-endian integers. If this code can be modified, this -# restriction could be listed. -use 5.010; # pack endian formats - -our $VERSION = '0.25'; - use Carp; use Tangence::Constants; diff --git a/lib/Tangence/Meta/Argument.pm b/lib/Tangence/Meta/Argument.pm index 2d02af4..5c35dc8 100644 --- a/lib/Tangence/Meta/Argument.pm +++ b/lib/Tangence/Meta/Argument.pm @@ -3,13 +3,11 @@ # # (C) Paul Evans, 2011-2012 -- leonerd@leonerd.org.uk -package Tangence::Meta::Argument; +package Tangence::Meta::Argument 0.26; -use strict; +use v5.14; use warnings; -our $VERSION = '0.25'; - =head1 NAME C<Tangence::Meta::Argument> - structure representing one C<Tangence> diff --git a/lib/Tangence/Meta/Class.pm b/lib/Tangence/Meta/Class.pm index 677e5f7..485e860 100644 --- a/lib/Tangence/Meta/Class.pm +++ b/lib/Tangence/Meta/Class.pm @@ -3,15 +3,13 @@ # # (C) Paul Evans, 2011-2017 -- leonerd@leonerd.org.uk -package Tangence::Meta::Class; +package Tangence::Meta::Class 0.26; -use strict; +use v5.14; use warnings; use Carp; -our $VERSION = '0.25'; - =head1 NAME C<Tangence::Meta::Class> - structure representing one C<Tangence> class diff --git a/lib/Tangence/Meta/Event.pm b/lib/Tangence/Meta/Event.pm index 6f84c7c..8f24782 100644 --- a/lib/Tangence/Meta/Event.pm +++ b/lib/Tangence/Meta/Event.pm @@ -3,13 +3,11 @@ # # (C) Paul Evans, 2011-2017 -- leonerd@leonerd.org.uk -package Tangence::Meta::Event; +package Tangence::Meta::Event 0.26; -use strict; +use v5.14; use warnings; -our $VERSION = '0.25'; - use Scalar::Util qw( weaken ); =head1 NAME diff --git a/lib/Tangence/Meta/Field.pm b/lib/Tangence/Meta/Field.pm index 2572c45..1e00b1c 100644 --- a/lib/Tangence/Meta/Field.pm +++ b/lib/Tangence/Meta/Field.pm @@ -3,13 +3,11 @@ # # (C) Paul Evans, 2012-2017 -- leonerd@leonerd.org.uk -package Tangence::Meta::Field; +package Tangence::Meta::Field 0.26; -use strict; +use v5.14; use warnings; -our $VERSION = '0.25'; - =head1 NAME C<Tangence::Meta::Field> - structure representing one C<Tangence> structure diff --git a/lib/Tangence/Meta/Method.pm b/lib/Tangence/Meta/Method.pm index c0c13ff..a7c01da 100644 --- a/lib/Tangence/Meta/Method.pm +++ b/lib/Tangence/Meta/Method.pm @@ -3,13 +3,11 @@ # # (C) Paul Evans, 2011-2017 -- leonerd@leonerd.org.uk -package Tangence::Meta::Method; +package Tangence::Meta::Method 0.26; -use strict; +use v5.14; use warnings; -our $VERSION = '0.25'; - use Scalar::Util qw( weaken ); =head1 NAME diff --git a/lib/Tangence/Meta/Property.pm b/lib/Tangence/Meta/Property.pm index da84691..5ed1ddc 100644 --- a/lib/Tangence/Meta/Property.pm +++ b/lib/Tangence/Meta/Property.pm @@ -3,13 +3,11 @@ # # (C) Paul Evans, 2011-2017 -- leonerd@leonerd.org.uk -package Tangence::Meta::Property; +package Tangence::Meta::Property 0.26; -use strict; +use v5.14; use warnings; -our $VERSION = '0.25'; - use Tangence::Constants; use Scalar::Util qw( weaken ); diff --git a/lib/Tangence/Meta/Struct.pm b/lib/Tangence/Meta/Struct.pm index cc5e49a..ab38c7b 100644 --- a/lib/Tangence/Meta/Struct.pm +++ b/lib/Tangence/Meta/Struct.pm @@ -3,15 +3,13 @@ # # (C) Paul Evans, 2012-2017 -- leonerd@leonerd.org.uk -package Tangence::Meta::Struct; +package Tangence::Meta::Struct 0.26; -use strict; +use v5.14; use warnings; use Carp; -our $VERSION = '0.25'; - =head1 NAME C<Tangence::Meta::Struct> - structure representing one C<Tangence> structure diff --git a/lib/Tangence/Meta/Type.pm b/lib/Tangence/Meta/Type.pm index 084a4c4..ffb0a11 100644 --- a/lib/Tangence/Meta/Type.pm +++ b/lib/Tangence/Meta/Type.pm @@ -3,15 +3,13 @@ # # (C) Paul Evans, 2012-2017 -- leonerd@leonerd.org.uk -package Tangence::Meta::Type; +package Tangence::Meta::Type 0.26; -use strict; +use v5.14; use warnings; use Carp; -our $VERSION = '0.25'; - =head1 NAME C<Tangence::Meta::Type> - structure representing one C<Tangence> value type diff --git a/lib/Tangence/Object.pm b/lib/Tangence/Object.pm index 055804e..fcd8072 100644 --- a/lib/Tangence/Object.pm +++ b/lib/Tangence/Object.pm @@ -3,13 +3,11 @@ # # (C) Paul Evans, 2010-2017 -- leonerd@leonerd.org.uk -package Tangence::Object; +package Tangence::Object 0.26; -use strict; +use v5.14; use warnings; -our $VERSION = '0.25'; - use Carp; use Tangence::Constants; @@ -289,7 +287,7 @@ Subscribes an event-handling callback CODE ref to the named event. When the event is fired by C<fire_event> this callback will be invoked, being passed the object reference and the event's arguments. - $callback->( $obj, @args ) + $callback->( $obj, @args ) Returns an opaque ID value that can be used to remove this subscription by calling C<unsubscribe_event>. diff --git a/lib/Tangence/ObjectProxy.pm b/lib/Tangence/ObjectProxy.pm index 6a11d51..33a91d5 100644 --- a/lib/Tangence/ObjectProxy.pm +++ b/lib/Tangence/ObjectProxy.pm @@ -3,13 +3,11 @@ # # (C) Paul Evans, 2010-2020 -- leonerd@leonerd.org.uk -package Tangence::ObjectProxy; +package Tangence::ObjectProxy 0.26; -use strict; +use v5.14; use warnings; -our $VERSION = '0.25'; - use Carp; use Tangence::Constants; @@ -269,7 +267,7 @@ Takes the following named callbacks: Callback function to invoke whenever the event is fired - $on_fire->( @args ) + $on_fire->( @args ) The returned C<Future> it is guaranteed to be completed before any invocation of the C<on_fire> event handler. @@ -542,7 +540,7 @@ Takes the following named arguments: Optional. Callback function to invoke whenever the property value changes. - $on_updated->( $new_value ) + $on_updated->( $new_value ) If not provided, then individual handlers for individual change types must be provided. diff --git a/lib/Tangence/Property.pm b/lib/Tangence/Property.pm index fbd8a3e..83021f4 100644 --- a/lib/Tangence/Property.pm +++ b/lib/Tangence/Property.pm @@ -3,9 +3,9 @@ # # (C) Paul Evans, 2013-2016 -- leonerd@leonerd.org.uk -package Tangence::Property; +package Tangence::Property 0.26; -use strict; +use v5.14; use warnings; use base qw( Tangence::Meta::Property ); @@ -18,8 +18,6 @@ require Tangence::Type; use Struct::Dumb; struct Instance => [qw( value callbacks cursors )]; -our $VERSION = '0.25'; - sub build_accessor { my $prop = shift; diff --git a/lib/Tangence/Registry.pm b/lib/Tangence/Registry.pm index e98e388..613eeeb 100644 --- a/lib/Tangence/Registry.pm +++ b/lib/Tangence/Registry.pm @@ -3,14 +3,12 @@ # # (C) Paul Evans, 2010-2017 -- leonerd@leonerd.org.uk -package Tangence::Registry; +package Tangence::Registry 0.26; -use strict; +use v5.14; use warnings; use base qw( Tangence::Object ); -our $VERSION = '0.25'; - use Carp; use Tangence::Constants; diff --git a/lib/Tangence/Server.pm b/lib/Tangence/Server.pm index f98556a..19e763a 100644 --- a/lib/Tangence/Server.pm +++ b/lib/Tangence/Server.pm @@ -3,19 +3,18 @@ # # (C) Paul Evans, 2011-2020 -- leonerd@leonerd.org.uk -package Tangence::Server; +package Tangence::Server 0.26; -use strict; +use v5.14; use warnings; use base qw( Tangence::Stream ); -our $VERSION = '0.25'; - use Carp; use Scalar::Util qw( weaken ); use Sub::Util 1.40 qw( set_subname ); +use Feature::Compat::Try; use Tangence::Constants; use Tangence::Types; @@ -35,34 +34,34 @@ C<Tangence::Server> - mixin class for building a C<Tangence> server This class is a mixin, it cannot be directly constructed - package Example::Server; - use base qw( Base::Server Tangence::Server ); + package Example::Server; + use base qw( Base::Server Tangence::Server ); - sub new - { - my $class = shift; - my %args = @_; + sub new + { + my $class = shift; + my %args = @_; - my $registry = delete $args{registry}; + my $registry = delete $args{registry}; - my $self = $class->SUPER::new( %args ); + my $self = $class->SUPER::new( %args ); - $self->registry( $registry ); + $self->registry( $registry ); - return $self; - } + return $self; + } - sub tangence_write - { - my $self = shift; - $self->write( $_[0] ); - } + sub tangence_write + { + my $self = shift; + $self->write( $_[0] ); + } - sub on_read - { - my $self = shift; - $self->tangence_readfrom( $_[0] ); - } + sub on_read + { + my $self = shift; + $self->tangence_readfrom( $_[0] ); + } =head1 DESCRIPTION @@ -161,14 +160,17 @@ sub handle_request_CALL my $ctx = Tangence::Server::Context->new( $self, $token ); - my $response = eval { + my $response; + try { my $objid = $message->unpack_int(); my $object = $self->get_by_id( $objid ); - $object->handle_request_CALL( $ctx, $message ) - }; - $@ and return $ctx->responderr( $@ ); + $response = $object->handle_request_CALL( $ctx, $message ); + } + catch ( $e ) { + return $ctx->responderr( $e ); + } $ctx->respond( $response ); } @@ -180,7 +182,8 @@ sub handle_request_SUBSCRIBE my $ctx = Tangence::Server::Context->new( $self, $token ); - my $response = eval { + my $response; + try { my $objid = $message->unpack_int(); my $event = $message->unpack_str(); @@ -203,9 +206,11 @@ sub handle_request_SUBSCRIBE push @{ $self->subscriptions }, [ $object, $event, $id ]; - Tangence::Message->new( $self, MSG_SUBSCRIBED ) - }; - $@ and return $ctx->responderr( $@ ); + $response = Tangence::Message->new( $self, MSG_SUBSCRIBED ) + } + catch ( $e ) { + return $ctx->responderr( $e ); + } $ctx->respond( $response ); } @@ -217,7 +222,8 @@ sub handle_request_UNSUBSCRIBE my $ctx = Tangence::Server::Context->new( $self, $token ); - my $response = eval { + my $response; + try { my $objid = $message->unpack_int(); my $event = $message->unpack_str(); @@ -235,9 +241,11 @@ sub handle_request_UNSUBSCRIBE $object->unsubscribe_event( $event, $id ); - Tangence::Message->new( $self, MSG_OK ) - }; - $@ and return $ctx->responderr( $@ ); + $response = Tangence::Message->new( $self, MSG_OK ) + } + catch ( $e ) { + return $ctx->responderr( $e ); + } $ctx->respond( $response ); } @@ -249,14 +257,17 @@ sub handle_request_GETPROP my $ctx = Tangence::Server::Context->new( $self, $token ); - my $response = eval { + my $response; + try { my $objid = $message->unpack_int(); my $object = $self->get_by_id( $objid ); - $object->handle_request_GETPROP( $ctx, $message ) - }; - $@ and return $ctx->responderr( $@ ); + $response = $object->handle_request_GETPROP( $ctx, $message ) + } + catch ( $e ) { + return $ctx->responderr( $e ); + } $ctx->respond( $response ); } @@ -268,14 +279,17 @@ sub handle_request_GETPROPELEM my $ctx = Tangence::Server::Context->new( $self, $token ); - my $response = eval { + my $response; + try { my $objid = $message->unpack_int(); my $object = $self->get_by_id( $objid ); - $object->handle_request_GETPROPELEM( $ctx, $message ) - }; - $@ and return $ctx->responderr( $@ ); + $response = $object->handle_request_GETPROPELEM( $ctx, $message ) + } + catch ( $e ) { + return $ctx->responderr( $e ); + } $ctx->respond( $response ); } @@ -287,14 +301,17 @@ sub handle_request_SETPROP my $ctx = Tangence::Server::Context->new( $self, $token ); - my $response = eval { + my $response; + try { my $objid = $message->unpack_int(); my $object = $self->get_by_id( $objid ); - $object->handle_request_SETPROP( $ctx, $message ) - }; - $@ and return $ctx->responderr( $@ ); + $response = $object->handle_request_SETPROP( $ctx, $message ) + } + catch ( $e ) { + return $ctx->responderr( $e ); + } $ctx->respond( $response ); } @@ -310,7 +327,8 @@ sub _handle_request_WATCHany my ( $want_initial, $object, $prop ); - my $response = eval { + my $response; + try { my $objid = $message->unpack_int(); $prop = $message->unpack_str(); @@ -324,7 +342,7 @@ sub _handle_request_WATCHany if( $message->code == MSG_WATCH ) { $want_initial = $message->unpack_bool(); - Tangence::Message->new( $self, MSG_WATCHING ) + $response = Tangence::Message->new( $self, MSG_WATCHING ) } elsif( $message->code == MSG_WATCH_CUSR ) { my $from = $message->unpack_int(); @@ -334,13 +352,15 @@ sub _handle_request_WATCHany my $id = $self->message_state->{next_cursorid}++; $self->peer_hascursor->{$id} = CursorObject( $cursor, $object ); - Tangence::Message->new( $self, MSG_WATCHING_CUSR ) + $response = Tangence::Message->new( $self, MSG_WATCHING_CUSR ) ->pack_int( $id ) ->pack_int( 0 ) # first index ->pack_int( $#{ $object->${\"get_prop_$prop"} } ) # last index } - }; - $@ and return $ctx->responderr( $@ ); + } + catch ( $e ) { + return $ctx->responderr( $e ); + } $ctx->respond( $response ); @@ -355,15 +375,17 @@ sub _send_initial my $m = "get_prop_$prop"; return unless( $object->can( $m ) ); - eval { + try { my $value = $object->$m(); my $message = $object->generate_message_UPDATE( $self, $prop, CHANGE_SET, $value ); $self->request( request => $message, on_response => sub { "IGNORE" }, ); - }; - warn "$@ during initial property fetch" if $@; + } + catch ( $e ) { + warn "$e during initial property fetch"; + } } sub handle_request_UNWATCH @@ -373,7 +395,8 @@ sub handle_request_UNWATCH my $ctx = Tangence::Server::Context->new( $self, $token ); - my $response = eval { + my $response; + try { my $objid = $message->unpack_int(); my $prop = $message->unpack_str(); @@ -391,9 +414,11 @@ sub handle_request_UNWATCH $object->unwatch_property( $prop, $id ); - Tangence::Message->new( $self, MSG_OK ); - }; - $@ and return $ctx->responderr( $@ ); + $response = Tangence::Message->new( $self, MSG_OK ); + } + catch ( $e ) { + return $ctx->responderr( $e ); + } $ctx->respond( $response ); } diff --git a/lib/Tangence/Server/Context.pm b/lib/Tangence/Server/Context.pm index c4a6f7c..b3e674d 100644 --- a/lib/Tangence/Server/Context.pm +++ b/lib/Tangence/Server/Context.pm @@ -3,13 +3,11 @@ # # (C) Paul Evans, 2010-2011 -- leonerd@leonerd.org.uk -package Tangence::Server::Context; +package Tangence::Server::Context 0.26; -use strict; +use v5.14; use warnings; -our $VERSION = '0.25'; - use Carp; use Tangence::Constants; diff --git a/lib/Tangence/Stream.pm b/lib/Tangence/Stream.pm index 2f49590..a27d623 100644 --- a/lib/Tangence/Stream.pm +++ b/lib/Tangence/Stream.pm @@ -3,13 +3,10 @@ # # (C) Paul Evans, 2011-2020 -- leonerd@leonerd.org.uk -package Tangence::Stream; +package Tangence::Stream 0.26; -use strict; +use v5.14; use warnings; -use 5.010; # // - -our $VERSION = '0.25'; use Carp; @@ -240,7 +237,7 @@ The message body CODE reference to the callback to be invoked when a response to the message is received. It will be passed the response message: - $on_response->( $message ) + $on_response->( $message ) =back diff --git a/lib/Tangence/Struct.pm b/lib/Tangence/Struct.pm index 49d62b8..5573e63 100644 --- a/lib/Tangence/Struct.pm +++ b/lib/Tangence/Struct.pm @@ -1,11 +1,14 @@ -package Tangence::Struct; +# You may distribute under the terms of either the GNU General Public License +# or the Artistic License (the same terms as Perl itself) +# +# (C) Paul Evans, 2012-2014 -- leonerd@leonerd.org.uk -use strict; +package Tangence::Struct 0.26; + +use v5.14; use warnings; use base qw( Tangence::Meta::Struct ); -our $VERSION = '0.25'; - use Carp; use Tangence::Type; diff --git a/lib/Tangence/Type.pm b/lib/Tangence/Type.pm index efc3444..df69699 100644 --- a/lib/Tangence/Type.pm +++ b/lib/Tangence/Type.pm @@ -3,9 +3,9 @@ # # (C) Paul Evans, 2013-2017 -- leonerd@leonerd.org.uk -package Tangence::Type; +package Tangence::Type 0.26; -use strict; +use v5.14; use warnings; use base qw( Tangence::Meta::Type ); diff --git a/lib/Tangence/Type/Primitive.pm b/lib/Tangence/Type/Primitive.pm index bab1d37..2c8311a 100644 --- a/lib/Tangence/Type/Primitive.pm +++ b/lib/Tangence/Type/Primitive.pm @@ -3,9 +3,9 @@ # # (C) Paul Evans, 2013-2016 -- leonerd@leonerd.org.uk -package Tangence::Type::Primitive; +package Tangence::Type::Primitive 0.26; -use strict; +use v5.14; use warnings; use base qw( Tangence::Type ); @@ -34,8 +34,8 @@ sub unpack_value my ( $type, $num ) = $message->_unpack_leader(); $type == DATA_NUMBER or croak "Expected to unpack a number(bool) but did not find one"; - $num == DATANUM_BOOLFALSE and return 0; - $num == DATANUM_BOOLTRUE and return 1; + $num == DATANUM_BOOLFALSE and return !!0; + $num == DATANUM_BOOLTRUE and return !!1; croak "Expected to find a DATANUM_BOOL subtype but got $num"; } @@ -459,6 +459,8 @@ use Carp; use Scalar::Util qw( blessed ); use Tangence::Constants; +use constant HAVE_ISBOOL => defined eval { Scalar::Util->import( 'isbool' ) }; + # We can't use Tangence::Types here without a dependency cycle # However, it's OK to create even TYPE_ANY right here, because the 'any' class # now exists. @@ -494,8 +496,11 @@ sub pack_value $tmp =~ m/^[[:ascii:]]+$/ and ( $value ^ $value ) eq "0" }; + if( HAVE_ISBOOL && Scalar::Util::isbool($value) ) { + TYPE_BOOL->pack_value( $message, $value ); + } # test for integers, but exclude NaN - if( int($value) eq $value and $value == $value ) { + elsif( int($value) eq $value and $value == $value ) { TYPE_INT->pack_value( $message, $value ); } elsif( $message->stream->_ver_can_num_float and $is_numeric ) { diff --git a/lib/Tangence/Types.pm b/lib/Tangence/Types.pm index ec4ba42..251f896 100644 --- a/lib/Tangence/Types.pm +++ b/lib/Tangence/Types.pm @@ -3,13 +3,11 @@ # # (C) Paul Evans, 2014 -- leonerd@leonerd.org.uk -package Tangence::Types; +package Tangence::Types 0.26; -use strict; +use v5.14; use warnings; -our $VERSION = '0.25'; - use Exporter 'import'; our @EXPORT = qw( TYPE_BOOL @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; diff --git a/t/01compiler-parser.t b/t/01compiler-parser.t index 621d039..5b21a15 100644 --- a/t/01compiler-parser.t +++ b/t/01compiler-parser.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; diff --git a/t/02registry.t b/t/02registry.t index 06b5481..bee7ba4 100644 --- a/t/02registry.t +++ b/t/02registry.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; diff --git a/t/03properties.t b/t/03properties.t index 2690647..bc7b124 100644 --- a/t/03properties.t +++ b/t/03properties.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; diff --git a/t/10message.t b/t/10message.t index 02a2e18..bfb4349 100644 --- a/t/10message.t +++ b/t/10message.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; @@ -16,11 +16,14 @@ sub _make_type { Tangence::Type->new_from_sig( shift ) } use lib "."; use t::Colourable; +use Scalar::Util (); +use constant HAVE_ISBOOL => defined eval { Scalar::Util->import( 'isbool' ) }; + my $VERSION_MINOR = Tangence::Constants->VERSION_MINOR; +package TestStream { # We need a testing stream that declares a version - package TestStream; use base qw( Tangence::Stream ); sub minor_version { $VERSION_MINOR } @@ -92,12 +95,12 @@ $ball->id == 1 or die "Expected ball->id to be 1"; test_specific "bool f", type => "bool", - data => 0, + data => !!0, stream => "\x00"; test_specific "bool t", type => "bool", - data => 1, + data => !!1, stream => "\x01"; # So many parts of code would provide undef == false, so we will serialise @@ -106,7 +109,7 @@ test_specific "bool undef", type => "bool", data => undef, stream => "\x00", - retdata => 0; + retdata => !!0; test_specific_dies "bool from str", type => "bool", @@ -244,12 +247,12 @@ sub test_typed_dies test_typed "bool f", sig => "bool", - data => 0, + data => !!0, stream => "\x00"; test_typed "bool t", sig => "bool", - data => 1, + data => !!1, stream => "\x01"; test_typed_dies "bool from str", @@ -493,6 +496,11 @@ test_typed "any (undef)", data => undef, stream => "\x80"; +test_typed "any (bool)", + sig => "any", + data => !!0, + stream => "\x00" if HAVE_ISBOOL; + test_typed "any (int)", sig => "any", data => 0x1234, diff --git a/t/11stream.t b/t/11stream.t index 30b074a..c21f114 100644 --- a/t/11stream.t +++ b/t/11stream.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; @@ -10,6 +10,41 @@ use Tangence::Constants; my @calls; my $written = ""; + +package Testing::Stream +{ + use base qw( Tangence::Stream ); + + use Future; + + sub new + { + return bless {}, shift; + } + + sub new_future + { + return Future->new; + } + + sub tangence_write + { + my $self = shift; + $written .= $_[0]; + } + + sub handle_request_EVENT + { + my $self = shift; + my ( $token, $message ) = @_; + + push @calls, [ $self, $token, $message ]; + return 1; + } + + sub minor_version { shift->VERSION_MINOR } +} + my $stream = Testing::Stream->new(); ok( defined $stream, 'defined $stream' ); @@ -121,39 +156,3 @@ isa_ok( $stream, "Tangence::Stream", '$stream isa Tangence::Stream' ); } done_testing; - -package Testing::Stream; - -use strict; -use base qw( Tangence::Stream ); - -use Future; - -sub new -{ - return bless {}, shift; -} - -sub new_future -{ - return Future->new; -} - -sub tangence_write -{ - my $self = shift; - $written .= $_[0]; -} - -sub handle_request_EVENT -{ - my $self = shift; - my ( $token, $message ) = @_; - - push @calls, [ $self, $token, $message ]; - return 1; -} - -sub minor_version { shift->VERSION_MINOR } - -1; diff --git a/t/20server.t b/t/20server.t index 00d414c..5898ec5 100644 --- a/t/20server.t +++ b/t/20server.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; @@ -29,6 +29,38 @@ my $obj = $registry->construct( is_oneref( $obj, '$obj has refcount 1 initially' ); +package TestServer +{ + use base qw( Tangence::Server ); + + sub new + { + return bless { written => "" }, shift; + } + + sub tangence_write + { + my $self = shift; + $self->{written} .= $_[0]; + } + + sub send_message + { + my $self = shift; + my ( $message ) = @_; + $self->tangence_readfrom( $message ); + length($message) == 0 or die "Server failed to read the whole message"; + } + + sub recv_message + { + my $self = shift; + my $message = $self->{written}; + $self->{written} = ""; + return $message; + } +} + my $server = TestServer->new(); $server->registry( $registry ); @@ -165,35 +197,3 @@ is_oneref( $obj, '$obj has refcount 1 before shutdown' ); is_oneref( $registry, '$registry has refcount 1 before shutdown' ); done_testing; - -package TestServer; - -use strict; -use base qw( Tangence::Server ); - -sub new -{ - return bless { written => "" }, shift; -} - -sub tangence_write -{ - my $self = shift; - $self->{written} .= $_[0]; -} - -sub send_message -{ - my $self = shift; - my ( $message ) = @_; - $self->tangence_readfrom( $message ); - length($message) == 0 or die "Server failed to read the whole message"; -} - -sub recv_message -{ - my $self = shift; - my $message = $self->{written}; - $self->{written} = ""; - return $message; -} diff --git a/t/21client.t b/t/21client.t index bdd92b6..d70b5e4 100644 --- a/t/21client.t +++ b/t/21client.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; @@ -17,6 +17,42 @@ use t::Conversation; $Tangence::Message::SORT_HASH_KEYS = 1; +package TestClient +{ + use base qw( Tangence::Client ); + + sub new + { + my $self = bless { written => "" }, shift; + $self->identity( "testscript" ); + $self->on_error( sub { die "Test failed early - $_[0]" } ); + $self->tangence_connected(); + return $self; + } + + sub tangence_write + { + my $self = shift; + $self->{written} .= $_[0]; + } + + sub send_message + { + my $self = shift; + my ( $message ) = @_; + $self->tangence_readfrom( $message ); + length($message) == 0 or die "Client failed to read the whole message"; + } + + sub recv_message + { + my $self = shift; + my $message = $self->{written}; + $self->{written} = ""; + return $message; + } +} + my $client = TestClient->new(); # Initialisation @@ -309,39 +345,3 @@ undef $client; is_oneref( $objproxy, '$objproxy has refcount 1 before shutdown' ); done_testing; - -package TestClient; - -use strict; -use base qw( Tangence::Client ); - -sub new -{ - my $self = bless { written => "" }, shift; - $self->identity( "testscript" ); - $self->on_error( sub { die "Test failed early - $_[0]" } ); - $self->tangence_connected(); - return $self; -} - -sub tangence_write -{ - my $self = shift; - $self->{written} .= $_[0]; -} - -sub send_message -{ - my $self = shift; - my ( $message ) = @_; - $self->tangence_readfrom( $message ); - length($message) == 0 or die "Client failed to read the whole message"; -} - -sub recv_message -{ - my $self = shift; - my $message = $self->{written}; - $self->{written} = ""; - return $message; -} diff --git a/t/22xlink.t b/t/22xlink.t index 930201f..7bdc208 100644 --- a/t/22xlink.t +++ b/t/22xlink.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; diff --git a/t/23close.t b/t/23close.t index ec39ebb..206f61b 100644 --- a/t/23close.t +++ b/t/23close.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; diff --git a/t/30props-cbs.t b/t/30props-cbs.t index e9f8757..b1263bd 100644 --- a/t/30props-cbs.t +++ b/t/30props-cbs.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; diff --git a/t/31props-cache.t b/t/31props-cache.t index 4c31e1b..e85f7fe 100644 --- a/t/31props-cache.t +++ b/t/31props-cache.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; diff --git a/t/32props-cursor.t b/t/32props-cursor.t index 7a006fb..19b03de 100644 --- a/t/32props-cursor.t +++ b/t/32props-cursor.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; diff --git a/t/33props-set.t b/t/33props-set.t index c9e32a9..dd9f8ca 100644 --- a/t/33props-set.t +++ b/t/33props-set.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; diff --git a/t/40server-security.t b/t/40server-security.t index 7d338bd..ad318df 100644 --- a/t/40server-security.t +++ b/t/40server-security.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; diff --git a/t/90close-leak.t b/t/90close-leak.t index 8e0eb12..3395164 100644 --- a/t/90close-leak.t +++ b/t/90close-leak.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; @@ -1,6 +1,6 @@ #!/usr/bin/perl -use strict; +use v5.14; use warnings; use Test::More; @@ -1,6 +1,6 @@ package t::Ball; -use strict; +use v5.14; use base qw( Tangence::Object t::Colourable ); diff --git a/t/Colourable.pm b/t/Colourable.pm index 3c90b5c..662e7b8 100644 --- a/t/Colourable.pm +++ b/t/Colourable.pm @@ -1,6 +1,6 @@ package t::Colourable; -use strict; +use v5.14; use Tangence::Constants; diff --git a/t/Conversation.pm b/t/Conversation.pm index 97ca600..899a901 100644 --- a/t/Conversation.pm +++ b/t/Conversation.pm @@ -1,6 +1,6 @@ package t::Conversation; -use strict; +use v5.14; use warnings; use Exporter 'import'; diff --git a/t/TestObj.pm b/t/TestObj.pm index 0e589b4..94a27b1 100644 --- a/t/TestObj.pm +++ b/t/TestObj.pm @@ -1,6 +1,6 @@ package t::TestObj; -use strict; +use v5.14; use base qw( Tangence::Object ); diff --git a/t/TestServerClient.pm b/t/TestServerClient.pm index 5f9521e..8b637c1 100644 --- a/t/TestServerClient.pm +++ b/t/TestServerClient.pm @@ -1,6 +1,6 @@ package t::TestServerClient; -use strict; +use v5.14; use warnings; use Exporter 'import'; |