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/branches/SMLNJ/src/compiler/Semant/modules/sigmatch.sml
ViewVC logotype

Diff of /sml/branches/SMLNJ/src/compiler/Semant/modules/sigmatch.sml

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

revision 142, Mon Sep 7 21:37:09 1998 UTC revision 143, Mon Sep 7 21:46:44 1998 UTC
# Line 286  Line 286 
286              if arity <> TU.tyconArity strTycon              if arity <> TU.tyconArity strTycon
287              then complain' ("tycon arity for " ^ specName              then complain' ("tycon arity for " ^ specName
288                              ^ " does not match specified arity")                              ^ " does not match specified arity")
289              else (case (specKind, TU.unWrapDefStar strTycon)              else (case (specKind, (* TU.unWrapDefStar *) strTycon)
290                          (* this call of unWrapDefStar causes bug 1364,
291                           * because it can't distinguish between ordinary
292                           * DEFtycs and datatype replication DEFtycs.
293                           * Claim: it's not needed in Repl case, because
294                           * Repl datatypes are GENtycs.
295                           *)
296                     of (DATATYPE{index,family={members,...} ,...},                     of (DATATYPE{index,family={members,...} ,...},
297                         GENtyc{arity=a',kind=DATATYPE{index=index',                         GENtyc{arity=a',kind=DATATYPE{index=index',
298                                family={members=members',...}, ...},                                family={members=members',...}, ...},
# Line 678  Line 684 
684                              (debugmsg ("$matchElems(TYCspec): "^S.name sym);                              (debugmsg ("$matchElems(TYCspec): "^S.name sym);
685                               raise EE.Unbound))                               raise EE.Unbound))
686    
687             | STRspec{sign=thisSpecSig, entVar, def, ...} =>             | STRspec{sign=thisSpecSig as SIG{elements=thisElements,...},
688                         entVar, def, ...} =>
689                (let val _ = debugmsg(String.concat["--matchElems STRspec: ",                (let val _ = debugmsg(String.concat["--matchElems STRspec: ",
690                                                    S.name sym,", ",                                                    S.name sym,", ",
691                                                    ST.stampToString entVar])                                                    ST.stampToString entVar])
# Line 686  Line 693 
693                       MU.getStr(strElements, strEntEnv, sym, rootAcc, rootInfo)                       MU.getStr(strElements, strEntEnv, sym, rootAcc, rootInfo)
694    
695                     (* verify spec definition, if any *)                     (* verify spec definition, if any *)
696                       (* BUG: shallow test, comparing stamps --                       (* matchDefStr now does the proper deep, component-wise
697                        * needs to be augmented with component-wise test when                        * comparison of specStr and strStr when their stamps
698                        * stamps disagree [dbm] *)                        * don't agree, but the error message printed
699                       (* how should this verification interact with signatures? *)                        * when definition spec is not matched leaves something
700                          * to be desired *)
701                     val _ =                     val _ =
702                         case def                         case def
703                           of NONE => ()                           of NONE => ()
704                            | SOME(sd,_) =>                            | SOME(sd,_) =>
705                               let val specStr = MU.strDefToStr(sd,entEnv)                               let val specStr = MU.strDefToStr(sd,entEnv)
706                                in if matchDefStr(sigElements,specStr,strStr) then ()                                in if matchDefStr(thisElements,specStr,strStr) then ()
707                                   else                                   else
708                                    (case sd                                    (case sd
709                                      of M.VARstrDef(sign,ep) =>                                      of M.VARstrDef(sign,ep) =>
# Line 1470  Line 1478 
1478  end (* structure SigMatch *)  end (* structure SigMatch *)
1479    
1480    
 (*  
  * $Log: sigmatch.sml,v $  
  * Revision 1.3  1998/05/23 14:10:11  george  
  *   Fixed RCS keyword syntax  
  *  
  *  
  *)  
   

Legend:
Removed from v.142  
changed lines
  Added in v.143

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