diff --git a/glean/lang/haskell/tests/Main.hs b/glean/lang/haskell/tests/Main.hs index b3c92b6b7..f37f93fed 100644 --- a/glean/lang/haskell/tests/Main.hs +++ b/glean/lang/haskell/tests/Main.hs @@ -6,8 +6,12 @@ LICENSE file in the root directory of this source tree. -} +{-# LANGUAGE CPP #-} module Main ( main ) where +#if __GLASGOW_HASKELL__ != 902 +import qualified Data.Text as Text +#endif import System.Environment import qualified Glean.Indexer.Haskell as Haskell ( indexer ) @@ -18,6 +22,21 @@ main :: IO () main = do args <- getArgs withArgs (["--root", path, "--with-ghc", "ghc"] <> args) $ - testMain (driverFromIndexer Haskell.indexer) + testMain driver where path = "glean/lang/haskell/tests/code" + driver = (driverFromIndexer Haskell.indexer) { + driverOutSuffix = outSuffix + } + +outSuffix :: Maybe String +#if __GLASGOW_HASKELL__ == 902 +outSuffix = Nothing +#else +outSuffix = + Just $ + Text.unpack $ + Text.intercalate "." $ + take 2 $ + Text.splitOn "." __GLASGOW_HASKELL_FULL_VERSION__ +#endif diff --git a/glean/lang/haskell/tests/code/hsClassDecl.out.9.4 b/glean/lang/haskell/tests/code/hsClassDecl.out.9.4 new file mode 100644 index 000000000..fafae825f --- /dev/null +++ b/glean/lang/haskell/tests/code/hsClassDecl.out.9.4 @@ -0,0 +1,59 @@ +[ + "@generated", + { + "key": { + "defaults": [ + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "span": { "length": 10, "start": 535 } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + ], + "methods": [ + { + "key": { + "class_": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + ], + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsClassDecl.out.9.6 b/glean/lang/haskell/tests/code/hsClassDecl.out.9.6 new file mode 100644 index 000000000..fafae825f --- /dev/null +++ b/glean/lang/haskell/tests/code/hsClassDecl.out.9.6 @@ -0,0 +1,59 @@ +[ + "@generated", + { + "key": { + "defaults": [ + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "span": { "length": 10, "start": 535 } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + ], + "methods": [ + { + "key": { + "class_": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + ], + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsDataDecl.out.9.4 b/glean/lang/haskell/tests/code/hsDataDecl.out.9.4 new file mode 100644 index 000000000..3217f10f9 --- /dev/null +++ b/glean/lang/haskell/tests/code/hsDataDecl.out.9.4 @@ -0,0 +1,182 @@ +[ + "@generated", + { + "key": { + "constrs": [ + { + "key": { + "data_": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "fields": [ + { + "key": { + "con": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "con": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + ], + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + } + ], + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "constrs": [ + { + "key": { + "data_": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "fields": [ ], + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C1", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "data_": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "fields": [ ], + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C2", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "data_": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "fields": [ ], + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C3", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + } + ], + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsDataDecl.out.9.6 b/glean/lang/haskell/tests/code/hsDataDecl.out.9.6 new file mode 100644 index 000000000..3217f10f9 --- /dev/null +++ b/glean/lang/haskell/tests/code/hsDataDecl.out.9.6 @@ -0,0 +1,182 @@ +[ + "@generated", + { + "key": { + "constrs": [ + { + "key": { + "data_": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "fields": [ + { + "key": { + "con": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "con": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + ], + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + } + ], + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "constrs": [ + { + "key": { + "data_": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "fields": [ ], + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C1", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "data_": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "fields": [ ], + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C2", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "data_": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "fields": [ ], + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C3", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + } + ], + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsDeclarationLocation.out.9.4 b/glean/lang/haskell/tests/code/hsDeclarationLocation.out.9.4 new file mode 100644 index 000000000..804c02a50 --- /dev/null +++ b/glean/lang/haskell/tests/code/hsDeclarationLocation.out.9.4 @@ -0,0 +1,378 @@ +[ + "@generated", + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "A", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 12, "start": 403 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 53, "start": 492 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C1", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 8, "start": 428 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C2", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 4, "start": 439 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C3", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 4, "start": 446 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 27, "start": 463 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 38, "start": 452 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 33, "start": 417 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 19, "start": 382 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 424 } } + } + }, + "span": { "length": 1, "start": 424 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 459 } } + } + }, + "span": { "length": 1, "start": 459 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 508 } } + } + }, + "span": { "length": 1, "start": 508 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 15, "start": 604 } } + } + }, + "span": { "length": 15, "start": 604 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 68, "start": 620 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 2, "start": 467 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 2, "start": 479 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 14, "start": 518 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "internal": { "length": 10, "start": 535 } } + } + }, + "span": { "length": 10, "start": 535 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "internal": { "length": 12, "start": 570 } } + } + }, + "span": { "length": 12, "start": 570 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 643 } } + } + }, + "span": { "length": 1, "start": 643 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 572 } } + } + }, + "span": { "length": 1, "start": 572 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 630 } } + } + }, + "span": { "length": 1, "start": 630 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "zero", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 8, "start": 594 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "b", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 23, "start": 290 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 32, "start": 327 } + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsDeclarationLocation.out.9.6 b/glean/lang/haskell/tests/code/hsDeclarationLocation.out.9.6 new file mode 100644 index 000000000..804c02a50 --- /dev/null +++ b/glean/lang/haskell/tests/code/hsDeclarationLocation.out.9.6 @@ -0,0 +1,378 @@ +[ + "@generated", + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "A", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 12, "start": 403 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 53, "start": 492 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C1", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 8, "start": 428 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C2", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 4, "start": 439 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C3", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 4, "start": 446 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 27, "start": 463 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 38, "start": 452 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 33, "start": 417 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 19, "start": 382 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 424 } } + } + }, + "span": { "length": 1, "start": 424 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 459 } } + } + }, + "span": { "length": 1, "start": 459 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 508 } } + } + }, + "span": { "length": 1, "start": 508 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 15, "start": 604 } } + } + }, + "span": { "length": 15, "start": 604 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 68, "start": 620 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 2, "start": 467 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 2, "start": 479 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 14, "start": 518 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "internal": { "length": 10, "start": 535 } } + } + }, + "span": { "length": 10, "start": 535 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "internal": { "length": 12, "start": 570 } } + } + }, + "span": { "length": 12, "start": 570 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 643 } } + } + }, + "span": { "length": 1, "start": 643 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 572 } } + } + }, + "span": { "length": 1, "start": 572 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 630 } } + } + }, + "span": { "length": 1, "start": 630 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "zero", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 8, "start": 594 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "b", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 23, "start": 290 } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "span": { "length": 32, "start": 327 } + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsFileXRefs.out.9.4 b/glean/lang/haskell/tests/code/hsFileXRefs.out.9.4 new file mode 100644 index 000000000..541040072 --- /dev/null +++ b/glean/lang/haskell/tests/code/hsFileXRefs.out.9.4 @@ -0,0 +1,902 @@ +[ + "@generated", + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "xrefs": [ + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 0, "span": { "length": 3, "start": 364 } }, + { "kind": 2, "span": { "length": 3, "start": 664 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "ord", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 0, "span": { "length": 7, "start": 355 } }, + { "kind": 2, "span": { "length": 7, "start": 390 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Unicode" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "toLower", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 0, "span": { "length": 9, "start": 344 } } ], + "target": { "modName": { "key": "Data.Char" } } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 273 } }, + { "kind": 3, "span": { "length": 1, "start": 370 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 279 } }, + { "kind": 2, "span": { "length": 1, "start": 442 } }, + { "kind": 2, "span": { "length": 1, "start": 592 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "A", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 285 } }, + { "kind": 2, "span": { "length": 1, "start": 616 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 295 } }, + { "kind": 2, "span": { "length": 1, "start": 609 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 305 } }, + { "kind": 2, "span": { "length": 1, "start": 556 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 324 } }, + { "kind": 3, "span": { "length": 1, "start": 604 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 4, "start": 315 } }, + { "kind": 3, "span": { "length": 4, "start": 584 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "zero", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 1, "start": 449 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 424 } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 1, "start": 486 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 459 } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 1, "start": 501 } }, + { "kind": 2, "span": { "length": 1, "start": 523 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 508 } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 1, "start": 535 } }, + { "kind": 2, "span": { "length": 1, "start": 570 } }, + { "kind": 2, "span": { "length": 1, "start": 647 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 1, "start": 576 } }, + { "kind": 2, "span": { "length": 1, "start": 581 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 572 } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 1, "start": 611 } }, + { "kind": 2, "span": { "length": 1, "start": 618 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 15, "start": 604 } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 1, "start": 622 } }, + { "kind": 2, "span": { "length": 2, "start": 467 } }, + { "kind": 2, "span": { "length": 2, "start": 479 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 1, "start": 639 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 630 } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 1, "start": 672 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 643 } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 2, "start": 467 } }, + { "kind": 2, "span": { "length": 2, "start": 669 } }, + { "kind": 2, "span": { "length": 2, "start": 676 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 2, "start": 479 } }, + { "kind": 2, "span": { "length": 2, "start": 624 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 2, "start": 498 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Classes" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Eq", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 2, "start": 578 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Classes" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "==", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 2, "start": 636 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C3", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 2, "start": 660 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C2", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 3, "start": 386 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "map", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 3, "start": 412 } }, + { "kind": 2, "span": { "length": 3, "start": 558 } }, + { "kind": 2, "span": { "length": 3, "start": 653 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Int", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 4, "start": 473 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Char", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 4, "start": 528 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Bool", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 4, "start": 541 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "True", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 5, "start": 431 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Float", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 6, "start": 375 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "String", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + } + ] + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "xrefs": [ + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 0, "span": { "length": 1, "start": 254 } } ], + "target": { "modName": { "key": "A" } } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ + { "kind": 0, "span": { "length": 3, "start": 273 } }, + { "kind": 2, "span": { "length": 3, "start": 308 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "ord", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 0, "span": { "length": 9, "start": 263 } } ], + "target": { "modName": { "key": "Data.Char" } } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 228 } }, + { "kind": 3, "span": { "length": 1, "start": 279 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "b", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 234 } }, + { "kind": 3, "span": { "length": 1, "start": 315 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 1, "start": 302 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "$", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 1, "start": 312 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 1, "start": 320 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 2, "start": 337 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 2, "start": 347 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 3, "start": 285 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Int", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 3, "start": 304 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "map", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 3, "start": 331 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 4, "start": 322 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Char", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 7, "start": 294 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.List" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "reverse", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + } + ] + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsFileXRefs.out.9.6 b/glean/lang/haskell/tests/code/hsFileXRefs.out.9.6 new file mode 100644 index 000000000..541040072 --- /dev/null +++ b/glean/lang/haskell/tests/code/hsFileXRefs.out.9.6 @@ -0,0 +1,902 @@ +[ + "@generated", + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "xrefs": [ + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 0, "span": { "length": 3, "start": 364 } }, + { "kind": 2, "span": { "length": 3, "start": 664 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "ord", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 0, "span": { "length": 7, "start": 355 } }, + { "kind": 2, "span": { "length": 7, "start": 390 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Unicode" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "toLower", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 0, "span": { "length": 9, "start": 344 } } ], + "target": { "modName": { "key": "Data.Char" } } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 273 } }, + { "kind": 3, "span": { "length": 1, "start": 370 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 279 } }, + { "kind": 2, "span": { "length": 1, "start": 442 } }, + { "kind": 2, "span": { "length": 1, "start": 592 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "A", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 285 } }, + { "kind": 2, "span": { "length": 1, "start": 616 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 295 } }, + { "kind": 2, "span": { "length": 1, "start": 609 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 305 } }, + { "kind": 2, "span": { "length": 1, "start": 556 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 324 } }, + { "kind": 3, "span": { "length": 1, "start": 604 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 4, "start": 315 } }, + { "kind": 3, "span": { "length": 4, "start": 584 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "zero", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 1, "start": 449 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 424 } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 1, "start": 486 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 459 } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 1, "start": 501 } }, + { "kind": 2, "span": { "length": 1, "start": 523 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 508 } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 1, "start": 535 } }, + { "kind": 2, "span": { "length": 1, "start": 570 } }, + { "kind": 2, "span": { "length": 1, "start": 647 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 1, "start": 576 } }, + { "kind": 2, "span": { "length": 1, "start": 581 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 572 } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 1, "start": 611 } }, + { "kind": 2, "span": { "length": 1, "start": 618 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 15, "start": 604 } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 1, "start": 622 } }, + { "kind": 2, "span": { "length": 2, "start": 467 } }, + { "kind": 2, "span": { "length": 2, "start": 479 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 1, "start": 639 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 630 } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 1, "start": 672 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 643 } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 2, "start": 467 } }, + { "kind": 2, "span": { "length": 2, "start": 669 } }, + { "kind": 2, "span": { "length": 2, "start": 676 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 2, "start": 479 } }, + { "kind": 2, "span": { "length": 2, "start": 624 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 2, "start": 498 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Classes" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Eq", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 2, "start": 578 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Classes" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "==", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 2, "start": 636 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C3", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 2, "start": 660 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C2", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 3, "start": 386 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "map", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ + { "kind": 2, "span": { "length": 3, "start": 412 } }, + { "kind": 2, "span": { "length": 3, "start": 558 } }, + { "kind": 2, "span": { "length": 3, "start": 653 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Int", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 4, "start": 473 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Char", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 4, "start": 528 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Bool", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 4, "start": 541 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "True", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 5, "start": 431 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Float", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "refs": [ { "kind": 2, "span": { "length": 6, "start": 375 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "String", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + } + ] + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "xrefs": [ + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 0, "span": { "length": 1, "start": 254 } } ], + "target": { "modName": { "key": "A" } } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ + { "kind": 0, "span": { "length": 3, "start": 273 } }, + { "kind": 2, "span": { "length": 3, "start": 308 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "ord", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 0, "span": { "length": 9, "start": 263 } } ], + "target": { "modName": { "key": "Data.Char" } } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 228 } }, + { "kind": 3, "span": { "length": 1, "start": 279 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "b", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ + { "kind": 1, "span": { "length": 1, "start": 234 } }, + { "kind": 3, "span": { "length": 1, "start": 315 } } + ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 1, "start": 302 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "$", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 1, "start": 312 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 1, "start": 320 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 2, "start": 337 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 2, "start": 347 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 3, "start": 285 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Int", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 3, "start": 304 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "map", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 3, "start": 331 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 4, "start": 322 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Char", "namespace_": 3 } }, + "sort": { "external": { } } + } + } + } + } + }, + { + "key": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "refs": [ { "kind": 2, "span": { "length": 7, "start": 294 } } ], + "target": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.List" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "reverse", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + } + ] + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsInstanceDecl.out.9.4 b/glean/lang/haskell/tests/code/hsInstanceDecl.out.9.4 new file mode 100644 index 000000000..8c854af98 --- /dev/null +++ b/glean/lang/haskell/tests/code/hsInstanceDecl.out.9.4 @@ -0,0 +1,30 @@ +[ + "@generated", + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "span": { "length": 35, "start": 547 } + }, + "methods": [ + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "span": { "length": 12, "start": 570 } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + ] + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsInstanceDecl.out.9.6 b/glean/lang/haskell/tests/code/hsInstanceDecl.out.9.6 new file mode 100644 index 000000000..8c854af98 --- /dev/null +++ b/glean/lang/haskell/tests/code/hsInstanceDecl.out.9.6 @@ -0,0 +1,30 @@ +[ + "@generated", + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "span": { "length": 35, "start": 547 } + }, + "methods": [ + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "span": { "length": 12, "start": 570 } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } + ] + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsModuleDeclarations.out.9.4 b/glean/lang/haskell/tests/code/hsModuleDeclarations.out.9.4 new file mode 100644 index 000000000..c8c5517d3 --- /dev/null +++ b/glean/lang/haskell/tests/code/hsModuleDeclarations.out.9.4 @@ -0,0 +1,394 @@ +[ + "@generated", + { + "key": { + "exports": [ + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "A", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C1", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C2", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C3", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "zero", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + ], + "module": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "names": [ + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "A", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C1", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C2", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C3", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 424 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 459 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 508 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 15, "start": 604 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "internal": { "length": 10, "start": 535 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "internal": { "length": 12, "start": 570 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 643 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 572 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 630 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "zero", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + ] + } + }, + { + "key": { + "exports": [ + { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "b", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + ], + "module": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "names": [ + { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "b", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + ] + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsModuleDeclarations.out.9.6 b/glean/lang/haskell/tests/code/hsModuleDeclarations.out.9.6 new file mode 100644 index 000000000..c8c5517d3 --- /dev/null +++ b/glean/lang/haskell/tests/code/hsModuleDeclarations.out.9.6 @@ -0,0 +1,394 @@ +[ + "@generated", + { + "key": { + "exports": [ + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "A", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C1", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C2", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C3", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "zero", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + ], + "module": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "names": [ + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "A", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C1", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C2", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "C3", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 1 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "T", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 424 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 459 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 1, "start": 508 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 2 } }, + "sort": { "internal": { "length": 15, "start": 604 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "internal": { "length": 10, "start": 535 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "internal": { "length": 12, "start": 570 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 643 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 572 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 630 } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "zero", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + ] + } + }, + { + "key": { + "exports": [ + { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "b", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + ], + "module": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "names": [ + { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "b", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + ] + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsSigDecl.out.9.4 b/glean/lang/haskell/tests/code/hsSigDecl.out.9.4 new file mode 100644 index 000000000..1c307b191 --- /dev/null +++ b/glean/lang/haskell/tests/code/hsSigDecl.out.9.4 @@ -0,0 +1,88 @@ +[ + "@generated", + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "span": { "length": 9, "start": 584 } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "zero", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "span": { "length": 11, "start": 370 } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "span": { "length": 15, "start": 604 } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "span": { "length": 10, "start": 279 } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "b", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "span": { "length": 11, "start": 315 } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsSigDecl.out.9.6 b/glean/lang/haskell/tests/code/hsSigDecl.out.9.6 new file mode 100644 index 000000000..1c307b191 --- /dev/null +++ b/glean/lang/haskell/tests/code/hsSigDecl.out.9.6 @@ -0,0 +1,88 @@ +[ + "@generated", + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "span": { "length": 9, "start": 584 } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "zero", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "span": { "length": 11, "start": 370 } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/A.hs" }, + "span": { "length": 15, "start": 604 } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "span": { "length": 10, "start": 279 } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "b", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + }, + { + "key": { + "loc": { + "file": { "key": "glean/lang/haskell/tests/code/B.hs" }, + "span": { "length": 11, "start": 315 } + }, + "name": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "external": { } } + } + } + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsType.out b/glean/lang/haskell/tests/code/hsType.out index c7ae735b9..39661b57f 100644 --- a/glean/lang/haskell/tests/code/hsType.out +++ b/glean/lang/haskell/tests/code/hsType.out @@ -1 +1,1037 @@ -[ "@generated" ] \ No newline at end of file +[ + "@generated", + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "String", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "forall": { + "flag": { "invisible": 1 }, + "inner": { + "key": { + "fun": { + "arg": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { + "key": { "name": "R", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { + "key": { "name": "T", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + "kind": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { + "name": "LiftedRep", + "namespace_": 3 + } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Prim" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "TYPE", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "name": "a" + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "forall": { + "flag": { "invisible": 1 }, + "inner": { + "key": { + "fun": { + "arg": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { + "key": { "name": "R", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Char", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + "kind": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { + "name": "LiftedRep", + "namespace_": 3 + } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Prim" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "TYPE", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "name": "a" + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "forall": { + "flag": { "invisible": 1 }, + "inner": { + "key": { + "fun": { + "arg": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { + "key": { "name": "R", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "[]", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + "kind": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { + "name": "LiftedRep", + "namespace_": 3 + } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Prim" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "TYPE", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "name": "a" + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "internal": { "length": 10, "start": 535 } } + } + }, + "tuplefield1": { + "just": { + "key": { + "fun": { + "arg": { "key": { "tyvar": "a" } }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Bool", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "internal": { "length": 12, "start": 570 } } + } + }, + "tuplefield1": { + "just": { + "key": { + "fun": { + "arg": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Int", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Bool", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 643 } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ + { "ty": { "key": { "tyvar": "a" } }, "visible": true } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 572 } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Int", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 630 } } + } + }, + "tuplefield1": { "just": { "key": { "tyvar": "a" } } } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "zero", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Int", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "b", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Int", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "[]", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Char", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsType.out.9.4 b/glean/lang/haskell/tests/code/hsType.out.9.4 new file mode 100644 index 000000000..2715f2ad7 --- /dev/null +++ b/glean/lang/haskell/tests/code/hsType.out.9.4 @@ -0,0 +1,935 @@ +[ + "@generated", + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "String", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "forall": { + "flag": { "invisible": 1 }, + "inner": { + "key": { + "fun": { + "arg": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { + "key": { "name": "R", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { + "key": { "name": "T", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + "kind": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Type", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "name": "a" + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "forall": { + "flag": { "invisible": 1 }, + "inner": { + "key": { + "fun": { + "arg": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { + "key": { "name": "R", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Char", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + "kind": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Type", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "name": "a" + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "forall": { + "flag": { "invisible": 1 }, + "inner": { + "key": { + "fun": { + "arg": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { + "key": { "name": "R", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "[]", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + "kind": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Type", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "name": "a" + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "internal": { "length": 10, "start": 535 } } + } + }, + "tuplefield1": { + "just": { + "key": { + "fun": { + "arg": { "key": { "tyvar": "a" } }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Bool", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "internal": { "length": 12, "start": 570 } } + } + }, + "tuplefield1": { + "just": { + "key": { + "fun": { + "arg": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Int", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Bool", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 643 } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ + { "ty": { "key": { "tyvar": "a" } }, "visible": true } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 572 } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Int", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 630 } } + } + }, + "tuplefield1": { "just": { "key": { "tyvar": "a" } } } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "zero", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Int", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "b", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Int", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "[]", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Char", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsType.out.9.6 b/glean/lang/haskell/tests/code/hsType.out.9.6 new file mode 100644 index 000000000..0d5009522 --- /dev/null +++ b/glean/lang/haskell/tests/code/hsType.out.9.6 @@ -0,0 +1,935 @@ +[ + "@generated", + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "a", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Base" }, + "unit": { "key": "base" } + } + }, + "occ": { "key": { "name": "String", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "forall": { + "flag": { "invisible": 1 }, + "inner": { + "key": { + "fun": { + "arg": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { + "key": { "name": "R", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { + "key": { "name": "T", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + "kind": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Type", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "name": "a" + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f1", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "forall": { + "flag": { "invisible": 1 }, + "inner": { + "key": { + "fun": { + "arg": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { + "key": { "name": "R", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Char", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + "kind": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Type", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "name": "a" + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "f2", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "forall": { + "flag": { "invisible": 1 }, + "inner": { + "key": { + "fun": { + "arg": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { + "key": { "name": "R", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { "key": { "tyvar": "a" } }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "List", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + "kind": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Type", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "name": "a" + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "internal": { "length": 10, "start": 535 } } + } + }, + "tuplefield1": { + "just": { + "key": { + "fun": { + "arg": { "key": { "tyvar": "a" } }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Bool", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "m", "namespace_": 0 } }, + "sort": { "internal": { "length": 12, "start": 570 } } + } + }, + "tuplefield1": { + "just": { + "key": { + "fun": { + "arg": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Int", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "mult": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Many", "namespace_": 1 } + }, + "sort": { "external": { } } + } + }, + "promoted": true, + "sort": { "normal": { } } + } + } + } + } + }, + "res": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Bool", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 643 } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ + { "ty": { "key": { "tyvar": "a" } }, "visible": true } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 572 } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Int", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "x", "namespace_": 0 } }, + "sort": { "internal": { "length": 1, "start": 630 } } + } + }, + "tuplefield1": { "just": { "key": { "tyvar": "a" } } } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "A" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "zero", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "Int", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "b", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Int", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { "key": { "name": "List", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + }, + { + "key": { + "tuplefield0": { + "key": { + "mod": { + "key": { "name": { "key": "B" }, "unit": { "key": "main" } } + }, + "occ": { "key": { "name": "r", "namespace_": 0 } }, + "sort": { "external": { } } + } + }, + "tuplefield1": { + "just": { + "key": { + "tyconapp": { + "args_": [ + { + "ty": { + "key": { + "tyconapp": { + "args_": [ ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "GHC.Types" }, + "unit": { "key": "ghc-prim" } + } + }, + "occ": { + "key": { "name": "Char", "namespace_": 3 } + }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + }, + "visible": true + } + ], + "tycon": { + "key": { + "name": { + "key": { + "mod": { + "key": { + "name": { "key": "A" }, + "unit": { "key": "main" } + } + }, + "occ": { "key": { "name": "R", "namespace_": 3 } }, + "sort": { "external": { } } + } + }, + "promoted": false, + "sort": { "normal": { } } + } + } + } + } + } + } + } + } +] \ No newline at end of file diff --git a/glean/lang/haskell/tests/code/hsType.query b/glean/lang/haskell/tests/code/hsType.query index db7044ac0..eef60ebd9 100644 --- a/glean/lang/haskell/tests/code/hsType.query +++ b/glean/lang/haskell/tests/code/hsType.query @@ -1,7 +1,7 @@ # Make sure all bindings have types. We can't compare the actual types # because some details differ between GHC versions. -query: - N where - hs.ValBind { name = N, ty = nothing } | - hs.PatBind { name = N, ty = nothing } +query: | + { N, T } where + hs.ValBind { name = N, ty = T } | + hs.PatBind { name = N, ty = T } transform: [normord, []] diff --git a/glean/test/regression/Glean/Regression/Snapshot.hs b/glean/test/regression/Glean/Regression/Snapshot.hs index bb3d5db56..9e6db1218 100644 --- a/glean/test/regression/Glean/Regression/Snapshot.hs +++ b/glean/test/regression/Glean/Regression/Snapshot.hs @@ -50,15 +50,15 @@ import Glean.Types -- | From 'testRoot' this locates all subdirectories below the root -- that contain at least one ".out" file. -discoverTests :: FilePath -> IO [FilePath] -discoverTests root = go "" +discoverTests :: Driver opts -> FilePath -> IO [FilePath] +discoverTests driver root = go "" where go dir = do xs <- listDirectory (root dir) dirs <- filterM (doesDirectoryExist . ((root dir) )) xs subdirTests <- concat <$> mapM (go . (dir )) dirs return $ - if any (".out" `isSuffixOf`) xs + if any (withSuffix driver ".out" `isSuffixOf`) xs then dir : subdirTests else subdirTests @@ -150,22 +150,23 @@ executeTest cfg driver driverOpts base_group group diff subdir = } createDirectoryIfMissing True $ testOutput test outputs <- runTest driver driverOpts (cfgRoot cfg) test - compareOutputs test diff base_group group outputs + compareOutputs driver test diff base_group group outputs where with_outdir f = case cfgOutput cfg of Just dir -> f dir Nothing -> withSystemTempDirectory "glean-regression" f compareOutputs - :: TestConfig + :: Driver opts + -> TestConfig -> (Outputs -> IO Result) -- ^ compare or overwrite golden outputs -> String -> String -> [FilePath] -> IO Result -compareOutputs test diff base_group group outputs = do +compareOutputs driver test diff base_group group outputs = do fmap mconcat $ forM outputs $ \output -> do - let base = testRoot test takeFileName output + let base = withSuffix driver $ testRoot test takeFileName output specific | group == base_group = base | otherwise = outputFileForGroup base group @@ -179,6 +180,9 @@ outputFileForGroup :: FilePath -> String -> FilePath outputFileForGroup base group = addExtension (stem <.> group) ext where (stem,ext) = splitExtension base +withSuffix :: Driver opts -> FilePath -> FilePath +withSuffix driver = maybe id (flip (<.>)) (driverOutSuffix driver) + -- | Regenerate golden outputs. Do nothing if 'outGoldenBase' exists and is the -- same as 'outGenerated'. Otherwise, copy 'outGenerated' to 'outGoldenGroup' -- (which might be the same as 'outGoldenBase'). @@ -228,11 +232,12 @@ testMain driver = do testAll :: TestAction -> Config -> Driver opts -> opts -> IO () testAll act cfg driver opts = do tests' <- if null $ cfgTests cfg - then discoverTests $ cfgRoot cfg + then discoverTests driver $ cfgRoot cfg else return $ cfgTests cfg when (null tests') $ - die $ "No .out files found under " <> cfgRoot cfg + die $ "No " <> withSuffix driver ".out" <> " files found under " <> + cfgRoot cfg let tests = filter (`notElem` cfgOmitTests cfg) tests' @@ -256,7 +261,7 @@ testAll act cfg driver opts = do -- removeNonRegenerated below. result <- mconcat $ flip map groups $ \g -> executeTest cfg' driver opts (head groups) g regenerate subdir - removeNonRegenerated root subdir result + removeNonRegenerated driver root subdir result toHUnit result Nothing -> @@ -271,13 +276,16 @@ testAll act cfg driver opts = do where -- clean-up .out or .perf files which weren't regenerated -- for instance, if a .query file was removed. - removeNonRegenerated _ _ Failure{} = return () - removeNonRegenerated root test (Success regenerated) = do + removeNonRegenerated _ _ _ Failure{} = return () + removeNonRegenerated driver root test (Success regenerated) = do let path = root test allFiles <- listDirectory path - let allOutFiles = filter - (\x -> takeExtension x == ".out" || takeExtension x == ".perf") - ((path ) <$> allFiles) + let + out = withSuffix driver ".out" + perf = withSuffix driver ".perf" + allOutFiles = filter + (\x -> takeExtension x == out || takeExtension x == perf) + ((path ) <$> allFiles) let toDelete = filter (`notElem` regenerated) allOutFiles when (not (null toDelete)) $ logInfo $ "Removing output files that were not regenerated: " <> diff --git a/glean/test/regression/Glean/Regression/Snapshot/Driver.hs b/glean/test/regression/Glean/Regression/Snapshot/Driver.hs index aaa54ca97..be82cc4d2 100644 --- a/glean/test/regression/Glean/Regression/Snapshot/Driver.hs +++ b/glean/test/regression/Glean/Regression/Snapshot/Driver.hs @@ -30,9 +30,24 @@ data Driver opts = Driver { driverIndexer :: Indexer opts -- ^ test data generator, for a given test group , driverGroups :: opts -> [Group] - -- ^ groups - Test will be executed once for each group, with + -- ^ groups - the Test will be executed once for each group, with -- 'testGroup' set appropriately. If empty, test will be - -- executed once with 'testGroup' set to "". + -- executed once with 'testGroup' set to "". The golden output + -- can be different for each group: the first group in the list + -- uses @.out@, the second and subsequent groups use @.out.group@ + -- if the output differs from the contents of @.out@. + , driverOutSuffix :: Maybe String + -- ^ If set, the extension for golden outputs is + -- @.out.suffix[.group]@ instead of @.out[.group]@. This can be + -- used if the test needs different outputs depending on some + -- aspect of the environment such as the compiler/indexer + -- version. + -- + -- NOTE: when a test uses `driverOutSuffix` and has multiple + -- output files, when regenerating the outputs with `--replace` + -- it will be necessary to run the test in all its different + -- ways to regenerate all the outputs. + -- , driverTransforms :: Transforms -- ^ Additional query result transformers. , driverCreateDatabase :: CreateDatabase opts @@ -58,6 +73,7 @@ driverFromIndexer :: Indexer opts -> Driver opts driverFromIndexer indexer = Driver { driverIndexer = indexer , driverGroups = const [] + , driverOutSuffix = Nothing , driverTransforms = mempty , driverCreateDatabase = defaultCreateDatabase }