Beispiel #1
0
            public void RemoveCircular()
            {
                var reachable = new HashSet <string>();
                var roots     = new HashSet <string>()
                {
                    @"C:\dev\app\src\main.rs", @"C:\dev\app\src\foo.rs"
                };
                var imports = new ModuleImport()
                {
                    { new PathSegment("frob.rs", true), new ModuleImport() },
                };
                var frobImports = new ModuleImport()
                {
                    { new PathSegment("in1", true), new ModuleImport()
                      {
                          { new PathSegment("in2.rs", true), new ModuleImport() }
                      } }
                };
                var in2Imports = new ModuleImport()
                {
                    { new PathSegment("ext1.rs", true), new ModuleImport() },
                    { new PathSegment("ext2.rs", true), new ModuleImport() },
                    { new PathSegment(@"..\frob.rs", true), new ModuleImport() },
                    { new PathSegment(@"..\main.rs", true), new ModuleImport() },
                    { new PathSegment(@"..\foo.rs", true), new ModuleImport() },
                };
                var tracker = new ModuleTracker(@"C:\dev\app\src\main.rs");

                foreach (string path in roots)
                {
                    tracker.AddRootModule(path);
                }
                tracker.ExtractReachableAndMakeIncremental();
                var orphanSet = tracker.DeleteModule(@"C:\dev\app\src\in1\in2.rs");
            }
        private TrackedFileNode CreateTrackedNode(ProjectElement elm)
        {
            var node = new TrackedFileNode(this, elm);

            if (!ModuleTracker.IsIncremental)
            {
                ModuleTracker.AddRootModule(node.Url);
            }
            else
            {
                HashSet <string> children = ModuleTracker.AddRootModuleIncremental(node.Url);
                foreach (string child in children)
                {
                    HierarchyNode parent = this.CreateFolderNodes(Path.GetDirectoryName(child), false);
                    parent.AddChild(CreateUntrackedNode(child));
                }
            }
            return(node);
        }