@@ -172,7 +172,7 @@ let collectGhostDependencies (fileIndex: int) (trie: TrieNode) (queryTrie: Query
172172
173173 visit trie path
174174
175- let children = indexesUnderNode node
175+ let children = indexesUnderNode node |> Set.filter ( fun idx -> idx < fileIndex )
176176 let intersection = Set.intersect result.FoundDependencies children
177177
178178 if Set.isEmpty intersection then
@@ -213,15 +213,16 @@ let mkGraph (files: FileWithAST array) =
213213 time
214214 " filesWithAutoOpen"
215215 ( Array.choose ( fun f ->
216- if AutoOpenDetection.hasAutoOpenAttributeInFile f.AST then
216+ if AlwaysLinkDetection.doesFileHasAutoOpenBehavior f.AST then
217217 Some f.Idx
218218 else
219219 None))
220220 trieInput
221221
222222 time
223223 " link deps"
224- Array.Parallel.map
224+ // Array.Parallel.map
225+ Array.map
225226 ( fun ( file : FileWithAST ) ->
226227 let fileContent = fileContents.[ file.Idx]
227228 let knownFiles = getFileNameBefore files file.Idx
@@ -286,33 +287,33 @@ let ``Fantomas.Core for realzies`` () =
286287 @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\obj\Debug\netstandard2.0\.NETStandard,Version=v2.0.AssemblyAttributes.fs"
287288 @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\obj\Debug\netstandard2.0\Fantomas.Core.AssemblyInfo.fs"
288289 @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\AssemblyInfo.fs"
289- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\ISourceTextExtensions.fs"
290- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\RangeHelpers.fs"
291- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\AstExtensions.fsi"
292- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\AstExtensions.fs"
293- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\TriviaTypes.fs"
294- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Utils.fs"
295- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\SourceParser.fs"
296- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\AstTransformer.fsi"
297- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\AstTransformer.fs"
298- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Version.fs"
299- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Queue.fs"
300- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\FormatConfig.fs"
301- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Defines.fsi"
302- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Defines.fs"
303- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Trivia.fsi"
304- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Trivia.fs"
305- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\SourceTransformer.fs"
306- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Context.fs"
307- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\CodePrinter.fsi"
308- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\CodePrinter.fs"
309- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\CodeFormatterImpl.fsi"
310- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\CodeFormatterImpl.fs"
311- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Validation.fs"
312- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Selection.fsi"
313- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Selection.fs"
314- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\CodeFormatter.fsi"
315- @" C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\CodeFormatter.fs"
290+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\ISourceTextExtensions.fs"
291+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\RangeHelpers.fs"
292+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\AstExtensions.fsi"
293+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\AstExtensions.fs"
294+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\TriviaTypes.fs"
295+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Utils.fs"
296+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\SourceParser.fs"
297+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\AstTransformer.fsi"
298+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\AstTransformer.fs"
299+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Version.fs"
300+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Queue.fs"
301+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\FormatConfig.fs"
302+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Defines.fsi"
303+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Defines.fs"
304+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Trivia.fsi"
305+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Trivia.fs"
306+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\SourceTransformer.fs"
307+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Context.fs"
308+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\CodePrinter.fsi"
309+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\CodePrinter.fs"
310+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\CodeFormatterImpl.fsi"
311+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\CodeFormatterImpl.fs"
312+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Validation.fs"
313+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Selection.fsi"
314+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\Selection.fs"
315+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\CodeFormatter.fsi"
316+ // @"C:\Users\nojaf\Projects\main-fantomas\src\Fantomas.Core\CodeFormatter.fs"
316317 |]
317318 |> mkGraphAndReport
318319
@@ -917,6 +918,51 @@ open X
917918"""
918919 ( set [| 0 ; 1 |])
919920 ]
921+ // The nested module in this case adds content to the namespace
922+ // Similar if a namespace had a type.
923+ scenario
924+ " Nested module with auto open attribute"
925+ [
926+ sourceFile
927+ " A.fs"
928+ """
929+ namespace Product
930+
931+ [<AutoOpen>]
932+ module X =
933+ let x: int = 0
934+ """
935+ Set.empty
936+ sourceFile
937+ " B.fs"
938+ """
939+ module Product.Feature
940+
941+ let a b = x + b
942+ """
943+ ( set [| 0 |])
944+ ]
945+ // Similar to a top level auto open attribute, the global namespace also introduces a link to all the files that come after it.
946+ scenario
947+ " Global namespace always introduces a link"
948+ [
949+ sourceFile
950+ " A.fs"
951+ """
952+ namespace global
953+
954+ type A = { B : int }
955+ """
956+ Set.empty
957+ sourceFile
958+ " B.fs"
959+ """
960+ module Product.Feature
961+
962+ let f a = a.B
963+ """
964+ ( set [| 0 |])
965+ ]
920966 ]
921967
922968[<TestCaseSource( nameof codebases) >]
0 commit comments