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.