Repeat groups are dropped when transcribing if non-scalar is empty
Created by: natefaubion
macro test {
rule { { $($name ($args (,) ...)) ... } } => {
$(function $name ($args (,) ...) {}) ...
}
}
test {
foo(a, b)
bar()
}
function foo(a, b) {
}
You'll notice bar
is dropped completely. This is because of patterns.hasMatch
and if (allHaveMatch) { ... }
in patterns.transcribe
. The repeater is empty (so the pattern succeeds), but hasMatch
does not consider an empty match set a success when transcribing. Since the allHaveMatch
guard only handles the success case, entire repeat groups can be dropped silently. I suppose hasMatch
should be smarter.