1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

compiler: float comparison uses machine epsilon by default

This commit is contained in:
hazohelet
2019-10-02 04:38:36 +09:00
committed by Alexander Medvednikov
parent f35f6083cd
commit 56e4ed1e6b
3 changed files with 104 additions and 3 deletions

View File

@ -1540,7 +1540,7 @@ fn (p mut Parser) bterm() string {
// if tok in [ .eq, .gt, .lt, .le, .ge, .ne] {
if tok == .eq || tok == .gt || tok == .lt || tok == .le || tok == .ge || tok == .ne {
p.fgen(' ${p.tok.str()} ')
if ((is_float && tok == .eq) || (is_str || is_ustr)) && !p.is_js {
if (is_float || is_str || is_ustr) && !p.is_js {
p.gen(',')
}
else if p.is_sql && tok == .eq {
@ -1594,9 +1594,16 @@ fn (p mut Parser) bterm() string {
case Token.lt: p.cgen.set_placeholder(ph, 'ustring_lt(')
}
}
if is_float && tok == .eq {
if is_float {
p.gen(')')
p.cgen.set_placeholder(ph, '${expr_type}_eq(')
switch tok {
case Token.eq: p.cgen.set_placeholder(ph, '${expr_type}_eq(')
case Token.ne: p.cgen.set_placeholder(ph, '${expr_type}_ne(')
case Token.le: p.cgen.set_placeholder(ph, '${expr_type}_le(')
case Token.ge: p.cgen.set_placeholder(ph, '${expr_type}_ge(')
case Token.gt: p.cgen.set_placeholder(ph, '${expr_type}_gt(')
case Token.lt: p.cgen.set_placeholder(ph, '${expr_type}_lt(')
}
}
}
return typ