From 0e8ccb7db27791ecd06e82c6d697efd6b721f16d Mon Sep 17 00:00:00 2001 From: Paul Cadman Date: Mon, 22 Apr 2024 10:03:21 +0100 Subject: [PATCH] Remove support for examples from judoc (#2747) The judoc examples feature is currently unused. This feature was added in https://github.com/anoma/juvix/pull/1442 Keeping support for this feature adds a cost to HTML generation. We are removing this to improve the performance of `juvix html`. To just render the HTML documentation we only require the scoper result from the pipeline. To support the examples we need the type checking result. The cost is significant in larger projects as the pipeline is run for each import. Part of https://github.com/anoma/juvix/issues/2744 --- app/Commands/Html.hs | 3 +- .../Backend/Html/Translation/FromTyped.hs | 57 ++++++------------ .../Concrete/Data/Highlight/PrettyJudoc.hs | 1 - src/Juvix/Compiler/Concrete/Language.hs | 18 ------ src/Juvix/Compiler/Concrete/Print/Base.hs | 8 --- .../FromParsed/Analysis/Scoping.hs | 1 - .../Concrete/Translation/FromSource.hs | 17 +----- .../Concrete/Translation/FromSource/Lexer.hs | 4 -- src/Juvix/Compiler/Internal/Extra.hs | 3 +- src/Juvix/Compiler/Internal/Extra/Base.hs | 12 +--- src/Juvix/Compiler/Internal/Extra/Clonable.hs | 2 - src/Juvix/Compiler/Internal/Language.hs | 15 ----- .../Internal/Translation/FromConcrete.hs | 23 -------- .../Internal/Translation/FromInternal.hs | 6 +- .../Analysis/TypeChecking/CheckerNew.hs | 58 ++++++------------- .../Analysis/TypeChecking/Data/Context.hs | 1 - 16 files changed, 42 insertions(+), 187 deletions(-) diff --git a/app/Commands/Html.hs b/app/Commands/Html.hs index 64313a3ff0..94fb25326b 100644 --- a/app/Commands/Html.hs +++ b/app/Commands/Html.hs @@ -10,7 +10,7 @@ import Juvix.Compiler.Backend.Html.Translation.FromTyped.Source import Juvix.Compiler.Concrete.Pretty qualified as Concrete import Juvix.Compiler.Concrete.Translation.FromParsed.Analysis.Scoping qualified as Scoper import Juvix.Compiler.Internal.Translation -import Juvix.Compiler.Internal.Translation.FromInternal.Analysis.TypeChecking.Data.Context (resultInternal, resultNormalized) +import Juvix.Compiler.Internal.Translation.FromInternal.Analysis.TypeChecking.Data.Context (resultInternal) import Juvix.Extra.Process import System.Process qualified as Process @@ -45,7 +45,6 @@ resultToJudocCtx :: InternalTypedResult -> Html.JudocCtx resultToJudocCtx res = Html.JudocCtx { _judocCtxComments = Scoper.getScoperResultComments sres, - _judocCtxNormalizedTable = res ^. resultNormalized, _judocCtxTopModules = [sres ^. Scoper.resultModule] } where diff --git a/src/Juvix/Compiler/Backend/Html/Translation/FromTyped.hs b/src/Juvix/Compiler/Backend/Html/Translation/FromTyped.hs index 61983cfbe7..16301128f4 100644 --- a/src/Juvix/Compiler/Backend/Html/Translation/FromTyped.hs +++ b/src/Juvix/Compiler/Backend/Html/Translation/FromTyped.hs @@ -15,11 +15,8 @@ import Juvix.Compiler.Backend.Html.Translation.FromTyped.Source hiding (go) import Juvix.Compiler.Concrete.Data.ScopedName qualified as S import Juvix.Compiler.Concrete.Language import Juvix.Compiler.Concrete.Print -import Juvix.Compiler.Internal.Translation.FromInternal.Analysis.TypeChecking qualified as InternalTyped -import Juvix.Compiler.Internal.Translation.FromInternal.Analysis.TypeChecking.Data.Context import Juvix.Compiler.Pipeline.EntryPoint import Juvix.Extra.Assets -import Juvix.Extra.Strings qualified as Str import Juvix.Prelude import Juvix.Prelude.Pretty import Text.Blaze.Html.Renderer.Utf8 qualified as Html @@ -28,8 +25,7 @@ import Text.Blaze.Html5.Attributes qualified as Attr data JudocCtx = JudocCtx { _judocCtxComments :: Comments, - _judocCtxTopModules :: [Module 'Scoped 'ModuleTop], - _judocCtxNormalizedTable :: InternalTyped.NormalizedTable + _judocCtxTopModules :: [Module 'Scoped 'ModuleTop] } data JudocArgs = JudocArgs @@ -56,16 +52,14 @@ instance Semigroup JudocCtx where ctx1 <> ctx2 = JudocCtx { _judocCtxComments = ctx1 ^. judocCtxComments <> ctx2 ^. judocCtxComments, - _judocCtxTopModules = ctx1 ^. judocCtxTopModules <> ctx2 ^. judocCtxTopModules, - _judocCtxNormalizedTable = ctx1 ^. judocCtxNormalizedTable <> ctx2 ^. judocCtxNormalizedTable + _judocCtxTopModules = ctx1 ^. judocCtxTopModules <> ctx2 ^. judocCtxTopModules } instance Monoid JudocCtx where mempty = JudocCtx { _judocCtxComments = mempty, - _judocCtxTopModules = mempty, - _judocCtxNormalizedTable = mempty + _judocCtxTopModules = mempty } data Tree k a = Tree @@ -180,7 +174,7 @@ writeHtml f h = liftIO $ do genJudocHtml :: (Members '[EmbedIO] r) => EntryPoint -> JudocArgs -> Sem r () genJudocHtml entry JudocArgs {..} = - runReader htmlOpts . runReader normTable . runReader entry $ do + runReader htmlOpts . runReader entry $ do liftIO (writeAssets _judocArgsOutputDir) mapM_ (goTopModule cs) allModules createIndexFile (map topModulePath (toList allModules)) @@ -188,9 +182,6 @@ genJudocHtml entry JudocArgs {..} = cs :: Comments cs = _judocArgsCtx ^. judocCtxComments - normTable :: InternalTyped.NormalizedTable - normTable = _judocArgsCtx ^. judocCtxNormalizedTable - mainMod :: Module 'Scoped 'ModuleTop mainMod = _judocArgsMainModule @@ -285,7 +276,7 @@ template rightMenu' content' = do -- | This function compiles a module into Html documentation. goTopModule :: forall r. - (Members '[Reader HtmlOptions, EmbedIO, Reader EntryPoint, Reader NormalizedTable] r) => + (Members '[Reader HtmlOptions, EmbedIO, Reader EntryPoint] r) => Comments -> Module 'Scoped 'ModuleTop -> Sem r () @@ -314,7 +305,7 @@ goTopModule cs m = do _genModuleHtmlArgsModule = m } - docHtml :: forall s. (Members '[Reader HtmlOptions, Reader EntryPoint, Reader NormalizedTable] s) => Sem s Html + docHtml :: forall s. (Members '[Reader HtmlOptions, Reader EntryPoint] s) => Sem s Html docHtml = do content' <- content rightMenu' <- rightMenu @@ -396,10 +387,10 @@ goTopModule cs m = do ) <> sigs' -goJudocMay :: (Members '[Reader HtmlOptions, Reader NormalizedTable] r) => Maybe (Judoc 'Scoped) -> Sem r Html +goJudocMay :: (Members '[Reader HtmlOptions] r) => Maybe (Judoc 'Scoped) -> Sem r Html goJudocMay = maybe (return mempty) goJudoc -goJudoc :: forall r. (Members '[Reader HtmlOptions, Reader NormalizedTable] r) => Judoc 'Scoped -> Sem r Html +goJudoc :: forall r. (Members '[Reader HtmlOptions] r) => Judoc 'Scoped -> Sem r Html goJudoc (Judoc bs) = mconcatMapM goGroup bs where goGroup :: JudocGroup 'Scoped -> Sem r Html @@ -413,30 +404,16 @@ goJudoc (Judoc bs) = mconcatMapM goGroup bs goBlock :: JudocBlock 'Scoped -> Sem r Html goBlock = \case JudocLines ls -> Html.p . concatWith (\l r -> l <> " " <> r) <$> mapM goLine (toList ls) - JudocExample e -> goExample e goLine :: JudocLine 'Scoped -> Sem r Html goLine (JudocLine _ atoms) = mconcatMapM goAtom (fmap (^. withLocParam) atoms) - goExample :: Example 'Scoped -> Sem r Html - goExample ex = do - e' <- ppCodeHtml defaultOptions (ex ^. exampleExpression) - norm' <- asks @NormalizedTable (^?! at (ex ^. exampleId) . _Just) >>= ppCodeHtmlInternal - return - $ Html.pre - ! Attr.class_ "screen" - $ (Html.code ! Attr.class_ "prompt" $ Str.judocExample) - <> " " - <> e' - <> "\n" - <> norm' - goAtom :: JudocAtom 'Scoped -> Sem r Html goAtom = \case JudocExpression e -> ppCodeHtml defaultOptions e JudocText txt -> return (toHtml txt) -goStatement :: forall r. (Members '[Reader HtmlOptions, Reader NormalizedTable] r) => Statement 'Scoped -> Sem r Html +goStatement :: forall r. (Members '[Reader HtmlOptions] r) => Statement 'Scoped -> Sem r Html goStatement = \case StatementAxiom t -> goAxiom t StatementInductive t -> goInductive t @@ -454,7 +431,7 @@ goStatement = \case SyntaxOperator {} -> mempty SyntaxIterator {} -> mempty -goFixity :: forall r. (Members '[Reader HtmlOptions, Reader NormalizedTable] r) => FixitySyntaxDef 'Scoped -> Sem r Html +goFixity :: forall r. (Members '[Reader HtmlOptions] r) => FixitySyntaxDef 'Scoped -> Sem r Html goFixity def = do sig' <- ppHelper (ppFixityDefHeaderNew def) header' <- defHeader (def ^. fixitySymbol) sig' (def ^. fixityDoc) @@ -501,13 +478,13 @@ goFixity def = do arit <> assoc -goAlias :: forall r. (Members '[Reader HtmlOptions, Reader NormalizedTable] r) => AliasDef 'Scoped -> Sem r Html +goAlias :: forall r. (Members '[Reader HtmlOptions] r) => AliasDef 'Scoped -> Sem r Html goAlias def = do sig' <- ppCodeHtml defaultOptions def defHeader (def ^. aliasDefName) sig' Nothing -- | local modules generated by inductive types should not show up. -goLocalModule :: forall r. (Members '[Reader HtmlOptions, Reader NormalizedTable] r) => Module 'Scoped 'ModuleLocal -> Sem r Html +goLocalModule :: forall r. (Members '[Reader HtmlOptions] r) => Module 'Scoped 'ModuleLocal -> Sem r Html goLocalModule def = fmap (fromMaybe mempty) . runFail $ do failWhen (def ^. moduleInductive) sig' <- ppHelper (ppModuleHeader def) @@ -529,7 +506,7 @@ goOpen op | Public <- op ^. openModuleParams . openPublic = noDefHeader <$> ppCodeHtml defaultOptions op | otherwise = mempty -goAxiom :: forall r. (Members '[Reader HtmlOptions, Reader NormalizedTable] r) => AxiomDef 'Scoped -> Sem r Html +goAxiom :: forall r. (Members '[Reader HtmlOptions] r) => AxiomDef 'Scoped -> Sem r Html goAxiom axiom = do header' <- axiomHeader defHeader (axiom ^. axiomName) header' (axiom ^. axiomDoc) @@ -537,7 +514,7 @@ goAxiom axiom = do axiomHeader :: Sem r Html axiomHeader = ppCodeHtml defaultOptions (set axiomDoc Nothing axiom) -goFunctionDef :: forall r. (Members '[Reader HtmlOptions, Reader NormalizedTable] r) => FunctionDef 'Scoped -> Sem r Html +goFunctionDef :: forall r. (Members '[Reader HtmlOptions] r) => FunctionDef 'Scoped -> Sem r Html goFunctionDef def = do sig' <- funSig defHeader (def ^. signName) sig' (def ^. signDoc) @@ -545,7 +522,7 @@ goFunctionDef def = do funSig :: Sem r Html funSig = ppHelper (ppFunctionSignature def) -goInductive :: forall r. (Members '[Reader HtmlOptions, Reader NormalizedTable] r) => InductiveDef 'Scoped -> Sem r Html +goInductive :: forall r. (Members '[Reader HtmlOptions] r) => InductiveDef 'Scoped -> Sem r Html goInductive def = do sig' <- inductiveHeader header' <- defHeader (def ^. inductiveName) sig' (def ^. inductiveDoc) @@ -558,7 +535,7 @@ goInductive def = do ppHelper :: (Members '[Reader HtmlOptions] r) => Sem '[ExactPrint, Reader Options] () -> Sem r Html ppHelper = docToHtml . run . runReader defaultOptions . execExactPrint Nothing -goConstructors :: forall r. (Members '[Reader HtmlOptions, Reader NormalizedTable] r) => NonEmpty (ConstructorDef 'Scoped) -> Sem r Html +goConstructors :: forall r. (Members '[Reader HtmlOptions] r) => NonEmpty (ConstructorDef 'Scoped) -> Sem r Html goConstructors cc = do tbl' <- table . tbody <$> mconcatMapM goConstructor cc return @@ -592,7 +569,7 @@ noDefHeader = p ! Attr.class_ "src" defHeader :: forall r x. - (Members '[Reader HtmlOptions, Reader NormalizedTable] r) => + (Members '[Reader HtmlOptions] r) => S.Name' x -> Html -> Maybe (Judoc 'Scoped) -> diff --git a/src/Juvix/Compiler/Concrete/Data/Highlight/PrettyJudoc.hs b/src/Juvix/Compiler/Concrete/Data/Highlight/PrettyJudoc.hs index 12c4c97da2..cddf151be3 100644 --- a/src/Juvix/Compiler/Concrete/Data/Highlight/PrettyJudoc.hs +++ b/src/Juvix/Compiler/Concrete/Data/Highlight/PrettyJudoc.hs @@ -66,7 +66,6 @@ ppJudoc (Judoc bs) = do ppBlock :: JudocBlock 'Scoped -> Sem r (Doc CodeAnn) ppBlock = \case JudocLines ls -> hsep <$> mapM ppLine (toList ls) - JudocExample {} -> return mempty ppLine :: JudocLine 'Scoped -> Sem r (Doc CodeAnn) ppLine (JudocLine _ as) = mconcatMapM (ppAtom . (^. withLocParam)) (toList as) diff --git a/src/Juvix/Compiler/Concrete/Language.hs b/src/Juvix/Compiler/Concrete/Language.hs index b27df17293..07764a2072 100644 --- a/src/Juvix/Compiler/Concrete/Language.hs +++ b/src/Juvix/Compiler/Concrete/Language.hs @@ -2031,7 +2031,6 @@ deriving stock instance Ord (JudocGroup 'Scoped) data JudocBlock (s :: Stage) = JudocLines (NonEmpty (JudocLine s)) - | JudocExample (Example s) deriving stock (Generic) instance Serialize (JudocBlock 'Scoped) @@ -2500,7 +2499,6 @@ instance HasLoc (JudocGroup s) where instance HasLoc (JudocBlock s) where getLoc = \case JudocLines ls -> getLocSpan ls - JudocExample e -> getLoc e instance HasLoc PatternScopedIden where getLoc = \case @@ -2817,22 +2815,6 @@ instance HasAtomicity PatternArg where | isJust (p ^. patternArgName) = Atom | otherwise = atomicity (p ^. patternArgPattern) -judocExamples :: Judoc s -> [Example s] -judocExamples (Judoc bs) = concatMap goGroup bs - where - goGroup :: JudocGroup s -> [Example s] - goGroup = \case - JudocGroupBlock p -> goParagraph p - JudocGroupLines l -> concatMap goBlock l - - goParagraph :: JudocBlockParagraph s -> [Example s] - goParagraph l = concatMap goBlock (l ^. judocBlockParagraphBlocks) - - goBlock :: JudocBlock s -> [Example s] - goBlock = \case - JudocExample e -> [e] - _ -> mempty - instance HasNameKind ScopedIden where getNameKind = getNameKind . (^. scopedIdenFinal) diff --git a/src/Juvix/Compiler/Concrete/Print/Base.hs b/src/Juvix/Compiler/Concrete/Print/Base.hs index 8f8bbe75c5..0b5dabcae8 100644 --- a/src/Juvix/Compiler/Concrete/Print/Base.hs +++ b/src/Juvix/Compiler/Concrete/Print/Base.hs @@ -807,13 +807,6 @@ ppJudocStart = do | inBlock -> return Nothing | otherwise -> ppCode Kw.delimJudocStart $> Just () -instance (SingI s) => PrettyPrint (Example s) where - ppCode e = - ppJudocStart - ppCode Kw.delimJudocExample - <+> ppExpressionType (e ^. exampleExpression) - <> semicolon - instance (PrettyPrint a) => PrettyPrint (WithLoc a) where ppCode a = morphemeM (getLoc a) (ppCode (a ^. withLocParam)) @@ -872,7 +865,6 @@ instance (SingI s) => PrettyPrint (JudocGroup s) where instance (SingI s) => PrettyPrint (JudocBlock s) where ppCode = \case JudocLines l -> vsep (ppCode <$> l) - JudocExample e -> ppCode e instance (SingI s) => PrettyPrint (AxiomDef s) where ppCode :: forall r. (Members '[ExactPrint, Reader Options] r) => AxiomDef s -> Sem r () diff --git a/src/Juvix/Compiler/Concrete/Translation/FromParsed/Analysis/Scoping.hs b/src/Juvix/Compiler/Concrete/Translation/FromParsed/Analysis/Scoping.hs index 4cb14685e7..6cad380484 100644 --- a/src/Juvix/Compiler/Concrete/Translation/FromParsed/Analysis/Scoping.hs +++ b/src/Juvix/Compiler/Concrete/Translation/FromParsed/Analysis/Scoping.hs @@ -2457,7 +2457,6 @@ checkJudocBlock :: Sem r (JudocBlock 'Scoped) checkJudocBlock = \case JudocLines l -> JudocLines <$> mapM checkJudocLine l - JudocExample e -> JudocExample <$> traverseOf exampleExpression checkParseExpressionAtoms e checkJudocBlockParagraph :: (Members '[HighlightBuilder, Reader ScopeParameters, Error ScoperError, State Scope, State ScoperState, InfoTableBuilder, Reader InfoTable, NameIdGen, Reader EntryPoint] r) => diff --git a/src/Juvix/Compiler/Concrete/Translation/FromSource.hs b/src/Juvix/Compiler/Concrete/Translation/FromSource.hs index 5a8d63b0d5..b3cd8e11f3 100644 --- a/src/Juvix/Compiler/Concrete/Translation/FromSource.hs +++ b/src/Juvix/Compiler/Concrete/Translation/FromSource.hs @@ -569,9 +569,7 @@ stashJudoc = do judocBlock :: Bool -> ParsecS r (JudocBlock 'Parsed) judocBlock inBlock = do - p <- - judocExample inBlock - <|> judocParagraphLines inBlock + p <- judocParagraphLines inBlock void (many (judocEmptyLine inBlock)) return p @@ -587,17 +585,6 @@ stashJudoc = do judocParagraphLines :: Bool -> ParsecS r (JudocBlock 'Parsed) judocParagraphLines inBlock = JudocLines <$> some1 (paragraphLine inBlock) - judocExample :: Bool -> ParsecS r (JudocBlock 'Parsed) - judocExample inBlock = do - if - | inBlock -> judocExampleStart - | otherwise -> P.try (judocStart >> judocExampleStart) - _exampleId <- P.lift freshNameId - (_exampleExpression, _exampleLoc) <- interval parseExpressionAtoms - semicolon - space - return (JudocExample Example {..}) - paragraphLine :: Bool -> ParsecS r (JudocLine 'Parsed) paragraphLine inBlock = do kwstart <- @@ -605,7 +592,7 @@ stashJudoc = do | inBlock -> return Nothing | otherwise -> P.try $ do s <- judocStart - P.notFollowedBy (P.choice [judocExampleStart, void P.newline]) + P.notFollowedBy (P.choice [void P.newline]) return (Just s) l <- JudocLine kwstart . trimEnds <$> some1 (withLoc (judocAtom inBlock)) if diff --git a/src/Juvix/Compiler/Concrete/Translation/FromSource/Lexer.hs b/src/Juvix/Compiler/Concrete/Translation/FromSource/Lexer.hs index 8bcc310a73..dda46cd26a 100644 --- a/src/Juvix/Compiler/Concrete/Translation/FromSource/Lexer.hs +++ b/src/Juvix/Compiler/Concrete/Translation/FromSource/Lexer.hs @@ -13,7 +13,6 @@ import Juvix.Compiler.Concrete.Extra qualified as P import Juvix.Compiler.Concrete.Keywords import Juvix.Compiler.Concrete.Translation.FromSource.ParserResultBuilder import Juvix.Data.Keyword -import Juvix.Extra.Strings qualified as Str import Juvix.Parser.Lexer import Juvix.Prelude import Text.Megaparsec.Char.Lexer qualified as L @@ -73,9 +72,6 @@ bracedString = string :: (Members '[ParserResultBuilder] r) => ParsecS r (Text, Interval) string = lexemeInterval string' -judocExampleStart :: ParsecS r () -judocExampleStart = P.chunk Str.judocExample >> hspace_ - judocBlockEnd :: (Members '[ParserResultBuilder] r) => ParsecS r KeywordRef judocBlockEnd = kw delimJudocBlockEnd diff --git a/src/Juvix/Compiler/Internal/Extra.hs b/src/Juvix/Compiler/Internal/Extra.hs index 69d9171a8e..fe8c544897 100644 --- a/src/Juvix/Compiler/Internal/Extra.hs +++ b/src/Juvix/Compiler/Internal/Extra.hs @@ -111,8 +111,7 @@ genFieldProjection _funDefName _funDefBuiltin info fieldIx = do retTy = constrArgs !! fieldIx cloneFunctionDefSameName FunctionDef - { _funDefExamples = [], - _funDefTerminating = False, + { _funDefTerminating = False, _funDefInstance = False, _funDefCoercion = False, _funDefArgsInfo = mempty, diff --git a/src/Juvix/Compiler/Internal/Extra/Base.hs b/src/Juvix/Compiler/Internal/Extra/Base.hs index b33e010ae7..f39e11c327 100644 --- a/src/Juvix/Compiler/Internal/Extra/Base.hs +++ b/src/Juvix/Compiler/Internal/Extra/Base.hs @@ -185,9 +185,6 @@ subsHoles s = leafExpressions helper ExpressionHole h -> clone (fromMaybe e (s ^. at h)) _ -> return e -instance HasExpressions Example where - leafExpressions f = traverseOf exampleExpression (leafExpressions f) - instance HasExpressions ArgInfo where leafExpressions f ArgInfo {..} = do d' <- traverse (leafExpressions f) _argInfoDefault @@ -201,13 +198,11 @@ instance HasExpressions FunctionDef where leafExpressions f FunctionDef {..} = do body' <- leafExpressions f _funDefBody ty' <- leafExpressions f _funDefType - examples' <- traverse (leafExpressions f) _funDefExamples infos' <- traverse (leafExpressions f) _funDefArgsInfo pure FunctionDef { _funDefBody = body', _funDefType = ty', - _funDefExamples = examples', _funDefArgsInfo = infos', _funDefTerminating, _funDefInstance, @@ -242,13 +237,11 @@ instance HasExpressions InductiveDef where leafExpressions f InductiveDef {..} = do params' <- traverse (leafExpressions f) _inductiveParameters constrs' <- traverse (leafExpressions f) _inductiveConstructors - examples' <- traverse (leafExpressions f) _inductiveExamples ty' <- leafExpressions f _inductiveType pure InductiveDef { _inductiveParameters = params', _inductiveConstructors = constrs', - _inductiveExamples = examples', _inductiveType = ty', _inductiveName, _inductiveBuiltin, @@ -260,11 +253,9 @@ instance HasExpressions InductiveDef where instance HasExpressions ConstructorDef where leafExpressions f ConstructorDef {..} = do ty' <- leafExpressions f _inductiveConstructorType - examples' <- traverse (leafExpressions f) _inductiveConstructorExamples pure ConstructorDef - { _inductiveConstructorExamples = examples', - _inductiveConstructorType = ty', + { _inductiveConstructorType = ty', _inductiveConstructorName, _inductiveConstructorPragmas } @@ -770,7 +761,6 @@ simpleFunDef funName ty body = FunctionDef { _funDefName = funName, _funDefType = ty, - _funDefExamples = [], _funDefCoercion = False, _funDefInstance = False, _funDefPragmas = mempty, diff --git a/src/Juvix/Compiler/Internal/Extra/Clonable.hs b/src/Juvix/Compiler/Internal/Extra/Clonable.hs index e825ff71ec..473701d5ed 100644 --- a/src/Juvix/Compiler/Internal/Extra/Clonable.hs +++ b/src/Juvix/Compiler/Internal/Extra/Clonable.hs @@ -249,8 +249,6 @@ instance Clonable FunctionDef where _funDefType = ty', _funDefBody = body', _funDefArgsInfo = defaultSig', - -- clones do not need to preserve examples - _funDefExamples = [], _funDefTerminating, _funDefInstance, _funDefCoercion, diff --git a/src/Juvix/Compiler/Internal/Language.hs b/src/Juvix/Compiler/Internal/Language.hs index 75028b05f7..2c92e21ce4 100644 --- a/src/Juvix/Compiler/Internal/Language.hs +++ b/src/Juvix/Compiler/Internal/Language.hs @@ -37,7 +37,6 @@ data PreStatement data Module' stmt = Module { _moduleId :: ModuleId, _moduleName :: Name, - _moduleExamples :: [Example], _moduleBody :: ModuleBody' stmt, _modulePragmas :: Pragmas } @@ -89,7 +88,6 @@ instance Serialize AxiomDef data FunctionDef = FunctionDef { _funDefName :: FunctionName, _funDefType :: Expression, - _funDefExamples :: [Example], _funDefBody :: Expression, _funDefTerminating :: Bool, _funDefInstance :: Bool, @@ -183,16 +181,6 @@ instance Hashable Expression instance Serialize Expression -data Example = Example - { _exampleId :: NameId, - _exampleExpression :: Expression - } - deriving stock (Eq, Generic, Data) - -instance Hashable Example - -instance Serialize Example - data SimpleBinder = SimpleBinder { _sbinderVar :: VarName, _sbinderType :: Expression @@ -330,7 +318,6 @@ instance Serialize InductiveParameter data InductiveDef = InductiveDef { _inductiveName :: InductiveName, _inductiveBuiltin :: Maybe BuiltinInductive, - _inductiveExamples :: [Example], _inductiveType :: Expression, _inductiveParameters :: [InductiveParameter], _inductiveConstructors :: [ConstructorDef], @@ -342,7 +329,6 @@ data InductiveDef = InductiveDef data ConstructorDef = ConstructorDef { _inductiveConstructorName :: ConstrName, - _inductiveConstructorExamples :: [Example], _inductiveConstructorType :: Expression, _inductiveConstructorPragmas :: Pragmas } @@ -402,7 +388,6 @@ makeLenses ''Module' makeLenses ''Let makeLenses ''MutualBlockLet makeLenses ''MutualBlock -makeLenses ''Example makeLenses ''PatternArg makeLenses ''Import makeLenses ''FunctionDef diff --git a/src/Juvix/Compiler/Internal/Translation/FromConcrete.hs b/src/Juvix/Compiler/Internal/Translation/FromConcrete.hs index f91137ad97..df44eb719c 100644 --- a/src/Juvix/Compiler/Internal/Translation/FromConcrete.hs +++ b/src/Juvix/Compiler/Internal/Translation/FromConcrete.hs @@ -216,12 +216,10 @@ toPreModule :: toPreModule Module {..} = do pragmas' <- goPragmas _modulePragmas body' <- local (const pragmas') (goModuleBody _moduleBody) - examples' <- goExamples _moduleDoc return Internal.Module { _moduleName = name', _moduleBody = body', - _moduleExamples = examples', _modulePragmas = pragmas', _moduleId } @@ -375,7 +373,6 @@ goFunctionDef FunctionDef {..} = do _funDefCoercion = isJust _signCoercion _funDefBuiltin = (^. withLocParam) <$> _signBuiltin _funDefType <- goDefType - _funDefExamples <- goExamples _signDoc _funDefPragmas <- goPragmas _signPragmas _funDefBody <- goBody msig <- asks (^. S.infoNameSigs . at (_funDefName ^. Internal.nameId)) @@ -477,22 +474,6 @@ goFunctionDef FunctionDef {..} = do Concrete.ArgumentWildcard w -> goWidlcard w maybe (pure <$> noName) (mapM mk) (nonEmpty _sigArgNames) -goExamples :: - forall r. - (Members '[Reader DefaultArgsStack, Builtins, NameIdGen, Error ScoperError, Reader Pragmas, Reader S.InfoTable] r) => - Maybe (Judoc 'Scoped) -> - Sem r [Internal.Example] -goExamples = mapM goExample . maybe [] judocExamples - where - goExample :: Example 'Scoped -> Sem r Internal.Example - goExample ex = do - e' <- goExpression (ex ^. exampleExpression) - return - Internal.Example - { _exampleExpression = e', - _exampleId = ex ^. exampleId - } - goInductiveParameters :: forall r. (Members '[Reader EntryPoint, Reader DefaultArgsStack, Builtins, NameIdGen, Error ScoperError, Reader Pragmas, Reader S.InfoTable] r) => @@ -604,7 +585,6 @@ goInductive ty@InductiveDef {..} = do _inductiveConstructors' <- local (const _inductivePragmas') $ mapM (goConstructorDef constrRetType) _inductiveConstructors - _inductiveExamples' <- goExamples _inductiveDoc let loc = getLoc _inductiveName indDef = Internal.InductiveDef @@ -613,7 +593,6 @@ goInductive ty@InductiveDef {..} = do _inductiveName = inductiveName', _inductiveType = fromMaybe (Internal.ExpressionUniverse (SmallUniverse loc)) _inductiveType', _inductiveConstructors = toList _inductiveConstructors', - _inductiveExamples = _inductiveExamples', _inductivePragmas = _inductivePragmas', _inductivePositive = isJust (ty ^. inductivePositive), _inductiveTrait = isJust (ty ^. inductiveTrait) @@ -636,12 +615,10 @@ goConstructorDef :: Sem r Internal.ConstructorDef goConstructorDef retTy ConstructorDef {..} = do ty' <- goRhs _constructorRhs - examples' <- goExamples _constructorDoc pragmas' <- goPragmas _constructorPragmas return Internal.ConstructorDef { _inductiveConstructorType = ty', - _inductiveConstructorExamples = examples', _inductiveConstructorName = goSymbol _constructorName, _inductiveConstructorPragmas = pragmas' } diff --git a/src/Juvix/Compiler/Internal/Translation/FromInternal.hs b/src/Juvix/Compiler/Internal/Translation/FromInternal.hs index 10685fa80e..2a96d6c713 100644 --- a/src/Juvix/Compiler/Internal/Translation/FromInternal.hs +++ b/src/Juvix/Compiler/Internal/Translation/FromInternal.hs @@ -6,7 +6,6 @@ module Juvix.Compiler.Internal.Translation.FromInternal ) where -import Data.HashMap.Strict qualified as HashMap import Juvix.Compiler.Concrete.Data.Highlight.Input import Juvix.Compiler.Internal.Data.LocalVars import Juvix.Compiler.Internal.Language @@ -34,7 +33,6 @@ typeCheckExpressionType exp = do . runNameIdGenArtifacts . ignoreHighlightBuilder . runReader table - . ignoreOutput @Example . withEmptyLocalVars . withEmptyInsertedArgsStack . mapError (JuvixError @TypeCheckerError) @@ -57,7 +55,7 @@ typeCheckingNew :: Sem (Termination ': r) InternalResult -> Sem r InternalTypedResult typeCheckingNew a = do - (termin, (res, (normalized, (idens, (funs, r))))) <- runTermination iniTerminationState $ do + (termin, (res, (idens, (funs, r)))) <- runTermination iniTerminationState $ do res <- a itab <- getInternalModuleTable <$> ask let md :: InternalModule @@ -67,7 +65,6 @@ typeCheckingNew a = do table :: InfoTable table = computeCombinedInfoTable itab' fmap (res,) - . runOutputList . runState (computeTypesTable itab') . runState (computeFunctionsTable itab') . runReader table @@ -80,7 +77,6 @@ typeCheckingNew a = do _resultModule = r, _resultInternalModule = md, _resultTermination = termin, - _resultNormalized = HashMap.fromList [(e ^. exampleId, e ^. exampleExpression) | e <- normalized], _resultIdenTypes = idens, _resultFunctions = funs } diff --git a/src/Juvix/Compiler/Internal/Translation/FromInternal/Analysis/TypeChecking/CheckerNew.hs b/src/Juvix/Compiler/Internal/Translation/FromInternal/Analysis/TypeChecking/CheckerNew.hs index 5b011949d6..fb436f9156 100644 --- a/src/Juvix/Compiler/Internal/Translation/FromInternal/Analysis/TypeChecking/CheckerNew.hs +++ b/src/Juvix/Compiler/Internal/Translation/FromInternal/Analysis/TypeChecking/CheckerNew.hs @@ -126,7 +126,7 @@ checkTable = do . CoercionCycles checkModule :: - (Members '[HighlightBuilder, Reader EntryPoint, Reader InfoTable, Error TypeCheckerError, NameIdGen, State TypesTable, State FunctionsTable, Output Example, Termination] r) => + (Members '[HighlightBuilder, Reader EntryPoint, Reader InfoTable, Error TypeCheckerError, NameIdGen, State TypesTable, State FunctionsTable, Termination] r) => Module -> Sem r Module checkModule Module {..} = runReader (mempty @InsertedArgsStack) $ do @@ -134,18 +134,16 @@ checkModule Module {..} = runReader (mempty @InsertedArgsStack) $ do evalState (mempty :: NegativeTypeParameters) . checkModuleBody $ _moduleBody - _moduleExamples <- mapM checkExample _moduleExamples return Module { _moduleBody = _moduleBody', _moduleName, - _moduleExamples, _modulePragmas, _moduleId } checkModuleBody :: - (Members '[HighlightBuilder, Reader EntryPoint, State NegativeTypeParameters, Reader InfoTable, Error TypeCheckerError, NameIdGen, State TypesTable, State FunctionsTable, Output Example, Termination, Reader InsertedArgsStack] r) => + (Members '[HighlightBuilder, Reader EntryPoint, State NegativeTypeParameters, Reader InfoTable, Error TypeCheckerError, NameIdGen, State TypesTable, State FunctionsTable, Termination, Reader InsertedArgsStack] r) => ModuleBody -> Sem r ModuleBody checkModuleBody ModuleBody {..} = do @@ -161,14 +159,14 @@ checkImport :: Import -> Sem r Import checkImport = return checkMutualBlock :: - (Members '[HighlightBuilder, Reader EntryPoint, State NegativeTypeParameters, Reader InfoTable, Error TypeCheckerError, NameIdGen, State TypesTable, State FunctionsTable, Output Example, Termination, Reader InsertedArgsStack] r) => + (Members '[HighlightBuilder, Reader EntryPoint, State NegativeTypeParameters, Reader InfoTable, Error TypeCheckerError, NameIdGen, State TypesTable, State FunctionsTable, Termination, Reader InsertedArgsStack] r) => MutualBlock -> Sem r MutualBlock checkMutualBlock s = runReader emptyLocalVars (checkTopMutualBlock s) checkInductiveDef :: forall r. - (Members '[HighlightBuilder, Reader EntryPoint, Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, State TypesTable, State NegativeTypeParameters, Output Example, Termination, Output TypedHole, Output CastHole, Reader InsertedArgsStack, Reader LocalVars] r) => + (Members '[HighlightBuilder, Reader EntryPoint, Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, State TypesTable, State NegativeTypeParameters, Termination, Output TypedHole, Output CastHole, Reader InsertedArgsStack, Reader LocalVars] r) => InductiveDef -> Sem r InductiveDef checkInductiveDef InductiveDef {..} = runInferenceDef $ do @@ -177,12 +175,10 @@ checkInductiveDef InductiveDef {..} = runInferenceDef $ do constrs' <- mapM goConstructor _inductiveConstructors ty <- lookupInductiveType _inductiveName registerNameIdType (_inductiveName ^. nameId) ty - examples' <- mapM checkExample _inductiveExamples inductiveType' <- checkDefType _inductiveType let d = InductiveDef { _inductiveConstructors = constrs', - _inductiveExamples = examples', _inductiveType = inductiveType', _inductiveName, _inductiveBuiltin, @@ -206,12 +202,10 @@ checkInductiveDef InductiveDef {..} = runInferenceDef $ do goConstructor ConstructorDef {..} = do expectedRetTy <- lookupConstructorReturnType _inductiveConstructorName cty' <- checkIsType (getLoc _inductiveConstructorType) _inductiveConstructorType - examples' <- mapM checkExample _inductiveConstructorExamples whenJustM (matchTypes expectedRetTy ret) (const (errRet expectedRetTy)) let c' = ConstructorDef { _inductiveConstructorType = cty', - _inductiveConstructorExamples = examples', _inductiveConstructorName, _inductiveConstructorPragmas } @@ -230,11 +224,8 @@ checkInductiveDef InductiveDef {..} = runInferenceDef $ do } ) -withEmptyVars :: Sem (Reader LocalVars ': r) a -> Sem r a -withEmptyVars = runReader emptyLocalVars - checkTopMutualBlock :: - (Members '[HighlightBuilder, State NegativeTypeParameters, Reader EntryPoint, Reader LocalVars, Reader InfoTable, Error TypeCheckerError, NameIdGen, State TypesTable, State FunctionsTable, Output Example, Termination, Reader InsertedArgsStack] r) => + (Members '[HighlightBuilder, State NegativeTypeParameters, Reader EntryPoint, Reader LocalVars, Reader InfoTable, Error TypeCheckerError, NameIdGen, State TypesTable, State FunctionsTable, Termination, Reader InsertedArgsStack] r) => MutualBlock -> Sem r MutualBlock checkTopMutualBlock (MutualBlock ds) = @@ -242,7 +233,7 @@ checkTopMutualBlock (MutualBlock ds) = resolveCastHoles :: forall a r. - (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Inference, Output Example, Output TypedHole, State TypesTable, Termination, Reader InsertedArgsStack] r) => + (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Inference, Output TypedHole, State TypesTable, Termination, Reader InsertedArgsStack] r) => Sem (Output CastHole ': r) a -> Sem r a resolveCastHoles s = do @@ -271,7 +262,7 @@ resolveCastHoles s = do getNatTy = mkBuiltinInductive BuiltinNat checkMutualStatement :: - (Members '[HighlightBuilder, State NegativeTypeParameters, Reader EntryPoint, Inference, Reader LocalVars, Reader InfoTable, Error TypeCheckerError, NameIdGen, State TypesTable, State FunctionsTable, Output Example, Termination, Reader InsertedArgsStack] r) => + (Members '[HighlightBuilder, State NegativeTypeParameters, Reader EntryPoint, Inference, Reader LocalVars, Reader InfoTable, Error TypeCheckerError, NameIdGen, State TypesTable, State FunctionsTable, Termination, Reader InsertedArgsStack] r) => MutualStatement -> Sem r MutualStatement checkMutualStatement = \case @@ -299,13 +290,12 @@ unfoldFunType' e = do checkFunctionDef :: forall r. - (Members '[Reader LocalVars, Reader InfoTable, Error TypeCheckerError, NameIdGen, State TypesTable, State FunctionsTable, Output Example, Inference, Termination, Output TypedHole, Output CastHole, Reader InsertedArgsStack] r) => + (Members '[Reader LocalVars, Reader InfoTable, Error TypeCheckerError, NameIdGen, State TypesTable, State FunctionsTable, Inference, Termination, Output TypedHole, Output CastHole, Reader InsertedArgsStack] r) => FunctionDef -> Sem r FunctionDef checkFunctionDef FunctionDef {..} = do funDef <- do _funDefType' <- checkDefType _funDefType - _funDefExamples' <- mapM checkExample _funDefExamples registerIdenType _funDefName _funDefType' _funDefBody' <- checkFunctionBody _funDefType' _funDefBody params <- fst <$> unfoldFunType' _funDefType' @@ -314,7 +304,6 @@ checkFunctionDef FunctionDef {..} = do FunctionDef { _funDefBody = _funDefBody', _funDefType = _funDefType', - _funDefExamples = _funDefExamples', _funDefArgsInfo = _funDefArgsInfo', _funDefName, _funDefTerminating, @@ -349,7 +338,7 @@ checkFunctionDef FunctionDef {..} = do withLocalTypeMaybe (p ^. paramName) (p ^. paramType) (go rest) checkIsType :: - (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Reader LocalVars, Inference, Output Example, State TypesTable, Termination, Output TypedHole, Output CastHole, Reader InsertedArgsStack] r) => + (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Reader LocalVars, Inference, State TypesTable, Termination, Output TypedHole, Output CastHole, Reader InsertedArgsStack] r) => Interval -> Expression -> Sem r Expression @@ -357,7 +346,7 @@ checkIsType = checkExpression . smallUniverseE checkDefType :: forall r. - (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Reader LocalVars, Inference, Output Example, State TypesTable, Termination, Output TypedHole, Output CastHole, Reader InsertedArgsStack] r) => + (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Reader LocalVars, Inference, State TypesTable, Termination, Output TypedHole, Output CastHole, Reader InsertedArgsStack] r) => Expression -> Sem r Expression checkDefType ty = checkIsType loc ty @@ -436,18 +425,9 @@ checkCoercionType FunctionDef {..} = case mi of Explicit -> throw (ErrWrongCoercionArgument (WrongCoercionArgument fp)) ImplicitInstance -> throw (ErrWrongCoercionArgument (WrongCoercionArgument fp)) -checkExample :: - (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Output Example, State TypesTable, Termination, Reader InsertedArgsStack] r) => - Example -> - Sem r Example -checkExample e = do - e' <- withEmptyVars (runInferenceDef (traverseOf exampleExpression (fmap (^. typedExpression) . inferExpression Nothing >=> strongNormalize) e)) - output e' - return e' - checkExpression :: forall r. - (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Reader LocalVars, Inference, Output Example, Output TypedHole, State TypesTable, Termination, Output CastHole, Reader InsertedArgsStack] r) => + (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Reader LocalVars, Inference, Output TypedHole, State TypesTable, Termination, Output CastHole, Reader InsertedArgsStack] r) => Expression -> Expression -> Sem r Expression @@ -474,7 +454,7 @@ checkExpression expectedTy e = do resolveInstanceHoles :: forall a r. (HasExpressions a) => - (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Inference, Output Example, State TypesTable, Termination, Reader InsertedArgsStack] r) => + (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Inference, State TypesTable, Termination, Reader InsertedArgsStack] r) => Sem (Output TypedHole ': r) a -> Sem r a resolveInstanceHoles s = do @@ -492,7 +472,7 @@ resolveInstanceHoles s = do $ checkExpression _typedHoleType t checkFunctionParameter :: - (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Reader LocalVars, Inference, Output Example, State TypesTable, Termination, Output TypedHole, Output CastHole, Reader InsertedArgsStack] r) => + (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Reader LocalVars, Inference, State TypesTable, Termination, Output TypedHole, Output CastHole, Reader InsertedArgsStack] r) => FunctionParameter -> Sem r FunctionParameter checkFunctionParameter FunctionParameter {..} = do @@ -509,7 +489,7 @@ checkFunctionParameter FunctionParameter {..} = do } inferExpression :: - (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Reader LocalVars, Inference, Output Example, State TypesTable, Termination, Reader InsertedArgsStack] r) => + (Members '[Reader InfoTable, State FunctionsTable, Error TypeCheckerError, NameIdGen, Reader LocalVars, Inference, State TypesTable, Termination, Reader InsertedArgsStack] r) => -- | type hint Maybe Expression -> Expression -> @@ -524,7 +504,7 @@ lookupVar v = do err = error $ "internal error: could not find var " <> ppTrace v <> " at " <> ppTrace (getLoc v) checkFunctionBody :: - (Members '[Reader LocalVars, Reader InfoTable, NameIdGen, Error TypeCheckerError, Output Example, Output TypedHole, State TypesTable, State FunctionsTable, Inference, Termination, Output CastHole, Reader InsertedArgsStack] r) => + (Members '[Reader LocalVars, Reader InfoTable, NameIdGen, Error TypeCheckerError, Output TypedHole, State TypesTable, State FunctionsTable, Inference, Termination, Output CastHole, Reader InsertedArgsStack] r) => Expression -> Expression -> Sem r Expression @@ -550,7 +530,7 @@ checkFunctionBody expectedTy body = -- | helper function for lambda functions and case branches checkClause :: forall r. - (Members '[Reader InfoTable, State FunctionsTable, Reader LocalVars, Error TypeCheckerError, NameIdGen, Inference, Output Example, State TypesTable, Termination, Output TypedHole, Output CastHole, Reader InsertedArgsStack] r) => + (Members '[Reader InfoTable, State FunctionsTable, Reader LocalVars, Error TypeCheckerError, NameIdGen, Inference, State TypesTable, Termination, Output TypedHole, Output CastHole, Reader InsertedArgsStack] r) => Interval -> -- | Type Expression -> @@ -828,7 +808,7 @@ checkPattern = go inferExpression' :: forall r. - (Members '[Reader InfoTable, State FunctionsTable, State TypesTable, Reader LocalVars, Error TypeCheckerError, NameIdGen, Inference, Output Example, Output TypedHole, Termination, Output CastHole, Reader InsertedArgsStack, Reader InsertedArgsStack] r) => + (Members '[Reader InfoTable, State FunctionsTable, State TypesTable, Reader LocalVars, Error TypeCheckerError, NameIdGen, Inference, Output TypedHole, Termination, Output CastHole, Reader InsertedArgsStack, Reader InsertedArgsStack] r) => Maybe Expression -> Expression -> Sem r TypedExpression @@ -837,7 +817,7 @@ inferExpression' = holesHelper -- | Checks anything but an Application. Does not insert holes inferLeftAppExpression :: forall r. - (Members '[Reader InfoTable, State FunctionsTable, State TypesTable, Reader LocalVars, Error TypeCheckerError, NameIdGen, Inference, Output Example, Output TypedHole, Termination, Output CastHole, Reader InsertedArgsStack] r) => + (Members '[Reader InfoTable, State FunctionsTable, State TypesTable, Reader LocalVars, Error TypeCheckerError, NameIdGen, Inference, Output TypedHole, Termination, Output CastHole, Reader InsertedArgsStack] r) => Maybe Expression -> Expression -> Sem r TypedExpression @@ -1065,7 +1045,7 @@ inferLeftAppExpression mhint e = case e of return (TypedExpression kind (ExpressionIden i)) -- | The hint is used for trailing holes only -holesHelper :: forall r. (Members '[Reader InfoTable, State FunctionsTable, State TypesTable, Reader LocalVars, Error TypeCheckerError, NameIdGen, Inference, Output Example, Output TypedHole, Termination, Output CastHole, Reader InsertedArgsStack] r) => Maybe Expression -> Expression -> Sem r TypedExpression +holesHelper :: forall r. (Members '[Reader InfoTable, State FunctionsTable, State TypesTable, Reader LocalVars, Error TypeCheckerError, NameIdGen, Inference, Output TypedHole, Termination, Output CastHole, Reader InsertedArgsStack] r) => Maybe Expression -> Expression -> Sem r TypedExpression holesHelper mhint expr = do let (f, args) = unfoldExpressionApp expr hint diff --git a/src/Juvix/Compiler/Internal/Translation/FromInternal/Analysis/TypeChecking/Data/Context.hs b/src/Juvix/Compiler/Internal/Translation/FromInternal/Analysis/TypeChecking/Data/Context.hs index 9aa9c7f22f..34282b68c1 100644 --- a/src/Juvix/Compiler/Internal/Translation/FromInternal/Analysis/TypeChecking/Data/Context.hs +++ b/src/Juvix/Compiler/Internal/Translation/FromInternal/Analysis/TypeChecking/Data/Context.hs @@ -21,7 +21,6 @@ data InternalTypedResult = InternalTypedResult _resultModule :: Module, _resultInternalModule :: InternalModule, _resultTermination :: TerminationState, - _resultNormalized :: NormalizedTable, _resultIdenTypes :: TypesTable, _resultFunctions :: FunctionsTable }