do not allow casting bool to int

pull/2856/head
Alexander Medvednikov 2019-11-23 20:40:54 +03:00
parent 3a6ccf7f31
commit 1bd8c465d3
3 changed files with 14 additions and 10 deletions

View File

@ -67,11 +67,11 @@ pub fn (aa mut Automaton) update() {
) )
cell := aa.field.get(x,y) cell := aa.field.get(x,y)
v := if cell == 1 { v := if cell == 1 {
int(moore_sum in [2, 3]) moore_sum in [2, 3]
} else { } else {
int(moore_sum == 3) moore_sum == 3
} }
aa.new_field.set(x,y, v ) aa.new_field.set(x,y, if v { 1 } else { 0 })
} }
} }
mut tmp := aa.field mut tmp := aa.field

View File

@ -552,6 +552,10 @@ fn (p mut Parser) cast(typ string) {
if expr_typ == 'string' { if expr_typ == 'string' {
p.error('cannot cast `$expr_typ` to `$typ`') p.error('cannot cast `$expr_typ` to `$typ`')
} }
// Nothing can be cast to bool
if expr_typ == 'bool' {
p.error('cannot cast `bool` to `$typ`')
}
p.cgen.set_placeholder(pos, '($typ)(') p.cgen.set_placeholder(pos, '($typ)(')
} }
p.check(.rpar) p.check(.rpar)

View File

@ -102,7 +102,7 @@ pub fn (p mut Params) put_string(name string, s string) {
} }
pub fn (p mut Params) put_bool(name string, val bool) { pub fn (p mut Params) put_bool(name string, val bool) {
p.put_custom(name, "bool", int(val)) p.put_custom(name, "bool", if val { 1 } else { 0 })
} }
pub fn (p mut Params) put_custom(name string, typ string, data voidptr) { pub fn (p mut Params) put_custom(name string, typ string, data voidptr) {