Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Alex D
GHC
Commits
e296ab05
Commit
e296ab05
authored
Aug 23, 2006
by
ei@vuokko.info
Browse files
Add dynCompileExpr
parent
b43bef57
Changes
1
Hide whitespace changes
Inline
Side-by-side
compiler/main/GHC.hs
View file @
e296ab05
...
...
@@ -78,7 +78,7 @@ module GHC (
RunResult
(
..
),
runStmt
,
showModule
,
compileExpr
,
HValue
,
compileExpr
,
HValue
,
dynCompileExpr
,
lookupName
,
#
endif
...
...
@@ -175,6 +175,7 @@ module GHC (
#
ifdef
GHCI
import
qualified
Linker
import
Data.Dynamic
(
Dynamic
)
import
Linker
(
HValue
,
extendLinkEnv
)
import
TcRnDriver
(
tcRnLookupRdrName
,
tcRnGetInfo
,
tcRnLookupName
,
getModuleExports
)
...
...
@@ -230,7 +231,7 @@ import SysTools ( initSysTools, cleanTempFiles, cleanTempFilesExcept,
cleanTempDirs
)
import
Module
import
UniqFM
import
PackageConfig
(
PackageId
)
import
PackageConfig
(
PackageId
,
stringToPackageId
)
import
FiniteMap
import
Panic
import
Digraph
...
...
@@ -2020,6 +2021,27 @@ compileExpr s expr = withSession s $ \hsc_env -> do
([
n
],[
hv
])
->
return
(
Just
hv
)
_
->
panic
"compileExpr"
-- -----------------------------------------------------------------------------
-- Compile an expression into a dynamic
dynCompileExpr
::
Session
->
String
->
IO
(
Maybe
Dynamic
)
dynCompileExpr
ses
expr
=
do
(
full
,
exports
)
<-
getContext
ses
setContext
ses
full
$
(
mkModule
(
stringToPackageId
"base"
)
(
mkModuleName
"Data.Dynamic"
)
)
:
exports
let
stmt
=
"let __dynCompileExpr = Data.Dynamic.toDyn ("
++
expr
++
")"
res
<-
withSession
ses
(
flip
hscStmt
stmt
)
setContext
ses
full
exports
case
res
of
Nothing
->
return
Nothing
Just
(
_
,
names
,
hvals
)
->
do
vals
<-
(
unsafeCoerce
#
hvals
::
IO
[
Dynamic
])
case
(
names
,
vals
)
of
(
_
:
[]
,
v
:
[]
)
->
return
(
Just
v
)
_
->
panic
"dynCompileExpr"
-- -----------------------------------------------------------------------------
-- running a statement interactively
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment