public override void ConsolidateNames(ref Dictionary <string, List <Node> > names) { IdentifierNode rightTerminalNode = RightNode as IdentifierNode; if (rightTerminalNode != null) { if (Optr != ProtoCore.DSASM.Operator.dot) { //replace RHS Consolidate(ref (names), ref (rightTerminalNode)); RightNode = rightTerminalNode; } } else { RightNode.ConsolidateNames(ref (names)); } //left has to be done 2nd, because in case of modifiers, we dont want to //replace the node on RHS by a node on LHS. So a modifier stack name is not unique. IdentifierNode leftTerminalNode = LeftNode as IdentifierNode; if (leftTerminalNode != null) { if (Optr != ProtoCore.DSASM.Operator.assign) { //replace LHS Consolidate(ref (names), ref (leftTerminalNode)); LeftNode = leftTerminalNode; } else { if (leftTerminalNode.Name != null) { if (names.ContainsKey(leftTerminalNode.Name)) { List <Node> candidates = names[leftTerminalNode.Name]; candidates.Add(leftTerminalNode); } else { //append LHS List <Node> candidates = new List <Node>(); candidates.Add(leftTerminalNode); names.Add(leftTerminalNode.Name, candidates); } } } } else { LeftNode.ConsolidateNames(ref (names)); } }