diff -r 1f7c69a5faac -r f3ce97b5661a src/Pure/Tools/codegen_thingol.ML --- a/src/Pure/Tools/codegen_thingol.ML Mon Mar 13 10:41:04 2006 +0100 +++ b/src/Pure/Tools/codegen_thingol.ML Tue Mar 14 14:25:09 2006 +0100 @@ -75,7 +75,7 @@ | Classmember of class | Classinst of ((class * (string * (vname * sort) list)) * (class * (string * iclasslookup list list)) list) - * (string * (string * funn)) list + * (string * ((string * funn) * iclasslookup list list)) list | Classinstmember; type module; type transact; @@ -419,7 +419,7 @@ | Classmember of class | Classinst of ((class * (string * (vname * sort) list)) * (class * (string * iclasslookup list list)) list) - * (string * (string * funn)) list + * (string * ((string * funn) * iclasslookup list list)) list | Classinstmember; datatype node = Def of def | Module of node Graph.T; @@ -799,12 +799,12 @@ fun mk_memdef (m, (sortctxt, ty)) = case AList.lookup (op =) memdefs m of NONE => error ("missing definition for member " ^ quote m) - | SOME (m', (eqs, (sortctxt', ty'))) => + | SOME ((m', (eqs, (sortctxt', ty'))), lss) => let val sortctxt'' = sortctxt |> fold (fn v_sort => AList.update (op =) v_sort) arity; val ty'' = instant_itype (instant (v, tyco `%% map (ITyVar o fst) arity)) ty; in if eq_ityp ((sortctxt'', ty''), (sortctxt', ty')) - then (m, (m', (check_funeqs eqs, (sortctxt', ty')))) + then (m, ((m', (check_funeqs eqs, (sortctxt', ty'))), lss)) else error ("inconsistent type for member definition " ^ quote m ^ " [" ^ v ^ "]: " ^ (Pretty.output o Pretty.block o Pretty.breaks) [ @@ -839,8 +839,8 @@ ) membrs ) | postprocess_def (name, Classinst (_, memdefs)) = - (check_samemodule (name :: map (fst o snd) memdefs); - fold (fn (_, (m', _)) => + (check_samemodule (name :: map (fst o fst o snd) memdefs); + fold (fn (_, ((m', _), _)) => add_def_incr (m', Classinstmember) ) memdefs )