/// <summary> /// Lookup namespace resolution map to substitute /// partial classnames with their fully qualified names in ASTs. /// If partial class is not found in map, /// update ResolutionMap with fully resolved name from compiler. /// </summary> /// <param name="classTable"></param> /// <param name="elementResolver"></param> /// <param name="astNodes"> parent AST node </param> /// <param name="handler"></param> public static IEnumerable <Node> RewriteElementNames(ClassTable classTable, ElementResolver elementResolver, IEnumerable <Node> astNodes, SymbolConflictWarningHandler handler = null) { var elementRewriter = new ElementRewriter(classTable, handler, elementResolver); return(astNodes.OfType <AssociativeNode>().Select(astNode => astNode.Accept(elementRewriter)).Cast <Node>().ToList()); }
/// <summary> /// Lookup namespace resolution map to substitute /// partial classnames with their fully qualified names in ASTs. /// If partial class is not found in map, /// update ResolutionMap with fully resolved name from compiler. /// </summary> /// <param name="classTable"></param> /// <param name="handler"></param> /// <param name="elementResolver"></param> /// <param name="astNodes"> parent AST node </param> public static IEnumerable<Node> RewriteElementNames(ClassTable classTable, ElementResolver elementResolver, IEnumerable<Node> astNodes, SymbolConflictWarningHandler handler = null) { var elementRewriter = new ElementRewriter(classTable, handler, elementResolver); return astNodes.OfType<AssociativeNode>().Select(astNode => astNode.Accept(elementRewriter)).Cast<Node>().ToList(); }
public ElementRewriter(ClassTable classTable, SymbolConflictWarningHandler warningHandler, ElementResolver resolver = null) { this.classTable = classTable; this.symbolConflictHandler = warningHandler; this.elementResolver = resolver ?? new ElementResolver(); }