Fallback to Hash for Mustermann::EqualityMap produces warnings and seems incorrect
eregon opened this issue · 3 comments
Mustermann::EqualityMap falls back to Hash
if ObjectSpace::WeakMap
is not defined.
mustermann/mustermann/lib/mustermann/equality_map.rb
Lines 21 to 23 in 6610061
However, this fallback doesn't seem correct as then
mustermann/mustermann/lib/mustermann/pattern.rb
Lines 58 to 59 in 6610061
ends up calling
Hash#fetch
with both a default value argument and a block.This produces the warning:
.../gems/mustermann-1.0.2/lib/mustermann/pattern.rb:59: warning: block supersedes default value argument
And it means the second argument options
is therefore ignored.
Mustermann::EqualityMap#fetch
, used only if ObjectSpace::WeakMap
is defined, has a different signature:
I guess one easy fix is to define it like fetch(key)
and in pattern.rb call it like
@map.fetch([string, options]) { super(string, options) { options } }
See oracle/truffleruby#1375 (comment) for the original report in TruffleRuby.
@namusyaka Hello, could you take a look at this issue?
@namusyaka Thank you for taking a look, I'll make a PR.