-(*===-- Types -------------------------------------------------------------===*)
-
-let test_types () =
- (* RUN: grep {Ty01.*void} < %t.ll
- *)
- group "void";
- insist (define_type_name "Ty01" void_type m);
- insist (TypeKind.Void == classify_type void_type);
-
- (* RUN: grep {Ty02.*i1} < %t.ll
- *)
- group "i1";
- insist (define_type_name "Ty02" i1_type m);
- insist (TypeKind.Integer == classify_type i1_type);
-
- (* RUN: grep {Ty03.*i32} < %t.ll
- *)
- group "i32";
- insist (define_type_name "Ty03" i32_type m);
-
- (* RUN: grep {Ty04.*i42} < %t.ll
- *)
- group "i42";
- let ty = integer_type 42 in
- insist (define_type_name "Ty04" ty m);
-
- (* RUN: grep {Ty05.*float} < %t.ll
- *)
- group "float";
- insist (define_type_name "Ty05" float_type m);
- insist (TypeKind.Float == classify_type float_type);
-
- (* RUN: grep {Ty06.*double} < %t.ll
- *)
- group "double";
- insist (define_type_name "Ty06" double_type m);
- insist (TypeKind.Double == classify_type double_type);
-
- (* RUN: grep {Ty07.*i32.*i1, double} < %t.ll
- *)
- group "function";
- let ty = function_type i32_type [| i1_type; double_type |] in
- insist (define_type_name "Ty07" ty m);
- insist (TypeKind.Function = classify_type ty);
- insist (not (is_var_arg ty));
- insist (i32_type == return_type ty);
- insist (double_type == (param_types ty).(1));
-
- (* RUN: grep {Ty08.*\.\.\.} < %t.ll
- *)
- group "var arg function";
- let ty = var_arg_function_type void_type [| i32_type |] in
- insist (define_type_name "Ty08" ty m);
- insist (is_var_arg ty);
-
- (* RUN: grep {Ty09.*\\\[7 x i8\\\]} < %t.ll
- *)
- group "array";
- let ty = array_type i8_type 7 in
- insist (define_type_name "Ty09" ty m);
- insist (7 = array_length ty);
- insist (i8_type == element_type ty);
- insist (TypeKind.Array == classify_type ty);
-
- begin group "pointer";
- (* RUN: grep {UnqualPtrTy.*float\*} < %t.ll
- *)
- let ty = pointer_type float_type in
- insist (define_type_name "UnqualPtrTy" ty m);
- insist (float_type == element_type ty);
- insist (0 == address_space ty);
- insist (TypeKind.Pointer == classify_type ty)
- end;
-
- begin group "qualified_pointer";
- (* RUN: grep {QualPtrTy.*i8.*3.*\*} < %t.ll
- *)
- let ty = qualified_pointer_type i8_type 3 in
- insist (define_type_name "QualPtrTy" ty m);
- insist (i8_type == element_type ty);
- insist (3 == address_space ty)
- end;
-
- (* RUN: grep {Ty11.*\<4 x i16\>} < %t.ll
- *)
- group "vector";
- let ty = vector_type i16_type 4 in
- insist (define_type_name "Ty11" ty m);
- insist (i16_type == element_type ty);
- insist (4 = vector_size ty);
-
- (* RUN: grep {Ty12.*opaque} < %t.ll
- *)
- group "opaque";
- let ty = opaque_type () in
- insist (define_type_name "Ty12" ty m);
- insist (ty == ty);
- insist (ty <> opaque_type ());
-
- (* RUN: grep -v {Ty13} < %t.ll
- *)
- group "delete";
- let ty = opaque_type () in
- insist (define_type_name "Ty13" ty m);
- delete_type_name "Ty13" m;
-
- (* RUN: grep -v {RecursiveTy.*RecursiveTy} < %t.ll
- *)
- group "recursive";
- let ty = opaque_type () in
- let th = handle_to_type ty in
- refine_type ty (pointer_type ty);
- let ty = type_of_handle th in
- insist (define_type_name "RecursiveTy" ty m);
- insist (ty == element_type ty)
-