Strip unconfigured nodes from decorator-generated AST

This commit is contained in:
Jeffrey Seyfried
2016-06-16 06:44:53 +00:00
parent 83d283b67b
commit c41cf30e9d
3 changed files with 25 additions and 4 deletions

View File

@@ -839,16 +839,18 @@ fn expand_decorators(a: Annotatable,
}
});
// we'd ideally decorator_items.push_all(expand_annotatable(ann, fld)),
// but that double-mut-borrows fld
let mut items: SmallVector<Annotatable> = SmallVector::zero();
dec.expand(fld.cx,
attr.span,
&attr.node.value,
&a,
&mut |ann| items.push(ann));
decorator_items.extend(items.into_iter()
.flat_map(|ann| expand_annotatable(ann, fld).into_iter()));
for item in items {
for configured_item in item.fold_with(&mut fld.strip_unconfigured()) {
decorator_items.extend(expand_annotatable(configured_item, fld));
}
}
fld.cx.bt_pop();
}