summaryrefslogtreecommitdiff
path: root/dhall
diff options
context:
space:
mode:
Diffstat (limited to 'dhall')
-rw-r--r--dhall/tests/macros.rs21
-rw-r--r--dhall/tests/tests.rs157
2 files changed, 178 insertions, 0 deletions
diff --git a/dhall/tests/macros.rs b/dhall/tests/macros.rs
index 9ed48e0..60e70c2 100644
--- a/dhall/tests/macros.rs
+++ b/dhall/tests/macros.rs
@@ -30,6 +30,14 @@ macro_rules! run_spec_test {
let base_path = concat!("../dhall-lang/tests/", $path);
run_test(base_path, Feature::Parser, ExpectedResult::Failure);
};
+ (typecheck_success, $path:expr) => {
+ let base_path = concat!("../dhall-lang/tests/", $path);
+ run_test(base_path, Feature::Typecheck, ExpectedResult::Success);
+ };
+ (typecheck_failure, $path:expr) => {
+ let base_path = concat!("../dhall-lang/tests/", $path);
+ run_test(base_path, Feature::Typecheck, ExpectedResult::Failure);
+ };
}
#[macro_export]
@@ -66,6 +74,7 @@ use std::path::PathBuf;
pub enum Feature {
Parser,
Normalization,
+ Typecheck,
}
pub enum ExpectedResult {
@@ -106,6 +115,18 @@ pub fn run_test(base_path: &str, feature: Feature, expected: ExpectedResult) {
normalize::<_, X, _>(&expected)
);
}
+ (Feature::Typecheck, ExpectedResult::Failure) => {
+ let file_path = base_path.to_owned() + ".dhall";
+ let expr = read_dhall_file(&file_path).unwrap();
+ typecheck::type_of(&expr).unwrap_err();
+ }
+ (Feature::Typecheck, ExpectedResult::Success) => {
+ let expr_file_path = base_path.to_owned() + "A.dhall";
+ let expected_file_path = base_path.to_owned() + "B.dhall";
+ let expr = read_dhall_file(&expr_file_path).unwrap();
+ let expected = read_dhall_file(&expected_file_path).unwrap();
+ typecheck::type_of(&Expr::Annot(bx(expr), bx(expected))).unwrap();
+ }
_ => unimplemented!(),
}
}
diff --git a/dhall/tests/tests.rs b/dhall/tests/tests.rs
index 8e276dc..06795ae 100644
--- a/dhall/tests/tests.rs
+++ b/dhall/tests/tests.rs
@@ -227,3 +227,160 @@ make_spec_test!(parser_failure, spec_parser_failure_incompleteIf, "parser/failur
make_spec_test!(parser_failure, spec_parser_failure_mandatoryNewline, "parser/failure/mandatoryNewline");
make_spec_test!(parser_failure, spec_parser_failure_missingSpace, "parser/failure/missingSpace");
make_spec_test!(parser_failure, spec_parser_failure_spaceAfterListAppend, "parser/failure/spaceAfterListAppend");
+
+
+// make_spec_test!(typecheck_success, spec_typecheck_success_accessEncodedType, "typecheck/success/accessEncodedType");
+// make_spec_test!(typecheck_success, spec_typecheck_success_accessType, "typecheck/success/accessType");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_and_0, "typecheck/success/prelude/Bool/and/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_and_1, "typecheck/success/prelude/Bool/and/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_build_0, "typecheck/success/prelude/Bool/build/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_build_1, "typecheck/success/prelude/Bool/build/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_even_0, "typecheck/success/prelude/Bool/even/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_even_1, "typecheck/success/prelude/Bool/even/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_even_2, "typecheck/success/prelude/Bool/even/2");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_even_3, "typecheck/success/prelude/Bool/even/3");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_fold_0, "typecheck/success/prelude/Bool/fold/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_fold_1, "typecheck/success/prelude/Bool/fold/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_not_0, "typecheck/success/prelude/Bool/not/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_not_1, "typecheck/success/prelude/Bool/not/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_odd_0, "typecheck/success/prelude/Bool/odd/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_odd_1, "typecheck/success/prelude/Bool/odd/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_odd_2, "typecheck/success/prelude/Bool/odd/2");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_odd_3, "typecheck/success/prelude/Bool/odd/3");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_or_0, "typecheck/success/prelude/Bool/or/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_or_1, "typecheck/success/prelude/Bool/or/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_show_0, "typecheck/success/prelude/Bool/show/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Bool_show_1, "typecheck/success/prelude/Bool/show/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Double_show_0, "typecheck/success/prelude/Double/show/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Double_show_1, "typecheck/success/prelude/Double/show/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Integer_show_0, "typecheck/success/prelude/Integer/show/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Integer_show_1, "typecheck/success/prelude/Integer/show/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Integer_toDouble_0, "typecheck/success/prelude/Integer/toDouble/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Integer_toDouble_1, "typecheck/success/prelude/Integer/toDouble/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_all_0, "typecheck/success/prelude/List/all/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_all_1, "typecheck/success/prelude/List/all/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_any_0, "typecheck/success/prelude/List/any/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_any_1, "typecheck/success/prelude/List/any/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_build_0, "typecheck/success/prelude/List/build/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_build_1, "typecheck/success/prelude/List/build/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_concat_0, "typecheck/success/prelude/List/concat/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_concat_1, "typecheck/success/prelude/List/concat/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_concatMap_0, "typecheck/success/prelude/List/concatMap/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_concatMap_1, "typecheck/success/prelude/List/concatMap/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_filter_0, "typecheck/success/prelude/List/filter/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_filter_1, "typecheck/success/prelude/List/filter/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_fold_0, "typecheck/success/prelude/List/fold/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_fold_1, "typecheck/success/prelude/List/fold/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_fold_2, "typecheck/success/prelude/List/fold/2");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_generate_0, "typecheck/success/prelude/List/generate/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_generate_1, "typecheck/success/prelude/List/generate/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_head_0, "typecheck/success/prelude/List/head/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_head_1, "typecheck/success/prelude/List/head/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_indexed_0, "typecheck/success/prelude/List/indexed/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_indexed_1, "typecheck/success/prelude/List/indexed/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_iterate_0, "typecheck/success/prelude/List/iterate/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_iterate_1, "typecheck/success/prelude/List/iterate/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_last_0, "typecheck/success/prelude/List/last/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_last_1, "typecheck/success/prelude/List/last/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_length_0, "typecheck/success/prelude/List/length/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_length_1, "typecheck/success/prelude/List/length/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_map_0, "typecheck/success/prelude/List/map/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_map_1, "typecheck/success/prelude/List/map/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_null_0, "typecheck/success/prelude/List/null/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_null_1, "typecheck/success/prelude/List/null/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_replicate_0, "typecheck/success/prelude/List/replicate/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_replicate_1, "typecheck/success/prelude/List/replicate/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_reverse_0, "typecheck/success/prelude/List/reverse/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_reverse_1, "typecheck/success/prelude/List/reverse/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_shifted_0, "typecheck/success/prelude/List/shifted/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_shifted_1, "typecheck/success/prelude/List/shifted/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_unzip_0, "typecheck/success/prelude/List/unzip/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_List_unzip_1, "typecheck/success/prelude/List/unzip/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Monoid_00, "typecheck/success/prelude/Monoid/00");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Monoid_01, "typecheck/success/prelude/Monoid/01");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Monoid_02, "typecheck/success/prelude/Monoid/02");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Monoid_03, "typecheck/success/prelude/Monoid/03");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Monoid_04, "typecheck/success/prelude/Monoid/04");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Monoid_05, "typecheck/success/prelude/Monoid/05");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Monoid_06, "typecheck/success/prelude/Monoid/06");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Monoid_07, "typecheck/success/prelude/Monoid/07");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Monoid_08, "typecheck/success/prelude/Monoid/08");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Monoid_09, "typecheck/success/prelude/Monoid/09");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Monoid_10, "typecheck/success/prelude/Monoid/10");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_build_0, "typecheck/success/prelude/Natural/build/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_build_1, "typecheck/success/prelude/Natural/build/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_enumerate_0, "typecheck/success/prelude/Natural/enumerate/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_enumerate_1, "typecheck/success/prelude/Natural/enumerate/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_even_0, "typecheck/success/prelude/Natural/even/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_even_1, "typecheck/success/prelude/Natural/even/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_fold_0, "typecheck/success/prelude/Natural/fold/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_fold_1, "typecheck/success/prelude/Natural/fold/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_fold_2, "typecheck/success/prelude/Natural/fold/2");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_isZero_0, "typecheck/success/prelude/Natural/isZero/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_isZero_1, "typecheck/success/prelude/Natural/isZero/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_odd_0, "typecheck/success/prelude/Natural/odd/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_odd_1, "typecheck/success/prelude/Natural/odd/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_product_0, "typecheck/success/prelude/Natural/product/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_product_1, "typecheck/success/prelude/Natural/product/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_show_0, "typecheck/success/prelude/Natural/show/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_show_1, "typecheck/success/prelude/Natural/show/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_sum_0, "typecheck/success/prelude/Natural/sum/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_sum_1, "typecheck/success/prelude/Natural/sum/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_toDouble_0, "typecheck/success/prelude/Natural/toDouble/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_toDouble_1, "typecheck/success/prelude/Natural/toDouble/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_toInteger_0, "typecheck/success/prelude/Natural/toInteger/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Natural_toInteger_1, "typecheck/success/prelude/Natural/toInteger/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_all_0, "typecheck/success/prelude/Optional/all/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_all_1, "typecheck/success/prelude/Optional/all/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_any_0, "typecheck/success/prelude/Optional/any/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_any_1, "typecheck/success/prelude/Optional/any/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_build_0, "typecheck/success/prelude/Optional/build/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_build_1, "typecheck/success/prelude/Optional/build/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_concat_0, "typecheck/success/prelude/Optional/concat/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_concat_1, "typecheck/success/prelude/Optional/concat/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_concat_2, "typecheck/success/prelude/Optional/concat/2");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_filter_0, "typecheck/success/prelude/Optional/filter/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_filter_1, "typecheck/success/prelude/Optional/filter/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_fold_0, "typecheck/success/prelude/Optional/fold/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_fold_1, "typecheck/success/prelude/Optional/fold/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_head_0, "typecheck/success/prelude/Optional/head/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_head_1, "typecheck/success/prelude/Optional/head/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_head_2, "typecheck/success/prelude/Optional/head/2");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_last_0, "typecheck/success/prelude/Optional/last/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_last_1, "typecheck/success/prelude/Optional/last/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_last_2, "typecheck/success/prelude/Optional/last/2");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_length_0, "typecheck/success/prelude/Optional/length/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_length_1, "typecheck/success/prelude/Optional/length/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_map_0, "typecheck/success/prelude/Optional/map/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_map_1, "typecheck/success/prelude/Optional/map/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_null_0, "typecheck/success/prelude/Optional/null/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_null_1, "typecheck/success/prelude/Optional/null/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_toList_0, "typecheck/success/prelude/Optional/toList/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_toList_1, "typecheck/success/prelude/Optional/toList/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_unzip_0, "typecheck/success/prelude/Optional/unzip/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Optional_unzip_1, "typecheck/success/prelude/Optional/unzip/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Text_concat_0, "typecheck/success/prelude/Text/concat/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Text_concat_1, "typecheck/success/prelude/Text/concat/1");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Text_concatMap_0, "typecheck/success/prelude/Text/concatMap/0");
+make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Text_concatMap_1, "typecheck/success/prelude/Text/concatMap/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Text_concatMapSep_0, "typecheck/success/prelude/Text/concatMapSep/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Text_concatMapSep_1, "typecheck/success/prelude/Text/concatMapSep/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Text_concatSep_0, "typecheck/success/prelude/Text/concatSep/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_prelude_Text_concatSep_1, "typecheck/success/prelude/Text/concatSep/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_recordOfRecordOfTypes, "typecheck/success/recordOfRecordOfTypes");
+// make_spec_test!(typecheck_success, spec_typecheck_success_recordOfTypes, "typecheck/success/recordOfTypes");
+// make_spec_test!(typecheck_success, spec_typecheck_success_simple_access_0, "typecheck/success/simple/access/0");
+// make_spec_test!(typecheck_success, spec_typecheck_success_simple_access_1, "typecheck/success/simple/access/1");
+// make_spec_test!(typecheck_success, spec_typecheck_success_simple_alternativesAreTypes, "typecheck/success/simple/alternativesAreTypes");
+// make_spec_test!(typecheck_success, spec_typecheck_success_simple_anonymousFunctionsInTypes, "typecheck/success/simple/anonymousFunctionsInTypes");
+// make_spec_test!(typecheck_success, spec_typecheck_success_simple_fieldsAreTypes, "typecheck/success/simple/fieldsAreTypes");
+// make_spec_test!(typecheck_success, spec_typecheck_success_simple_kindParameter, "typecheck/success/simple/kindParameter");
+// make_spec_test!(typecheck_success, spec_typecheck_success_simple_mergeEquivalence, "typecheck/success/simple/mergeEquivalence");
+// make_spec_test!(typecheck_success, spec_typecheck_success_simple_mixedFieldAccess, "typecheck/success/simple/mixedFieldAccess");
+// make_spec_test!(typecheck_success, spec_typecheck_success_simple_unionsOfTypes, "typecheck/success/simple/unionsOfTypes");
+
+// make_spec_test!(typecheck_failure, spec_typecheck_failure_combineMixedRecords, "typecheck/failure/combineMixedRecords");
+// make_spec_test!(typecheck_failure, spec_typecheck_failure_duplicateFields, "typecheck/failure/duplicateFields");
+make_spec_test!(typecheck_failure, spec_typecheck_failure_hurkensParadox, "typecheck/failure/hurkensParadox");
+// make_spec_test!(typecheck_failure, spec_typecheck_failure_mixedUnions, "typecheck/failure/mixedUnions");
+// make_spec_test!(typecheck_failure, spec_typecheck_failure_preferMixedRecords, "typecheck/failure/preferMixedRecords");