Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/ckit/src/ast/build-ast.sml
ViewVC logotype

Diff of /sml/trunk/ckit/src/ast/build-ast.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 653, Wed Jun 7 07:59:06 2000 UTC revision 654, Thu Jun 8 21:38:04 2000 UTC
# Line 899  Line 899 
899               So, we might have to fix up the type!               So, we might have to fix up the type!
900               *)               *)
901    
902            val (initExprOpt, ty) =            (* DBM: return fixed id as well, to fix Bug 19 *)
903              val (initExprOpt, ty, id) =
904                case expr                case expr
905                  of PT.EmptyExpr => (NONE, ty)                  of PT.EmptyExpr => (NONE, ty, id)
906                   | _ =>                   | _ =>
907                      let                      let
908                        val e = cnvInitExpression expr                        val e = cnvInitExpression expr
909                        val _ = constCheckIE e                        val _ = constCheckIE e
910                        val (e',ty') = checkInitializer(ty, e, auto)                        val (e',ty') = checkInitializer(ty, e, auto)
911                       in                        val id' =
912                         if equalType(ty', ty) then ()  (* nothing more to do *)                         if equalType(ty', ty) then id (* no fix for id required *)
913                         else (* fix up type of id *)                         else (* fix up type of id *)
914                           (case lookSym varSym of                           (case lookSym varSym
915                              SOME(B.ID x) =>                              of SOME(B.ID x) =>
916                                let val {name, uid, location, ctype, stClass, status, global, kind} = x                                  let val {name, uid, location, ctype, stClass,
917                                  val id =                                           status, global, kind} = x
918                                    {name=name, uid=uid, location=location, ctype=ty',                                      val newid = {name=name, uid=uid, location=location,
919                                     stClass=stClass, status=status, global=global, kind=kind}                                                   ctype=ty', stClass=stClass,
920                                in                                                   status=status, global=global,
921                                  bindSym (varSym, ID id)                                                   kind=kind}
922                                     in bindSym (varSym, ID newid);
923                                        newid
924                                end                                end
925                            | _ => ()  (* can never arise: id must have ID binding *)                               | _ => id)  (* can never arise: id must have ID binding *)
926                           );                       in (SOME e', ty', id')
                        (SOME e', ty')  
927                      end                      end
928    
929            (* Now do storage size check: can't do it earlier, because type might            (* Now do storage size check: can't do it earlier, because type might

Legend:
Removed from v.653  
changed lines
  Added in v.654

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0