Skip to content

Commit

Permalink
fix repl
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaszcz committed May 15, 2024
1 parent 8745dc6 commit 4d56a3c
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 13 deletions.
8 changes: 4 additions & 4 deletions src/Juvix/Compiler/Internal/Translation/FromInternal.hs
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,7 @@ typeCheckExpressionType ::
typeCheckExpressionType exp = do
-- TODO: refactor: modules outside of REPL should not refer to Artifacts
table <- extendedTableReplArtifacts exp
runTypesTableArtifacts
. runFunctionsTableArtifacts
. runResultBuilderArtifacts
runResultBuilderArtifacts
. runBuiltinsArtifacts
. runNameIdGenArtifacts
. ignoreHighlightBuilder
Expand Down Expand Up @@ -88,5 +86,7 @@ typeCheckingNew a = do
_resultInternalModule = md,
_resultTermination = termin,
_resultIdenTypes = bst ^. resultBuilderStateCombinedTypesTable,
_resultFunctions = bst ^. resultBuilderStateCombinedFunctionsTable
_resultFunctions = bst ^. resultBuilderStateCombinedFunctionsTable,
_resultInstances = bst ^. resultBuilderStateCombinedInstanceTable,
_resultCoercions = bst ^. resultBuilderStateCombinedCoercionTable
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,16 @@ module Juvix.Compiler.Internal.Translation.FromInternal.Analysis.TypeChecking
module Juvix.Compiler.Internal.Translation.FromInternal.Analysis.TypeChecking.Data.ResultBuilder,
module Juvix.Compiler.Store.Internal.Data.FunctionsTable,
module Juvix.Compiler.Store.Internal.Data.TypesTable,
module Juvix.Compiler.Store.Internal.Data.InstanceInfo,
module Juvix.Compiler.Store.Internal.Data.CoercionInfo,
)
where

import Juvix.Compiler.Internal.Translation.FromInternal.Analysis.TypeChecking.CheckerNew
import Juvix.Compiler.Internal.Translation.FromInternal.Analysis.TypeChecking.Data.Context
import Juvix.Compiler.Internal.Translation.FromInternal.Analysis.TypeChecking.Data.Inference
import Juvix.Compiler.Internal.Translation.FromInternal.Analysis.TypeChecking.Data.ResultBuilder
import Juvix.Compiler.Store.Internal.Data.CoercionInfo
import Juvix.Compiler.Store.Internal.Data.FunctionsTable
import Juvix.Compiler.Store.Internal.Data.InstanceInfo
import Juvix.Compiler.Store.Internal.Data.TypesTable
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ data InternalTypedResult = InternalTypedResult
_resultInternalModule :: InternalModule,
_resultTermination :: TerminationState,
_resultIdenTypes :: TypesTable,
_resultFunctions :: FunctionsTable
_resultFunctions :: FunctionsTable,
_resultInstances :: InstanceTable,
_resultCoercions :: CoercionTable
}

data ImportContext = ImportContext
Expand Down
14 changes: 6 additions & 8 deletions src/Juvix/Compiler/Pipeline/Artifacts.hs
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,6 @@ runNameIdGenArtifacts ::
Sem r a
runNameIdGenArtifacts = runStateLikeArtifacts runNameIdGen artifactNameIdState

runFunctionsTableArtifacts :: (Members '[State Artifacts] r) => Sem (State FunctionsTable ': r) a -> Sem r a
runFunctionsTableArtifacts = runStateArtifacts artifactFunctions

readerFunctionsTableArtifacts :: (Members '[State Artifacts] r) => Sem (Reader FunctionsTable ': r) a -> Sem r a
readerFunctionsTableArtifacts = runReaderArtifacts artifactFunctions

Expand All @@ -80,9 +77,6 @@ readerTypesTableArtifacts = runReaderArtifacts artifactTypes
runTerminationArtifacts :: (Members '[Error JuvixError, State Artifacts] r) => Sem (Termination ': r) a -> Sem r a
runTerminationArtifacts = runStateLikeArtifacts runTermination artifactTerminationState

runTypesTableArtifacts :: (Members '[State Artifacts] r) => Sem (State TypesTable ': r) a -> Sem r a
runTypesTableArtifacts = runStateArtifacts artifactTypes

runStateArtifacts :: (Members '[State Artifacts] r) => Lens' Artifacts f -> Sem (State f ': r) a -> Sem r a
runStateArtifacts = runStateLikeArtifacts runState

Expand All @@ -107,14 +101,18 @@ runResultBuilderArtifacts :: forall r a. (Members '[State Artifacts] r) => Sem (
runResultBuilderArtifacts m = do
ftab <- gets (^. artifactFunctions)
ttab <- gets (^. artifactTypes)
itab <- gets (^. artifactInstances)
ctab <- gets (^. artifactCoercions)
let importCtx =
ImportContext
{ _importContextCoercions = mempty,
_importContextInstances = mempty,
{ _importContextCoercions = ctab,
_importContextInstances = itab,
_importContextFunctionsTable = ftab,
_importContextTypesTable = ttab
}
(s, a) <- runResultBuilder importCtx m
modify' (set artifactFunctions (s ^. resultBuilderStateCombinedFunctionsTable))
modify' (set artifactTypes (s ^. resultBuilderStateCombinedTypesTable))
modify' (set artifactInstances (s ^. resultBuilderStateCombinedInstanceTable))
modify' (set artifactCoercions (s ^. resultBuilderStateCombinedCoercionTable))
return a
4 changes: 4 additions & 0 deletions src/Juvix/Compiler/Pipeline/Artifacts/Base.hs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import Juvix.Compiler.Internal.Translation.FromConcrete qualified as Internal
import Juvix.Compiler.Internal.Translation.FromInternal.Analysis.Termination.Checker
import Juvix.Compiler.Internal.Translation.FromInternal.Analysis.TypeChecking.Data.Context
import Juvix.Compiler.Pipeline.Loader.PathResolver.Data
import Juvix.Compiler.Store.Internal.Data.CoercionInfo
import Juvix.Compiler.Store.Internal.Data.InstanceInfo
import Juvix.Compiler.Store.Language qualified as Store
import Juvix.Prelude

Expand All @@ -29,6 +31,8 @@ data Artifacts = Artifacts
-- Typechecking
_artifactTypes :: TypesTable,
_artifactFunctions :: FunctionsTable,
_artifactInstances :: InstanceTable,
_artifactCoercions :: CoercionTable,
-- | This includes the InfoTable from all type checked modules
_artifactInternalTypedTable :: Internal.InfoTable,
-- Core
Expand Down
10 changes: 10 additions & 0 deletions src/Juvix/Compiler/Pipeline/Run.hs
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,12 @@ runReplPipelineIOEither' lockMode entry = do
functionsTable :: Typed.FunctionsTable
functionsTable = typedResult ^. Typed.resultFunctions

instanceTable :: Typed.InstanceTable
instanceTable = typedResult ^. Typed.resultInstances

coercionTable :: Typed.CoercionTable
coercionTable = typedResult ^. Typed.resultCoercions

typedTable :: Internal.InfoTable
typedTable = typedResult ^. Typed.resultInternalModule . Typed.internalModuleInfoTable

Expand Down Expand Up @@ -226,6 +232,8 @@ runReplPipelineIOEither' lockMode entry = do
_artifactScopeExports = scopedResult ^. Scoped.resultExports,
_artifactTypes = typesTable,
_artifactFunctions = functionsTable,
_artifactInstances = instanceTable,
_artifactCoercions = coercionTable,
_artifactScoperState = scopedResult ^. Scoped.resultScoperState,
_artifactResolver = art ^. artifactResolver,
_artifactBuiltins = art ^. artifactBuiltins,
Expand All @@ -244,6 +252,8 @@ runReplPipelineIOEither' lockMode entry = do
_artifactNameIdState = genNameIdState defaultModuleId,
_artifactTypes = mempty,
_artifactFunctions = mempty,
_artifactInstances = mempty,
_artifactCoercions = mempty,
_artifactCoreModule = Core.emptyModule,
_artifactScopeTable = mempty,
_artifactBuiltins = iniBuiltins,
Expand Down

0 comments on commit 4d56a3c

Please sign in to comment.