From 51367db2b4ff80cabd3120c12a3b773f3599ff7b Mon Sep 17 00:00:00 2001 From: James Roseborough Date: Mon, 17 Sep 2012 04:21:09 +0000 Subject: [PATCH] Document current behavior of negative zero. --- README.html | 1 + src/core/org/luaj/vm2/compiler/LexState.java | 2 +- test/lua/luaj3.0-tests.zip | Bin 294217 -> 297016 bytes test/lua/mathlib.lua | 19 +++++++++++++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/README.html b/README.html index 567b328c..fe74cff1 100644 --- a/README.html +++ b/README.html @@ -743,5 +743,6 @@ and LuaForge:
  • module() and setfenv() only partially supported for lau2java or luajc compiled lua
  • values associated with weak keys may linger longer than expected
  • behavior of luaj when a SecurityManager is used has not been fully characterized +
  • Negative zero is treated as identical to integer value zero throughout luaj diff --git a/src/core/org/luaj/vm2/compiler/LexState.java b/src/core/org/luaj/vm2/compiler/LexState.java index 26cb6216..677b73d8 100644 --- a/src/core/org/luaj/vm2/compiler/LexState.java +++ b/src/core/org/luaj/vm2/compiler/LexState.java @@ -417,7 +417,7 @@ public class LexState { LuaC._assert (isdigit(current)); save_and_next(); if (first == '0' && check_next("Xx")) - expo = "PpEe"; + expo = "Pp"; while (true) { if (check_next(expo)) check_next("+-"); diff --git a/test/lua/luaj3.0-tests.zip b/test/lua/luaj3.0-tests.zip index 61dd82b5402112319d06c6073e8338171684b6a3..3975d417d8c4c038186c62ee0aa07c39ef6d4c9b 100644 GIT binary patch delta 30880 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 HRfhc^(Ph*a diff --git a/test/lua/mathlib.lua b/test/lua/mathlib.lua index b23f8ffe..9ed3ac3c 100644 --- a/test/lua/mathlib.lua +++ b/test/lua/mathlib.lua @@ -218,4 +218,23 @@ print( math.randomseed(20) ) for i=1,20 do print( t[i] == math.random() ) end + +-- tests involving -0, which is folded into 0 for luaj, but not for plain lua +print("----------- Tests involving -0 and NaN") +print('0 == -0', 0 == -0) +t = {[0] = 10, 20, 30, 40, 50} +print('t[-0] == t[0]',t[-0] == t[0]) +local x = -1 +local mz, z = 0/x, 0 -- minus zero, zero +print('mz, z', mz, z) +print('mz == z', mz == z) +print('1/mz < 0 and 0 < 1/z', 1/mz < 0 and 0 < 1/z) +local a = {[mz] = 1} +print('a[z] == 1 and a[mz] == 1', a[z] == 1 and a[mz] == 1) +-- string with same binary representation as 0.0 (may create problems +-- for constant manipulation in the pre-compiler) +local a1, a2, a3, a4, a5 = 0, 0, "\0\0\0\0\0\0\0\0", 0, "\0\0\0\0\0\0\0\0" +assert(a1 == a2 and a2 == a4 and a1 ~= a3) +assert(a3 == a5) + --]]