Mercurial > vim
comparison src/eval.c @ 23673:6d35bc0f161e v8.2.2378
patch 8.2.2378: Vim9: no error message for dividing by zero
Commit: https://github.com/vim/vim/commit/99880f96cf444014d589fc1d99bb164deaba71ce
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jan 20 21:23:14 2021 +0100
patch 8.2.2378: Vim9: no error message for dividing by zero
Problem: Vim9: no error message for dividing by zero.
Solution: Give an error message. (issue https://github.com/vim/vim/issues/7704)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 20 Jan 2021 21:30:04 +0100 |
parents | b26bbc03126a |
children | e8c379b20765 |
comparison
equal
deleted
inserted
replaced
23672:226d94848204 | 23673:6d35bc0f161e |
---|---|
61 varnumber_T | 61 varnumber_T |
62 num_divide(varnumber_T n1, varnumber_T n2) | 62 num_divide(varnumber_T n1, varnumber_T n2) |
63 { | 63 { |
64 varnumber_T result; | 64 varnumber_T result; |
65 | 65 |
66 if (n2 == 0) // give an error message? | 66 if (n2 == 0) |
67 { | 67 { |
68 if (in_vim9script()) | |
69 emsg(_(e_divide_by_zero)); | |
68 if (n1 == 0) | 70 if (n1 == 0) |
69 result = VARNUM_MIN; // similar to NaN | 71 result = VARNUM_MIN; // similar to NaN |
70 else if (n1 < 0) | 72 else if (n1 < 0) |
71 result = -VARNUM_MAX; | 73 result = -VARNUM_MAX; |
72 else | 74 else |
82 * Return "n1" modulus "n2", taking care of dividing by zero. | 84 * Return "n1" modulus "n2", taking care of dividing by zero. |
83 */ | 85 */ |
84 varnumber_T | 86 varnumber_T |
85 num_modulus(varnumber_T n1, varnumber_T n2) | 87 num_modulus(varnumber_T n1, varnumber_T n2) |
86 { | 88 { |
87 // Give an error when n2 is 0? | 89 if (n2 == 0 && in_vim9script()) |
90 emsg(_(e_divide_by_zero)); | |
88 return (n2 == 0) ? 0 : (n1 % n2); | 91 return (n2 == 0) ? 0 : (n1 % n2); |
89 } | 92 } |
90 | 93 |
91 #if defined(EBCDIC) || defined(PROTO) | 94 #if defined(EBCDIC) || defined(PROTO) |
92 /* | 95 /* |