aboutsummaryrefslogtreecommitdiffstats
path: root/test/src/lread-tests.el
diff options
context:
space:
mode:
authorMattias EngdegÄrd2021-05-20 18:26:15 +0200
committerMattias EngdegÄrd2021-05-27 14:16:28 +0200
commitde45864cf787ce244b0d97e7cf523a6e03743f10 (patch)
tree903951ab9e9bf58b91e3f591f4a9d80603d112fa /test/src/lread-tests.el
parent40d2970f4360bd942ffc3f86db9ff1499a5a5393 (diff)
downloademacs-de45864cf787ce244b0d97e7cf523a6e03743f10.tar.gz
emacs-de45864cf787ce244b0d97e7cf523a6e03743f10.zip
Fix lexing of numbers with trailing decimal point and exponent
Numbers with a trailing dot and an exponent were incorrectly read as integers (with the exponent ignored) instead of the floats they should be. For example, 1.e6 was read as the integer 1, not 1000000.0 as every sane person would agree was meant. (Bug#48678) Numbers with a trailing dot but no exponent are still read as integers. * src/lread.c (string_to_number): Fix float lexing. * test/src/lread-tests.el (lread-float): Add test. * doc/lispref/numbers.texi (Float Basics): Clarify syntax.
Diffstat (limited to 'test/src/lread-tests.el')
-rw-r--r--test/src/lread-tests.el67
1 files changed, 67 insertions, 0 deletions
diff --git a/test/src/lread-tests.el b/test/src/lread-tests.el
index f2a60bcf327..dac8f95bc4d 100644
--- a/test/src/lread-tests.el
+++ b/test/src/lread-tests.el
@@ -196,4 +196,71 @@ literals (Bug#20852)."
196 (should-error (read-event "foo: ")) 196 (should-error (read-event "foo: "))
197 (should-error (read-char-exclusive "foo: ")))) 197 (should-error (read-char-exclusive "foo: "))))
198 198
199(ert-deftest lread-float ()
200 (should (equal (read "13") 13))
201 (should (equal (read "+13") 13))
202 (should (equal (read "-13") -13))
203 (should (equal (read "13.") 13))
204 (should (equal (read "+13.") 13))
205 (should (equal (read "-13.") -13))
206 (should (equal (read "13.25") 13.25))
207 (should (equal (read "+13.25") 13.25))
208 (should (equal (read "-13.25") -13.25))
209 (should (equal (read ".25") 0.25))
210 (should (equal (read "+.25") 0.25))
211 (should (equal (read "-.25") -0.25))
212 (should (equal (read "13e4") 130000.0))
213 (should (equal (read "+13e4") 130000.0))
214 (should (equal (read "-13e4") -130000.0))
215 (should (equal (read "13e+4") 130000.0))
216 (should (equal (read "+13e+4") 130000.0))
217 (should (equal (read "-13e+4") -130000.0))
218 (should (equal (read "625e-4") 0.0625))
219 (should (equal (read "+625e-4") 0.0625))
220 (should (equal (read "-625e-4") -0.0625))
221 (should (equal (read "1.25e2") 125.0))
222 (should (equal (read "+1.25e2") 125.0))
223 (should (equal (read "-1.25e2") -125.0))
224 (should (equal (read "1.25e+2") 125.0))
225 (should (equal (read "+1.25e+2") 125.0))
226 (should (equal (read "-1.25e+2") -125.0))
227 (should (equal (read "1.25e-1") 0.125))
228 (should (equal (read "+1.25e-1") 0.125))
229 (should (equal (read "-1.25e-1") -0.125))
230 (should (equal (read "4.e3") 4000.0))
231 (should (equal (read "+4.e3") 4000.0))
232 (should (equal (read "-4.e3") -4000.0))
233 (should (equal (read "4.e+3") 4000.0))
234 (should (equal (read "+4.e+3") 4000.0))
235 (should (equal (read "-4.e+3") -4000.0))
236 (should (equal (read "5.e-1") 0.5))
237 (should (equal (read "+5.e-1") 0.5))
238 (should (equal (read "-5.e-1") -0.5))
239 (should (equal (read "0") 0))
240 (should (equal (read "+0") 0))
241 (should (equal (read "-0") 0))
242 (should (equal (read "0.") 0))
243 (should (equal (read "+0.") 0))
244 (should (equal (read "-0.") 0))
245 (should (equal (read "0.0") 0.0))
246 (should (equal (read "+0.0") 0.0))
247 (should (equal (read "-0.0") -0.0))
248 (should (equal (read "0e5") 0.0))
249 (should (equal (read "+0e5") 0.0))
250 (should (equal (read "-0e5") -0.0))
251 (should (equal (read "0e-5") 0.0))
252 (should (equal (read "+0e-5") 0.0))
253 (should (equal (read "-0e-5") -0.0))
254 (should (equal (read ".0e-5") 0.0))
255 (should (equal (read "+.0e-5") 0.0))
256 (should (equal (read "-.0e-5") -0.0))
257 (should (equal (read "0.0e-5") 0.0))
258 (should (equal (read "+0.0e-5") 0.0))
259 (should (equal (read "-0.0e-5") -0.0))
260 (should (equal (read "0.e-5") 0.0))
261 (should (equal (read "+0.e-5") 0.0))
262 (should (equal (read "-0.e-5") -0.0))
263 )
264
265
199;;; lread-tests.el ends here 266;;; lread-tests.el ends here