Trying to change untyped to typed in the typechecking phase

This commit is contained in:
Krzosa Karol
2022-06-22 13:16:49 +02:00
parent 40557b083b
commit 35daeade20
2 changed files with 110 additions and 25 deletions

View File

@@ -167,13 +167,17 @@ gen_value(Token *pos, Value a){
const char *string = bigint_to_error_string(scratch, &a.big_int_val, 10);
gen("%s", string);
}break;
CASE_STRING:
if(is_pointer(a.type)){
assert(a.type == type_pointer_to_char);
case TYPE_POINTER:{
if(a.type == type_pointer_to_char){
gen("\"%Q\"", a.intern_val);
} else{
gen("(String){(U8 *)\"%Q\", %d}", a.intern_val, a.intern_val.len);
}
else{
U64 pointer_value = bigint_as_unsigned(&a.big_int_val);
gen("0x%llx", pointer_value);
}
}break;
case TYPE_STRING:
gen("(String){(U8 *)\"%Q\", %d}", a.intern_val, a.intern_val.len);
break;
CASE_BOOL: a.bool_val ? gen("true"):gen("false"); break;
CASE_FLOAT: gen("%f", a.f64_val); break;