CVS: sml-dist/src/compiler/Elaborator/elaborate elabutil.sml, 1.9, 1.9.4.1
George Kuan <[email protected]> Mon, 19 Jun 2006 18:28:07 -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-serv24205/src/compiler/Elaborator/elaborate
Modified Files:
Tag: primop-branch-2
elabutil.sml
Log Message:
Propagating VARexp, CONpat, CONexp type change to ?? * ty option change
Index: elabutil.sml
===================================================================
RCS file: /cvsroot/smlnj/sml-dist/src/compiler/Elaborator/elaborate/elabutil.sml,v
retrieving revision 1.9
retrieving revision 1.9.4.1
diff -C2 -d -r1.9 -r1.9.4.1
*** elabutil.sml 12 Oct 2004 22:47:46 -0000 1.9
--- elabutil.sml 20 Jun 2006 01:28:00 -0000 1.9.4.1
***************
*** 85,101 ****
! val TRUEpat = CONpat(trueDcon,[])
! val TRUEexp = CONexp(trueDcon,[])
! val FALSEpat = CONpat(falseDcon,[])
! val FALSEexp = CONexp(falseDcon,[])
! val NILpat = CONpat(nilDcon,[])
! val NILexp = CONexp(nilDcon,[])
val CONSpat = fn pat => APPpat(consDcon,[],pat)
! val CONSexp = CONexp(consDcon,[])
val unitExp = AbsynUtil.unitExp
val unitPat = RECORDpat{fields = nil, flex = false, typ = ref UNDEFty}
! val bogusExp = VARexp(ref(V.mkVALvar(bogusID, A.nullAcc)), [])
(* Verifies that all the elements of a list are unique *)
--- 85,101 ----
! val TRUEpat = CONpat(trueDcon,NONE) (** These constructors were updated to the ty option type - GK *)
! val TRUEexp = CONexp(trueDcon,NONE)
! val FALSEpat = CONpat(falseDcon,NONE)
! val FALSEexp = CONexp(falseDcon,NONE)
! val NILpat = CONpat(nilDcon,NONE)
! val NILexp = CONexp(nilDcon,NONE)
val CONSpat = fn pat => APPpat(consDcon,[],pat)
! val CONSexp = CONexp(consDcon,NONE)
val unitExp = AbsynUtil.unitExp
val unitPat = RECORDpat{fields = nil, flex = false, typ = ref UNDEFty}
! val bogusExp = VARexp(ref(V.mkVALvar(bogusID, A.nullAcc)), NONE)
(* Verifies that all the elements of a list are unique *)
***************
*** 250,255 ****
(fn marker =>
RULE(WILDpat,
! marker(RAISEexp(CONexp(CoreAccess.getExn(env,name),[]),
UNDEFty))))
val trivialCompleteMatch = completeMatch(SE.empty,"Match")
--- 250,256 ----
(fn marker =>
RULE(WILDpat,
! marker(RAISEexp(CONexp(CoreAccess.getExn(env,name),NONE),
UNDEFty))))
+ (** Updated to the ty option type - GK *)
val trivialCompleteMatch = completeMatch(SE.empty,"Match")
***************
*** 282,290 ****
of [(v, nv, sym)] =>
(VALdec [VB{pat=VARpat nv, boundtvs=[], tyvars=tyvars,
! exp=LETexp(odec, VARexp(ref v, []))}])
| _ =>
! (let val vs = map (fn (v, _, _) => VARexp(ref v, [])) vars
val rootv = newVALvar(internalSym, mkv)
! val rvexp = VARexp(ref rootv, [])
val nvdec =
VALdec([VB{pat=VARpat rootv, boundtvs=[], tyvars=tyvars,
--- 283,291 ----
of [(v, nv, sym)] =>
(VALdec [VB{pat=VARpat nv, boundtvs=[], tyvars=tyvars,
! exp=LETexp(odec, VARexp(ref v, NONE))}]) (** Updated to the ty option type -GK *)
| _ =>
! (let val vs = map (fn (v, _, _) => VARexp(ref v, NONE)) vars (** Updated to the ty option type -GK*)
val rootv = newVALvar(internalSym, mkv)
! val rvexp = VARexp(ref rootv, NONE) (** Updated to the ty option type -GK *)
val nvdec =
VALdec([VB{pat=VARpat rootv, boundtvs=[], tyvars=tyvars,
***************
*** 327,331 ****
fun not1(f,[a]) = a
| not1(f,l) = f l
! fun dovar valvar = VARexp(ref(valvar),[])
fun doclause ({pats,exp,resultty=NONE}) =
RULE(not1(TUPLEpat,pats), exp)
--- 328,332 ----
fun not1(f,[a]) = a
| not1(f,l) = f l
! fun dovar valvar = VARexp(ref(valvar),NONE) (** Updated to the ty option type - GK *)
fun doclause ({pats,exp,resultty=NONE}) =
RULE(not1(TUPLEpat,pats), exp)
***************
*** 363,367 ****
fun makeHANDLEexp(exp, rules, compInfo as {mkLvar=mkv, ...}: compInfo) =
let val v = newVALvar(exnID, mkv)
! val r = RULE(VARpat v, RAISEexp(VARexp(ref(v),[]),UNDEFty))
val rules = completeMatch' r rules
in HANDLEexp(exp, (rules,UNDEFty))
--- 364,368 ----
fun makeHANDLEexp(exp, rules, compInfo as {mkLvar=mkv, ...}: compInfo) =
let val v = newVALvar(exnID, mkv)
! val r = RULE(VARpat v, RAISEexp(VARexp(ref(v),NONE),UNDEFty)) (** Updated to the ty option type - GK*)
val rules = completeMatch' r rules
in HANDLEexp(exp, (rules,UNDEFty))
***************
*** 376,380 ****
of SymPath.SPATH[id] =>
((case LU.lookValSym (env,id,fn _ => raise SE.Unbound)
! of V.CON c => CONpat(c,[])
| _ => VARpat(newVALvar(id,mkv)))
handle SE.Unbound => VARpat(newVALvar(id,mkv)))
--- 377,381 ----
of SymPath.SPATH[id] =>
((case LU.lookValSym (env,id,fn _ => raise SE.Unbound)
! of V.CON c => CONpat(c,NONE) (** Updated to the ty option type - GK *)
| _ => VARpat(newVALvar(id,mkv)))
handle SE.Unbound => VARpat(newVALvar(id,mkv)))
***************
*** 386,391 ****
SymPath.toString spath)
nullErrorBody;
! (bogusCON,[]))
! | V.CON c => (c,[]))
handle SE.Unbound => bug "unbound untrapped")
--- 387,392 ----
SymPath.toString spath)
nullErrorBody;
! (bogusCON,NONE)) (** Updated to ty option type -GK*)
! | V.CON c => (c,NONE)) (** Updated to ty option type -GK*)
handle SE.Unbound => bug "unbound untrapped")
***************
*** 418,422 ****
fun makeAPPpat err (CONpat(d as DATACON{const=false,lazyp,...},t),p) =
! let val p1 = APPpat(d,t,p)
in if lazyp (* LAZY *)
then APPpat(BT.dollarDcon, [], p1)
--- 419,424 ----
fun makeAPPpat err (CONpat(d as DATACON{const=false,lazyp,...},t),p) =
! let val t' = (case t of NONE => [] | SOME t'' => [t'']) (** Need for ty option containing CONpat -GK*)
! val p1 = APPpat(d,t',p) (** Updated to ty option type -GK *)
in if lazyp (* LAZY *)
then APPpat(BT.dollarDcon, [], p1)