# HG changeset patch # User haftmann # Date 1279282268 -7200 # Node ID f26becedaeb10e066bf18c853cd79de01cc6df2f # Parent 336dae59af03b3432e7fe369ee7d67e482e89dc9 tuned diff -r 336dae59af03 -r f26becedaeb1 src/Tools/Code/code_target.ML --- a/src/Tools/Code/code_target.ML Fri Jul 16 13:58:37 2010 +0200 +++ b/src/Tools/Code/code_target.ML Fri Jul 16 14:11:08 2010 +0200 @@ -425,32 +425,32 @@ fun read_inst thy (raw_tyco, raw_class) = (read_class thy raw_class, read_tyco thy raw_tyco); -fun gen_add_syntax (mapp, upd, del) prep_x prep_syn check target raw_x some_raw_syn thy = +fun gen_add_syntax (mapp, upd, del) prep_x prep_syn target raw_x some_raw_syn thy = let val x = prep_x thy raw_x; - fun make_syn raw_syn = (check thy x raw_syn: unit; prep_syn raw_syn); - in case some_raw_syn - of SOME raw_syn => (map_name_syntax target o mapp) (upd (x, make_syn raw_syn)) thy - | NONE => (map_name_syntax target o mapp) (del x) thy - end; + val change = case some_raw_syn + of SOME raw_syn => upd (x, prep_syn thy x raw_syn) + | NONE => del x; + in (map_name_syntax target o mapp) change thy end; fun gen_add_syntax_class prep_class = - gen_add_syntax (apfst o apfst, Symtab.update, Symtab.delete_safe) prep_class I ((K o K o K) ()); + gen_add_syntax (apfst o apfst, Symtab.update, Symtab.delete_safe) prep_class ((K o K) I); fun gen_add_syntax_inst prep_inst = - gen_add_syntax (apfst o apsnd, Symreltab.update, Symreltab.delete_safe) prep_inst I ((K o K o K) ()); + gen_add_syntax (apfst o apsnd, Symreltab.update, Symreltab.delete_safe) prep_inst ((K o K) I); fun gen_add_syntax_tyco prep_tyco = - gen_add_syntax (apsnd o apfst, Symtab.update, Symtab.delete_safe) prep_tyco I - (fn thy => fn tyco => fn (n, _) => if n <> Sign.arity_number thy tyco + gen_add_syntax (apsnd o apfst, Symtab.update, Symtab.delete_safe) prep_tyco + (fn thy => fn tyco => fn syn => if fst syn <> Sign.arity_number thy tyco then error ("Number of arguments mismatch in syntax for type constructor " ^ quote tyco) - else ()); + else syn); -fun gen_add_syntax_const prep_const prep_syn check_raw_syn = - gen_add_syntax (apsnd o apsnd, Symtab.update, Symtab.delete_safe) prep_const prep_syn - (fn thy => fn c => fn (n, _) => if n > Code.args_number thy c +fun gen_add_syntax_const prep_const prep_syn = + gen_add_syntax (apsnd o apsnd, Symtab.update, Symtab.delete_safe) prep_const + (fn thy => fn c => fn raw_syn => let val syn = prep_syn raw_syn in + if fst syn > Code.args_number thy c then error ("Too many arguments in syntax for constant " ^ quote c) - else ()) check_raw_syn; + else syn end); fun add_reserved target = let