From c2c935ba818167a7056da5ac61687ecd2d97cc59 Mon Sep 17 00:00:00 2001 From: Ginger Bill Date: Sun, 11 Jun 2017 20:52:54 +0100 Subject: Fix trailing default argument checking --- src/types.cpp | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) (limited to 'src/types.cpp') diff --git a/src/types.cpp b/src/types.cpp index f8b6eba16..a659d54f2 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -1100,24 +1100,6 @@ bool are_types_identical(Type *x, Type *y) { return false; } - -Type *default_type(Type *type) { - if (type == NULL) { - return t_invalid; - } - if (type->kind == Type_Basic) { - switch (type->Basic.kind) { - case Basic_UntypedBool: return t_bool; - case Basic_UntypedInteger: return t_int; - case Basic_UntypedFloat: return t_f64; - case Basic_UntypedComplex: return t_complex128; - case Basic_UntypedString: return t_string; - case Basic_UntypedRune: return t_rune; - } - } - return type; -} - Type *default_bit_field_value_type(Type *type) { if (type == NULL) { return t_invalid; @@ -1138,6 +1120,27 @@ Type *default_bit_field_value_type(Type *type) { return type; } +Type *default_type(Type *type) { + if (type == NULL) { + return t_invalid; + } + if (type->kind == Type_Basic) { + switch (type->Basic.kind) { + case Basic_UntypedBool: return t_bool; + case Basic_UntypedInteger: return t_int; + case Basic_UntypedFloat: return t_f64; + case Basic_UntypedComplex: return t_complex128; + case Basic_UntypedString: return t_string; + case Basic_UntypedRune: return t_rune; + } + } + if (type->kind == Type_BitFieldValue) { + return default_bit_field_value_type(type); + } + return type; +} + + // NOTE(bill): Valid Compile time execution #run type bool is_type_cte_safe(Type *type) { type = default_type(base_type(type)); -- cgit v1.2.3