public static void AddEdge(StaticInclusion/*!*/ inclusion) { if (!DrawGraph) return; output.Write(sourceUnits[inclusion.Includer.SourceUnit]); output.Write(" -> "); if (inclusion.Includee is ScriptCompilationUnit) output.Write(sourceUnits[((ScriptCompilationUnit)inclusion.Includee).SourceUnit]); else output.Write("ReflectedUnit"); output.Write(" [label={0}{1}];", edgeId++, (inclusion.IsConditional) ? ", style=dotted" : ""); output.WriteLine(); output.Flush(); }
/// <summary> /// Minimal fixpoint algorithm. /// </summary> private void ProcessPendingInclusions() { while (pendingInclusions.Count > 0) { StaticInclusion inclusion = pendingInclusions[pendingInclusions.Count - 1]; pendingInclusions.RemoveAt(pendingInclusions.Count - 1); Debug.Assert(inclusion.Includer.State == CompilationUnit.States.Processed); Debug.Assert(inclusion.Includee.State == CompilationUnit.States.Processed); if (inclusion.Includer.MergeTables(inclusion) > 0) { foreach (StaticInclusion incoming in inclusion.Includer.Includers) { pendingInclusions.Add(incoming); } } } }
internal void EdgeAdded(StaticInclusion/*!*/ staticInclusion) { Statistics.Inclusions.AddEdge(staticInclusion); }
internal void EdgeAdded(StaticInclusion /*!*/ staticInclusion) { Statistics.Inclusions.AddEdge(staticInclusion); }