static LNode GrabContractAttrs(LNode node, ref VList <LNode> cAttrs, ContractAppliesTo kinds = ContractAppliesTo.Both) { if (node.HasAttrs) { VList <LNode> cAttrs2 = cAttrs; // because lambdas cannot access cAttrs directly var r = node.WithAttrs(attr => { if ((PropertyContractInterpretation(attr) & kinds) != 0) { cAttrs2.Add(attr); return(NoValue.Value); // remove } return(attr); }); cAttrs = cAttrs2; return(r); } return(node); }
static LNode GrabContractAttrs(LNode node, ref VList <LNode> cAttrs, ContractAppliesTo kinds = ContractAppliesTo.Both) { if (node.HasAttrs) { VList <LNode> cAttrs2 = cAttrs; var r = node.WithAttrs(attr => { if ((PropertyContractInterpretation(attr) & kinds) != 0) { cAttrs2.Add(attr); return(NoValue.Value); } return(attr); }); cAttrs = cAttrs2; return(r); } return(node); }