Skip to content

Commit 3cf2e3a

Browse files
committed
Integrate InfoLess
1 parent 659089d commit 3cf2e3a

File tree

5 files changed

+17
-14
lines changed

5 files changed

+17
-14
lines changed

lambda-buffers-codegen/lambda-buffers-codegen.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ test-suite tests
129129
build-depends:
130130
, base >=4.16
131131
, containers >=0.6
132+
, data-default >=0.7
132133
, lambda-buffers-codegen
133134
, lambda-buffers-compiler >=0.1
134135
, lambda-buffers-compiler-pb >=0.1

lambda-buffers-codegen/src/LambdaBuffers/Codegen/Haskell/Config.hs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ module LambdaBuffers.Codegen.Haskell.Config (QTyName, QClassName, Config (..), o
33
import Control.Lens (makeLenses)
44
import Data.Map (Map)
55
import LambdaBuffers.Codegen.Haskell.Syntax qualified as H
6+
import LambdaBuffers.Compiler.ProtoCompat.InfoLess qualified as PC
67
import LambdaBuffers.Compiler.ProtoCompat.Types qualified as PC
78

8-
-- FIXME(bladyjoker): Must be InfoLess.
9-
type QTyName = (PC.ModuleName, PC.TyName)
10-
type QClassName = (PC.ModuleName, PC.ClassName)
9+
type QTyName = (PC.InfoLess PC.ModuleName, PC.InfoLess PC.TyName)
10+
type QClassName = (PC.InfoLess PC.ModuleName, PC.InfoLess PC.ClassName)
1111

1212
data Config = MkConfig
1313
{ _opaques :: Map QTyName (H.CabalPackageName, H.ModuleName, H.TyName)

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import Data.Set (Set)
99
import Data.Set qualified as Set
1010
import Data.Text qualified as Text
1111
import LambdaBuffers.Codegen.Haskell.Syntax qualified as H
12+
import LambdaBuffers.Compiler.ProtoCompat.InfoLess qualified as PC
1213
import LambdaBuffers.Compiler.ProtoCompat.Types qualified as PC
1314
import Prettyprinter (Doc, Pretty (pretty), align, colon, comma, concatWith, dot, encloseSep, equals, group, lbrace, line, lparen, parens, pipe, rbrace, rparen, sep, space, squote, surround, vsep, (<+>))
1415

@@ -61,13 +62,13 @@ type Maybe = Prelude.Maybe
6162
printTyDefOpaque :: PC.TyName -> (H.CabalPackageName, H.ModuleName, H.TyName) -> Doc a
6263
printTyDefOpaque tyN hsTyRef = "type" <+> printTyName tyN <+> equals <+> printHsTyRef hsTyRef
6364

64-
printHsTyRef :: (H.CabalPackageName, H.ModuleName, H.TyName) -> Doc a
65+
printHsTyRef :: H.QTyName -> Doc a
6566
printHsTyRef (_, H.MkModuleName hsModName, H.MkTyName hsTyName) = pretty hsModName <> dot <> pretty hsTyName
6667

6768
-- | Used to distinguish from Opaques.
6869
newtype NonOpaqueTyBody = Sum PC.Sum
6970

70-
printTyDefNonOpaque :: PC.TyName -> Map PC.VarName PC.TyArg -> NonOpaqueTyBody -> Doc a
71+
printTyDefNonOpaque :: PC.TyName -> Map (PC.InfoLess PC.VarName) PC.TyArg -> NonOpaqueTyBody -> Doc a
7172
printTyDefNonOpaque tyN args body =
7273
let argsDoc = sep (printTyArg <$> toList args) -- FIXME(bladyjoker): OMap on Constructors
7374
(keyword, bodyDoc) = printTyBody tyN body

lambda-buffers-codegen/src/LambdaBuffers/Codegen/Haskell/PrintM.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import Data.Text qualified as Text
1919
import LambdaBuffers.Codegen.Haskell.Config (Config, opaques)
2020
import LambdaBuffers.Codegen.Haskell.Print qualified as Print
2121
import LambdaBuffers.Codegen.Haskell.Syntax qualified as H
22+
import LambdaBuffers.Compiler.ProtoCompat.InfoLess qualified as PC
2223
import LambdaBuffers.Compiler.ProtoCompat.Types (Module, TyAbs (TyAbs), TyBody (OpaqueI, SumI), TyDef)
2324
import LambdaBuffers.Compiler.ProtoCompat.Types qualified as PC
2425
import Prettyprinter (Doc)
@@ -102,8 +103,7 @@ goTyAbs :: MonadPrint m => TyAbs -> m ()
102103
goTyAbs (TyAbs _ (OpaqueI _) _) = do
103104
cfg <- askConfig
104105
(currentModuleName, currentTyDef) <- askTyDefCtx
105-
-- FIXME(bladyjoker): Must be infoLess.
106-
qhTyRef <- case Map.lookup (currentModuleName, currentTyDef ^. #tyName) (cfg ^. opaques) of
106+
qhTyRef <- case Map.lookup (PC.mkInfoLess currentModuleName, PC.mkInfoLess $ currentTyDef ^. #tyName) (cfg ^. opaques) of
107107
Nothing -> throwError $ "TODO(bladyjoker): Opaque not configured" <> show (currentTyDef ^. #tyName)
108108
Just qhsTyRef -> return qhsTyRef
109109
exportTy (H.fromLbTyName (currentTyDef ^. #tyName))

lambda-buffers-codegen/test/Test/LambdaBuffers/Codegen/Haskell.hs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ import Data.Text (Text)
88
import Data.Traversable (for)
99
import LambdaBuffers.Codegen.Haskell.Config (Config (MkConfig))
1010
import LambdaBuffers.Codegen.Haskell.Syntax qualified as H
11-
import LambdaBuffers.Compiler.ProtoCompat.Types (ModuleName (ModuleName), ModuleNamePart (ModuleNamePart), TyName (TyName))
11+
import LambdaBuffers.Compiler.ProtoCompat.InfoLess qualified as PC
1212
import LambdaBuffers.Compiler.ProtoCompat.Types qualified as PC
1313
import Proto.Compiler qualified as P
1414
import Proto.Compiler_Fields qualified as P
1515

16+
import Data.Default (Default (def))
1617
import LambdaBuffers.Codegen.Haskell.Config qualified as H
1718
import LambdaBuffers.Codegen.Haskell.PrintM qualified as H
1819
import LambdaBuffers.Compiler.ProtoCompat.FromProto qualified as PC
@@ -54,22 +55,22 @@ testConfig =
5455
( Map.fromList
5556
[
5657
(
57-
( PC.ModuleName [PC.ModuleNamePart "TestMod" PC.defSourceInfo] PC.defSourceInfo
58-
, PC.TyName "I8" PC.defSourceInfo
58+
( PC.mkInfoLess $ PC.ModuleName [PC.ModuleNamePart "TestMod" def] def
59+
, PC.mkInfoLess $ PC.TyName "I8" def
5960
)
6061
, (H.MkCabalPackageName "base", H.MkModuleName "Data.Int", H.MkTyName "Int8")
6162
)
6263
,
6364
(
64-
( PC.ModuleName [PC.ModuleNamePart "TestMod2" PC.defSourceInfo] PC.defSourceInfo
65-
, PC.TyName "I16" PC.defSourceInfo
65+
( PC.mkInfoLess $ PC.ModuleName [PC.ModuleNamePart "TestMod2" def] def
66+
, PC.mkInfoLess $ PC.TyName "I16" def
6667
)
6768
, (H.MkCabalPackageName "base", H.MkModuleName "Data.Int", H.MkTyName "Int16")
6869
)
6970
,
7071
(
71-
( ModuleName [ModuleNamePart "TestMod" PC.defSourceInfo] PC.defSourceInfo
72-
, TyName "Set" PC.defSourceInfo
72+
( PC.mkInfoLess $ PC.ModuleName [PC.ModuleNamePart "TestMod" def] def
73+
, PC.mkInfoLess $ PC.TyName "Set" def
7374
)
7475
, (H.MkCabalPackageName "containers", H.MkModuleName "Data.Set", H.MkTyName "Set")
7576
)

0 commit comments

Comments
 (0)