/// <summary> /// Adds a child declaration space. /// </summary> /// <param name="child">The <see cref="LocalDeclarationSpace"/> to add.</param> public void AddChildSpace(LocalDeclarationSpace child) { if (child == null) { throw new ArgumentNullException("child"); } if (Children.Contains(child)) { throw new InvalidOperationException("the child was already added"); } Children.Add(child); child.Parent = this; }
void VisitNewDeclarationSpace(AstNode node) { var oldDeclarationSpace = currentDeclarationSpace; currentDeclarationSpace = new LocalDeclarationSpace(); if (oldDeclarationSpace != null) { oldDeclarationSpace.AddChildSpace(currentDeclarationSpace); } VisitChildren(node); nodeDeclarationSpaces.Add(node, currentDeclarationSpace); currentDeclarationSpace = oldDeclarationSpace; }