public void VisitNode(JSVariable variable) { if ( (ParentNode is JSFunctionExpression) && (this.CurrentName == "FunctionSignature") ) { VisitChildren(variable); return; } if ( (variable.Identifier != Variable.Identifier) || // Don't transform if we're inside a read-through already (ParentNode is JSReadThroughReferenceExpression) || ( // If we're inside a write-through and on the LHS, don't transform (ParentNode is JSWriteThroughReferenceExpression) && (this.CurrentName == "Left") ) ) { VisitChildren(variable); return; } // If we're inside a pass-by-reference (ref x) then don't transform if ( Stack.OfType <JSPassByReferenceExpression>().Any() ) { VisitChildren(variable); return; } var replacement = new JSReadThroughReferenceExpression(variable); ParentNode.ReplaceChild(variable, replacement); VisitReplacement(replacement); }
public void VisitNode(JSVariable variable) { if ( (ParentNode is JSFunctionExpression) && (this.CurrentName == "FunctionSignature") ) { VisitChildren(variable); return; } if ( (variable.Identifier != Variable.Identifier) || // Don't transform if we're inside a read-through already (ParentNode is JSReadThroughReferenceExpression) || ( // If we're inside a write-through and on the LHS, don't transform (ParentNode is JSWriteThroughReferenceExpression) && (this.CurrentName == "Left") ) ) { VisitChildren(variable); return; } // If we're inside a pass-by-reference (ref x) then don't transform if ( Stack.OfType<JSPassByReferenceExpression>().Any() ) { VisitChildren(variable); return; } var replacement = new JSReadThroughReferenceExpression(variable); ParentNode.ReplaceChild(variable, replacement); VisitReplacement(replacement); }