src/HOL/Tools/record_package.ML
changeset 18928 042608ffa2ec
parent 18858 ceb93f3af7f0
child 18931 427df66052a1
equal deleted inserted replaced
18927:2e5b0f3f1418 18928:042608ffa2ec
  2058     val err_dup_record =
  2058     val err_dup_record =
  2059       if is_none (get_record thy name) then []
  2059       if is_none (get_record thy name) then []
  2060       else ["Duplicate definition of record " ^ quote name];
  2060       else ["Duplicate definition of record " ^ quote name];
  2061 
  2061 
  2062     val err_dup_parms =
  2062     val err_dup_parms =
  2063       (case duplicates params of
  2063       (case gen_duplicates (op =) params of
  2064         [] => []
  2064         [] => []
  2065       | dups => ["Duplicate parameter(s) " ^ commas dups]);
  2065       | dups => ["Duplicate parameter(s) " ^ commas dups]);
  2066 
  2066 
  2067     val err_extra_frees =
  2067     val err_extra_frees =
  2068       (case gen_rems (op =) (envir_names, params) of
  2068       (case gen_rems (op =) (envir_names, params) of
  2070       | extras => ["Extra free type variable(s) " ^ commas extras]);
  2070       | extras => ["Extra free type variable(s) " ^ commas extras]);
  2071 
  2071 
  2072     val err_no_fields = if null bfields then ["No fields present"] else [];
  2072     val err_no_fields = if null bfields then ["No fields present"] else [];
  2073 
  2073 
  2074     val err_dup_fields =
  2074     val err_dup_fields =
  2075       (case duplicates (map #1 bfields) of
  2075       (case gen_duplicates (op =) (map #1 bfields) of
  2076         [] => []
  2076         [] => []
  2077       | dups => ["Duplicate field(s) " ^ commas_quote dups]);
  2077       | dups => ["Duplicate field(s) " ^ commas_quote dups]);
  2078 
  2078 
  2079     val err_bad_fields =
  2079     val err_bad_fields =
  2080       if forall (not_equal moreN o #1) bfields then []
  2080       if forall (not_equal moreN o #1) bfields then []
  2081       else ["Illegal field name " ^ quote moreN];
  2081       else ["Illegal field name " ^ quote moreN];
  2082 
  2082 
  2083     val err_dup_sorts =
  2083     val err_dup_sorts =
  2084       (case duplicates envir_names of
  2084       (case gen_duplicates (op =) envir_names of
  2085         [] => []
  2085         [] => []
  2086       | dups => ["Inconsistent sort constraints for " ^ commas dups]);
  2086       | dups => ["Inconsistent sort constraints for " ^ commas dups]);
  2087 
  2087 
  2088     val errs =
  2088     val errs =
  2089       err_dup_record @ err_dup_parms @ err_extra_frees @ err_no_fields @
  2089       err_dup_record @ err_dup_parms @ err_extra_frees @ err_no_fields @