CVS: sml-dist/src/compiler/Elaborator/elaborate elabcore.sml, 1.8, 1.8.4.1
George Kuan <[email protected]> Mon, 19 Jun 2006 21:18:14 -0700
| Newsgroups | gmane.comp.lang.sml.smlnj.commits |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/smlnj/sml-dist/src/compiler/Elaborator/elaborate
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv18394/src/compiler/Elaborator/elaborate
Modified Files:
Tag: primop-branch-2
elabcore.sml
Log Message:
Moved PrimOp dependent TypesUtil.isValue function to Semant/types/typecheck module and SigMatchFn.sml to Semant/modules/
Index: elabcore.sml
===================================================================
RCS file: /cvsroot/smlnj/sml-dist/src/compiler/Elaborator/elaborate/elabcore.sml,v
retrieving revision 1.8
retrieving revision 1.8.4.1
diff -C2 -d -r1.8 -r1.8.4.1
*** elabcore.sml 11 Oct 2004 22:57:55 -0000 1.8
--- elabcore.sml 20 Jun 2006 04:18:10 -0000 1.8.4.1
***************
*** 95,99 ****
val dummyFNexp =
! FNexp([RULE(WILDpat,RAISEexp(CONexp(V.bogusEXN,[]),UNDEFty))],UNDEFty)
(* LAZY *)
--- 95,100 ----
val dummyFNexp =
! FNexp([RULE(WILDpat,RAISEexp(CONexp(V.bogusEXN,NONE),UNDEFty))],UNDEFty)
! (** Updated CONexp ty option type -GK *)
(* LAZY *)
***************
*** 117,126 ****
of V.VAL v => v
| _ => bug "lazy 2"
! val assignExp = VARexp(ref assignVar,[])
! val bangExp = VARexp(ref bangVar,[])
*)
local
! fun mkCoreExp name env = VARexp (ref (CoreAccess.getVar(env, name)), [])
in
val mkAssignExp = mkCoreExp "assign"
--- 118,127 ----
of V.VAL v => v
| _ => bug "lazy 2"
! val assignExp = VARexp(ref assignVar,NONE)
! val bangExp = VARexp(ref bangVar,NONE)
*)
local
! fun mkCoreExp name env = VARexp (ref (CoreAccess.getVar(env, name)), NONE)
in
val mkAssignExp = mkCoreExp "assign"
***************
*** 171,175 ****
let val v = newVALvar(S.varSymbol "x")
in APPexp(FNexp(completeMatch[RULE(APPpat(BT.dollarDcon,[],VARpat v),
! VARexp(ref v,[]))],
UNDEFty),
e)
--- 172,176 ----
let val v = newVALvar(S.varSymbol "x")
in APPexp(FNexp(completeMatch[RULE(APPpat(BT.dollarDcon,[],VARpat v),
! VARexp(ref v,NONE))],
UNDEFty),
e)
***************
*** 179,183 ****
fun delayExp e =
! APPexp(CONexp(BT.dollarDcon,[]), e)
(* lrvbMakeY n: build declaration of n-ary Y combinator for lazy val rec *)
--- 180,184 ----
fun delayExp e =
! APPexp(CONexp(BT.dollarDcon,NONE), e)
(* lrvbMakeY n: build declaration of n-ary Y combinator for lazy val rec *)
***************
*** 205,210 ****
(* "ref($(raise Match))" *)
! fun rdrExp _ = APPexp(CONexp(BT.refDcon,[]),
! delayExp(RAISEexp(CONexp(exn,[]),UNDEFty)))
val rpat = TUPLEpat (map VARpat rvars)
val rexp = TUPLEexp (repeat rdrExp)
--- 206,211 ----
(* "ref($(raise Match))" *)
! fun rdrExp _ = APPexp(CONexp(BT.refDcon,NONE),
! delayExp(RAISEexp(CONexp(exn,NONE),UNDEFty)))
val rpat = TUPLEpat (map VARpat rvars)
val rexp = TUPLEexp (repeat rdrExp)
***************
*** 212,224 ****
(* "$(force(!ri))" *)
! fun dfbr rv = hold(APPexp(mkBangExp env,VARexp(ref rv,[])))
val ddec = VALdec[VB{pat=VARpat dvar, exp=TUPLEexp(map dfbr rvars),
boundtvs=[],tyvars=ref[]}]
! fun dexp () = VARexp(ref dvar,[])
fun setrExp (rv,fv) =
APPexp(mkAssignExp env,
! TUPLEexp([VARexp(ref rv,[]),
! hold(APPexp(VARexp(ref fv,[]),dexp()))]))
val updates = ListPair.map setrExp (rvars,fvars)
--- 213,225 ----
(* "$(force(!ri))" *)
! fun dfbr rv = hold(APPexp(mkBangExp env,VARexp(ref rv,NONE)))
val ddec = VALdec[VB{pat=VARpat dvar, exp=TUPLEexp(map dfbr rvars),
boundtvs=[],tyvars=ref[]}]
! fun dexp () = VARexp(ref dvar,NONE)
fun setrExp (rv,fv) =
APPexp(mkAssignExp env,
! TUPLEexp([VARexp(ref rv,NONE),
! hold(APPexp(VARexp(ref fv,NONE),dexp()))]))
val updates = ListPair.map setrExp (rvars,fvars)
***************
*** 456,472 ****
of VarExp path =>
((case LU.lookVal(env,SP.SPATH path,error region)
! of V.VAL v => VARexp(ref v,[])
| V.CON(d as DATACON{lazyp,const,...}) =>
if lazyp then (* LAZY *)
! if const then delayExp(CONexp(d,[]))
else let val var = newVALvar(S.varSymbol "x")
in FNexp(completeMatch
[RULE(VARpat(var),
delayExp(
! APPexp(CONexp(d,[]),
! VARexp(ref(var),[]))))],
UNDEFty (* DBM: ? *))
end
! else CONexp(d, [])),
TS.empty, no_updt)
| IntExp s =>
--- 457,473 ----
of VarExp path =>
((case LU.lookVal(env,SP.SPATH path,error region)
! of V.VAL v => VARexp(ref v,NONE)
| V.CON(d as DATACON{lazyp,const,...}) =>
if lazyp then (* LAZY *)
! if const then delayExp(CONexp(d,NONE))
else let val var = newVALvar(S.varSymbol "x")
in FNexp(completeMatch
[RULE(VARpat(var),
delayExp(
! APPexp(CONexp(d,NONE),
! VARexp(ref(var),NONE))))],
UNDEFty (* DBM: ? *))
end
! else CONexp(d, NONE)),
TS.empty, no_updt)
| IntExp s =>
***************
*** 580,584 ****
[RULE(RECORDpat{fields=[(s,VARpat v)], flex=true,
typ= ref UNDEFty},
! cMARKexp(VARexp(ref v,[]),region))],UNDEFty)
end,
TS.empty, no_updt)
--- 581,585 ----
[RULE(RECORDpat{fields=[(s,VARpat v)], flex=true,
typ= ref UNDEFty},
! cMARKexp(VARexp(ref v,NONE),region))],UNDEFty)
end,
TS.empty, no_updt)
***************
*** 814,818 ****
(let val (newpat,oldvars,newvars) = patproc(pat, compInfo)
(* this is the only call of patproc *)
! val b = map (fn v => VARexp(ref v,[])) newvars
val r = RULE(newpat, TUPLEexp(b))
val newexp = CASEexp(exp, completeBind[r], false)
--- 815,819 ----
(let val (newpat,oldvars,newvars) = patproc(pat, compInfo)
(* this is the only call of patproc *)
! val b = map (fn v => VARexp(ref v,NONE)) newvars
val r = RULE(newpat, TUPLEexp(b))
val newexp = CASEexp(exp, completeBind[r], false)
***************
*** 827,831 ****
(let val nv = newVALvar internalSym
val nvpat = VARpat(nv)
! val nvexp = VARexp(ref nv, [])
val nvdec =
--- 828,832 ----
(let val nv = newVALvar internalSym
val nvpat = VARpat(nv)
! val nvexp = VARexp(ref nv, NONE)
val nvdec =
***************
*** 990,994 ****
val declAppY =
VALdec[VB{pat=TUPLEpat(map VARpat lhsVars),
! exp=APPexp(VARexp(ref yvar,[]),TUPLEexp fns),
tyvars=tvref,boundtvs=[]}]
--- 991,995 ----
val declAppY =
VALdec[VB{pat=TUPLEpat(map VARpat lhsVars),
! exp=APPexp(VARexp(ref yvar,NONE),TUPLEexp fns),
tyvars=tvref,boundtvs=[]}]
***************
*** 997,1004 ****
val vb = if lazyp
then VB{pat=VARpat var2,
! exp=VARexp (ref var1,[]),boundtvs=[],
tyvars=ref[]}
else VB{pat=APPpat(BT.dollarDcon,[],(VARpat var2)),
! exp=VARexp (ref var1,[]),boundtvs=[],
tyvars=ref[]}
in (vb::vbs,var2::vars)
--- 998,1005 ----
val vb = if lazyp
then VB{pat=VARpat var2,
! exp=VARexp (ref var1,NONE),boundtvs=[],
tyvars=ref[]}
else VB{pat=APPpat(BT.dollarDcon,[],(VARpat var2)),
! exp=VARexp (ref var1,NONE),boundtvs=[],
tyvars=ref[]}
in (vb::vbs,var2::vars)