compiler: prevent vars named 'char' to cause a C error
parent
c617cf8e05
commit
cce0b2425e
|
@ -91,6 +91,7 @@ const (
|
||||||
'i64': true,
|
'i64': true,
|
||||||
'i128': true,
|
'i128': true,
|
||||||
'byte': true,
|
'byte': true,
|
||||||
|
'char': true,
|
||||||
'u16': true,
|
'u16': true,
|
||||||
'u32': true,
|
'u32': true,
|
||||||
'u64': true,
|
'u64': true,
|
||||||
|
|
|
@ -186,7 +186,7 @@ pub fn (t &Table) debug_fns() string {
|
||||||
// fn (types array_Type) print_to_file(f string) {
|
// fn (types array_Type) print_to_file(f string) {
|
||||||
// }
|
// }
|
||||||
const (
|
const (
|
||||||
integer_types = ['int', 'i8', 'byte', 'i16', 'u16', 'u32', 'i64', 'u64']
|
integer_types = ['int', 'i8', 'char', 'byte', 'i16', 'u16', 'u32', 'i64', 'u64']
|
||||||
float_types = ['f32', 'f64']
|
float_types = ['f32', 'f64']
|
||||||
reserved_type_param_names = ['R', 'S', 'T', 'U', 'W']
|
reserved_type_param_names = ['R', 'S', 'T', 'U', 'W']
|
||||||
)
|
)
|
||||||
|
@ -233,6 +233,7 @@ fn new_table(obfuscate bool) &Table {
|
||||||
t.register_type_with_parent('i64', 'int')
|
t.register_type_with_parent('i64', 'int')
|
||||||
t.register_type_with_parent('u64', 'u32')
|
t.register_type_with_parent('u64', 'u32')
|
||||||
t.register_builtin('byteptr')
|
t.register_builtin('byteptr')
|
||||||
|
t.register_builtin('charptr')
|
||||||
t.register_builtin('intptr')
|
t.register_builtin('intptr')
|
||||||
t.register_builtin('f32')
|
t.register_builtin('f32')
|
||||||
t.register_builtin('f64')
|
t.register_builtin('f64')
|
||||||
|
@ -240,7 +241,6 @@ fn new_table(obfuscate bool) &Table {
|
||||||
t.register_builtin('bool')
|
t.register_builtin('bool')
|
||||||
t.register_builtin('void')
|
t.register_builtin('void')
|
||||||
t.register_builtin('voidptr')
|
t.register_builtin('voidptr')
|
||||||
t.register_builtin('charptr')
|
|
||||||
t.register_builtin('va_list')
|
t.register_builtin('va_list')
|
||||||
for c in reserved_type_param_names {
|
for c in reserved_type_param_names {
|
||||||
t.register_builtin(c)
|
t.register_builtin(c)
|
||||||
|
@ -863,6 +863,9 @@ fn (table &Table) cgen_name_type_pair(name, typ string) string {
|
||||||
fn is_valid_int_const(val, typ string) bool {
|
fn is_valid_int_const(val, typ string) bool {
|
||||||
x := val.int()
|
x := val.int()
|
||||||
return match typ {
|
return match typ {
|
||||||
|
'char'{
|
||||||
|
0 <= x && x <= 255
|
||||||
|
}
|
||||||
'byte'{
|
'byte'{
|
||||||
0 <= x && x <= 255
|
0 <= x && x <= 255
|
||||||
}
|
}
|
||||||
|
@ -900,7 +903,7 @@ fn (p mut Parser) typ_to_fmt(typ string, level int) string {
|
||||||
'ustring' {
|
'ustring' {
|
||||||
return '%.*s'
|
return '%.*s'
|
||||||
}
|
}
|
||||||
'byte', 'bool', 'int', 'char', 'byte', 'i16', 'i8' {
|
'byte', 'bool', 'int', 'char', 'i16', 'i8' {
|
||||||
return '%d'
|
return '%d'
|
||||||
}
|
}
|
||||||
'u16', 'u32' {
|
'u16', 'u32' {
|
||||||
|
|
Loading…
Reference in New Issue