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)