Community
Participate
Working Groups
Build Identifier: 20100917-0705 When selecting "Close Unrelated Projects" from the package manager, some unrelated projects are left open. Consider three projects A, B, and C where A and B both reference C, but not each other. With all three projects open, selecting "Close Unrelated Projects" on A should close B (and vice versa) but leave C open. Selecting the same option on C should close both A and B. The "Close Unrelated Projects" seems like it should be the reverse of the prompt to open all referenced projects when a single project is opened. With A, B, and C open, the "Close Unrelated Projects" option is not available (because it would have no effect?). If an unrelated open project D is added to the workspace, selecting "Close Unrelated Projects" on A will close D, but leave B open. After inspecting the source for CloseUnrelatedProjectsAction, it appears that it is computing a DisjointSet of the connected components (in this case {{D},{A,B,C}}) and closing all projects not contained in A's set. I think this should be computing the set of projects that are reachable via a directed path starting at A. Reproducible: Always Steps to Reproduce: 1. Setup a workspace with projects A, B, C, D as follows: A references C, B references C, and D is unrelated. 2. Open all projects A, B, C, D. 3. Right click project A and select "Close Unrelated Projects" and verify that only project D was closed.
Created attachment 196583 [details] An example workspace for verifying the bug Contains a workspace with A, B, C, and D projects as described in the bug details.
The action is about closing "related" projects. Not "referenced" projects. If both A and C references B but have no direct references between them, they are still related (though not directly). This behaviour has been there for years and I don't think we have to change this.