Skip to content

Commit

Permalink
refactor Public | NoPublic
Browse files Browse the repository at this point in the history
  • Loading branch information
janmasrovira committed Jun 8, 2024
1 parent 5655f7e commit 2b123a2
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 11 deletions.
4 changes: 2 additions & 2 deletions src/Juvix/Compiler/Backend/Html/Translation/FromTyped.hs
Original file line number Diff line number Diff line change
Expand Up @@ -498,12 +498,12 @@ goLocalModule def = fmap (fromMaybe mempty) . runFail $ do

goImport :: forall r. (Members '[Reader HtmlOptions] r) => Import 'Scoped -> Sem r Html
goImport op
| Just Public <- op ^? importOpen . _Just . openPublic = noDefHeader <$> ppCodeHtml defaultOptions op
| Just Public {} <- op ^? importOpen . _Just . openPublic = noDefHeader <$> ppCodeHtml defaultOptions op
| otherwise = mempty

goOpen :: forall r. (Members '[Reader HtmlOptions] r) => OpenModule 'Scoped -> Sem r Html
goOpen op
| Public <- op ^. openModuleParams . openPublic = noDefHeader <$> ppCodeHtml defaultOptions op
| Public {} <- op ^. openModuleParams . openPublic = noDefHeader <$> ppCodeHtml defaultOptions op
| otherwise = mempty

goAxiom :: forall r. (Members '[Reader HtmlOptions] r) => AxiomDef 'Scoped -> Sem r Html
Expand Down
7 changes: 6 additions & 1 deletion src/Juvix/Compiler/Concrete/Data/PublicAnn.hs
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,16 @@ import Juvix.Prelude

data PublicAnn
= -- | Explicit public annotation
Public
Public (Irrelevant (Maybe KeywordRef))
| -- | No annotation. Do not confuse this with 'not public' or 'private'.
NoPublic
deriving stock (Show, Eq, Ord, Generic)

instance Serialize PublicAnn

instance NFData PublicAnn

_Public :: Traversal' PublicAnn (Maybe KeywordRef)
_Public f = \case
NoPublic -> pure NoPublic
Public (Irrelevant x) -> Public . Irrelevant <$> f x
3 changes: 1 addition & 2 deletions src/Juvix/Compiler/Concrete/Language.hs
Original file line number Diff line number Diff line change
Expand Up @@ -1381,7 +1381,6 @@ deriving stock instance Ord (OpenModule 'Scoped)
data OpenModuleParams (s :: Stage) = OpenModuleParams
{ _openModuleKw :: KeywordRef,
_openUsingHiding :: Maybe (UsingHiding s),
_openPublicKw :: Irrelevant (Maybe KeywordRef),
_openPublic :: PublicAnn
}
deriving stock (Generic)
Expand Down Expand Up @@ -2668,7 +2667,7 @@ instance (SingI s) => HasLoc (AxiomDef s) where
instance HasLoc (OpenModule 'Scoped) where
getLoc m =
getLoc (m ^. openModuleParams . openModuleKw)
<>? fmap getLoc (m ^. openModuleParams . openPublicKw . unIrrelevant)
<>? fmap getLoc (m ^? openModuleParams . openPublic . _Public . _Just)

instance HasLoc (ProjectionDef s) where
getLoc = getLoc . (^. projectionConstructor)
Expand Down
2 changes: 1 addition & 1 deletion src/Juvix/Compiler/Concrete/Print/Base.hs
Original file line number Diff line number Diff line change
Expand Up @@ -1173,7 +1173,7 @@ ppOpenModuleHelper modName OpenModuleParams {..} = do
let name' = ppModuleNameType <$> modName
usingHiding' = ppCode <$> _openUsingHiding
openkw = ppCode _openModuleKw
public' = ppCode <$> _openPublicKw ^. unIrrelevant
public' = ppCode <$> _openPublic ^? _Public . _Just
openkw
<+?> name'
<+?> usingHiding'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1767,7 +1767,7 @@ checkOpenModuleHelper importModuleHint OpenModule {..} = do

publicAnnToVis :: PublicAnn -> VisibilityAnn
publicAnnToVis = \case
Public -> VisPublic
Public {} -> VisPublic
NoPublic -> VisPrivate

filterScope :: ExportInfo -> ExportInfo
Expand Down
7 changes: 4 additions & 3 deletions src/Juvix/Compiler/Concrete/Translation/FromSource.hs
Original file line number Diff line number Diff line change
Expand Up @@ -1625,8 +1625,8 @@ openModule = do
_openModuleKw <- kw kwOpen
_openModuleName <- name
_openUsingHiding <- optional usingOrHiding
_openPublicKw <- Irrelevant <$> optional (kw kwPublic)
let _openPublic = maybe NoPublic (const Public) (_openPublicKw ^. unIrrelevant)
openPublicKw <- optional (kw kwPublic)
let _openPublic = maybe NoPublic (Public . Irrelevant . Just) openPublicKw
_openModuleParams = OpenModuleParams {..}
return OpenModule {..}

Expand All @@ -1636,7 +1636,8 @@ popenModuleParams = do
_openModuleKw <- kw kwOpen
_openUsingHiding <- optional usingOrHiding
_openPublicKw <- Irrelevant <$> optional (kw kwPublic)
let _openPublic = maybe NoPublic (const Public) (_openPublicKw ^. unIrrelevant)
openPublicKw <- optional (kw kwPublic)
let _openPublic = maybe NoPublic (Public . Irrelevant . Just) openPublicKw
_openModuleParams = OpenModuleParams {..}
return OpenModuleParams {..}

Expand Down
1 change: 0 additions & 1 deletion src/Juvix/Compiler/Pipeline/Package/Loader.hs
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,6 @@ toConcrete t p = run . runReader l $ do
Just
OpenModuleParams
{ _openUsingHiding = Nothing,
_openPublicKw = Irrelevant Nothing,
_openPublic = NoPublic,
..
},
Expand Down

0 comments on commit 2b123a2

Please sign in to comment.