public override QualifiedElement GetQualifiedName() { var stack = StackPool.Get(); try { foreach (var elem in AncestorsAndSelf()) { elem.AggregateIdentities(stack); } var ret = new QualifiedElement(); while (stack.Count != 0) { var(scope, category, name) = stack.Pop(); _ = new IdentityElement(ret, scope, category, name); } return(ret); } finally { Debug.Assert(stack.Count == 0); StackPool.Return(stack); } }
public override QualifiedElement GetQualifiedName() { var accum = StackPool.Get(); try { foreach (var identity in From.Identities.Take(Order).Cast <IdentityElement>().Reverse()) { identity.AggregateIdentities(accum); } var ret = new QualifiedElement(); while (accum.Count != 0) { var(scope, category, name) = accum.Pop(); _ = new IdentityElement(ret, scope, category, name); } return(ret); } finally { Debug.Assert(accum.Count == 0); StackPool.Return(accum); } }
public override QualifiedElement GetQualifiedName() { var accum = StackPool.Get(); try { AggregateIdentities(accum); var piv = Parent switch { NameSpaceElement ns => ns.Parent, _ => Parent }; if (!(piv is ImaginaryRoot)) { foreach (var element in piv.AncestorsAndSelf()) { element.AggregateIdentities(accum); } } var ret = new QualifiedElement(); while (accum.Count != 0) { var(scope, cat, nme) = accum.Pop(); _ = new IdentityElement(ret, scope, cat, nme); } return(ret); } finally { Debug.Assert(accum.Count == 0); StackPool.Return(accum); } }