diff --git a/src/core/Encoding/Builtin.pm6 b/src/core/Encoding/Builtin.pm6 index 42b22b4b1de..9ba026e3192 100644 --- a/src/core/Encoding/Builtin.pm6 +++ b/src/core/Encoding/Builtin.pm6 @@ -16,9 +16,10 @@ class Encoding::Builtin does Encoding { method alternative-names() { $!alternative-names } - method decoder(*%options --> Encoding::Decoder) { - %options = self!rep-char(%options) if %options:exists && %options.DEFINITE && %options !=== False; - Encoding::Decoder::Builtin.new($!name, |%options) + method decoder(:$replacement, :$translate-nl, :$strict --> Encoding::Decoder) { + my $decoder = $replacement.DEFINITE && $replacement !=== False + ?? Encoding::Decoder::Builtin.new($!name, :$strict, :$translate-nl, :replacement(self!rep-char($replacement))) + !! Encoding::Decoder::Builtin.new($!name, :$strict, :$translate-nl); } my int $is-win = Rakudo::Internals.IS-WIN; diff --git a/src/core/Encoding/Decoder/Builtin.pm6 b/src/core/Encoding/Decoder/Builtin.pm6 index 870e0cbbb60..8de90e2a1bd 100644 --- a/src/core/Encoding/Decoder/Builtin.pm6 +++ b/src/core/Encoding/Decoder/Builtin.pm6 @@ -1,9 +1,9 @@ my class Encoding::Decoder::Builtin is repr('Decoder') does Encoding::Decoder { - method new(str $encoding, :$translate-nl, Str :$replacement, Bool:D :$strict = False) { + method new(str $encoding, :$translate-nl, :$replacement, :$strict) { nqp::decoderconfigure(nqp::create(self), $encoding, nqp::hash( 'translate_newlines', $translate-nl ?? 1 !! 0, - 'replacement', $replacement.defined ?? nqp::unbox_s($replacement) !! nqp::null(), + 'replacement', $replacement.defined ?? nqp::unbox_s($replacement) !! nqp::null_s(), 'config', $strict ?? 0 !! 1 # Config set to 0 uses the decoder's new default, which is strict # decoding. Setting to 1 uses the 6.c specced functionality where