types - warn on type violations


    use types;       # enable compile-time type warnings
    my MyInt $i = 0; # => warning: Wrong type Int, expected MyInt

    use types;
    my int @a[5];
    $a[0] = "";      # => warning:
                     Type of scalar assignment to @a must be int (not Str)

    use types 'strict';
    my MyInt $i = 0; # => error: Wrong type Int, expected MyInt

    no types;
    my MyInt $i = 0; # ok


This is a new lexical user-pragma since cperl 5.26 to control the type-checker. Currently it turns on types warnings, make them fatal or turns them off. Currently only implemented for assignments, not many any other ops.

Note that types in signatures are always checked, regardless of the state of the types pragma, i.e. the types warnings category.

strict mode also forbids the insertion of automatic type casts. Such as e.g. my num @i; $i[0] = 1; will cast the 1 to 1.0.

See perltypes.