Skip to content

Commit 5733250

Browse files
author
jared
committed
Fixed Typescript codegenerator bug of collectPackageDeps not actually
collecting all package deps
1 parent f9d3d3a commit 5733250

File tree

1 file changed

+13
-4
lines changed
  • lambda-buffers-codegen/src/LambdaBuffers/Codegen/Typescript

1 file changed

+13
-4
lines changed

lambda-buffers-codegen/src/LambdaBuffers/Codegen/Typescript/Print.hs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ printModule pkgMap = do
7676
++ instDocs
7777
pkgDeps =
7878
collectPackageDeps
79+
pkgMap
7980
(ctx ^. Print.ctxTyImports)
8081
(ctx ^. Print.ctxOpaqueTyImports)
8182
(ctx ^. Print.ctxClassImports <> st ^. Print.stClassImports)
@@ -240,13 +241,21 @@ printImports selfModName pkgMap lbTyImports tsTyImports classImps ruleImps valIm
240241
importQualified :: (Doc ann, Doc ann) -> Doc ann
241242
importQualified (pkg, mn) = "import" <+> "*" <+> "as" <+> mn <+> "from" <+> squotes pkg
242243

243-
{- | `collectPackageDeps lbTyImports hsTyImports classImps ruleImps valImps` collects all the package dependencies.
244-
Note that LB `lbTyImports` and `ruleImps` are wired by the user (as the user decides on the package name for their schemass).
244+
{- | `collectPackageDeps pkgMap lbTyImports hsTyImports classImps ruleImps valImps` collects all the package dependencies.
245+
Note that LB `lbTyImports` and `ruleImps` are wired by the user (as the user decides on the package name for their schemas).
245246
-}
246-
collectPackageDeps :: Set PC.QTyName -> Set Ts.QTyName -> Set Ts.QClassName -> Set (PC.InfoLess PC.ModuleName) -> Set Ts.QValName -> Set Text
247-
collectPackageDeps _lbTyImports hsTyImports classImps _ruleImps valImps =
247+
collectPackageDeps :: Ts.PkgMap -> Set PC.QTyName -> Set Ts.QTyName -> Set Ts.QClassName -> Set (PC.InfoLess PC.ModuleName) -> Set Ts.QValName -> Set Text
248+
collectPackageDeps pkgMap lbTyImports hsTyImports classImps ruleImps valImps =
248249
let deps =
249250
Set.fromList [Ts.pkgNameToText pkgName | (Just pkgName, _, _) <- toList hsTyImports]
250251
`Set.union` Set.fromList [Ts.pkgNameToText pkgName | (pkgName, _, _) <- toList classImps]
251252
`Set.union` Set.fromList [Ts.pkgNameToText pkgName | (Just (pkgName, _), _) <- toList valImps]
253+
`Set.union` Set.fromList
254+
( toList (Set.map fst lbTyImports `Set.union` ruleImps) >>= \moduleName ->
255+
case Map.lookup moduleName pkgMap of
256+
Just pkgName -> return $ Ts.pkgNameToText pkgName
257+
-- If there is no module, then we assume that the qualified
258+
-- identifier is a builtin and hence requires no dependencies
259+
Nothing -> []
260+
)
252261
in deps

0 commit comments

Comments
 (0)