|
28 | 28 | GetLargestNumber = function=(self)>(TNumber | nil, nil | any), |
29 | 29 | }]] |
30 | 30 |
|
| 31 | +local VERSION = jit and "LUAJIT" or _VERSION |
| 32 | + |
| 33 | +local function tostring_number(num) |
| 34 | + local s = tostring(tonumber(num)) |
| 35 | + if VERSION == "LUAJIT" then return s end |
| 36 | + |
| 37 | + if s == "-nan" then return "nan" end |
| 38 | + |
| 39 | + if s:sub(-2) == ".0" then |
| 40 | + s = s:sub(1, -3) |
| 41 | + end |
| 42 | + |
| 43 | + return s |
| 44 | +end |
| 45 | + |
31 | 46 | local function compute_hash(min--[[#: any]], max--[[#: any]]) |
32 | 47 | if max then |
33 | | - return tostring(tonumber(min)) .. ".." .. tostring(tonumber(max)) |
| 48 | + return tostring_number(min) .. ".." .. tostring_number(min) |
34 | 49 | elseif min then |
35 | | - return tostring(tonumber(min)) |
| 50 | + return tostring_number(min) |
36 | 51 | end |
37 | 52 |
|
38 | 53 | return "N" |
|
97 | 112 | function META.Equal(a--[[#: TNumber]], b--[[#: TBaseType]]) |
98 | 113 | if a.Type ~= b.Type then return false, "types differ" end |
99 | 114 |
|
100 | | - do return a.Hash == b.Hash end |
| 115 | + do |
| 116 | + return a.Hash == b.Hash |
| 117 | + end |
101 | 118 |
|
102 | 119 | if a.Max and a.Max == b.Max and a.Data == b.Data then |
103 | 120 | return true, "max values are equal" |
@@ -145,7 +162,10 @@ function META:CopyLiteralness(obj--[[#: TBaseType]]) |
145 | 162 | if x then if x.Max then return self end end |
146 | 163 | end |
147 | 164 |
|
148 | | - if not obj:IsLiteral() then self.Data = false self.Hash = "N" end |
| 165 | + if not obj:IsLiteral() then |
| 166 | + self.Data = false |
| 167 | + self.Hash = "N" |
| 168 | + end |
149 | 169 | end |
150 | 170 | end |
151 | 171 |
|
|
538 | 558 | if l.Max then obj.Max = func(l.Max, r.Max or r.Data) end |
539 | 559 |
|
540 | 560 | obj.Hash = compute_hash(obj.Data, obj.Max) |
541 | | - |
542 | 561 | return obj |
543 | 562 | end |
544 | 563 |
|
|
595 | 614 | end |
596 | 615 |
|
597 | 616 | local function string_to_integer(str--[[#: string]]) |
598 | | - if not jit and (_VERSION == "Lua 5.1" or _VERSION == "Lua 5.2") then |
599 | | - str = str:lower():gsub("ull", "") |
600 | | - str = str:gsub("ll", "") |
| 617 | + if not jit and (_VERSION == "Lua 5.1" or _VERSION == "Lua 5.2" or _VERSION == "Lua 5.3" or _VERSION == "Lua 5.4") then |
| 618 | + str = str:lower():sub(-3) |
| 619 | + if str == "ull" then |
| 620 | + str = str:sub(1, -4) |
| 621 | + elseif str:sub(-2) == "ll" then |
| 622 | + str = str:sub(1, -3) |
| 623 | + end |
601 | 624 | end |
602 | 625 |
|
603 | | - return assert(loadstring("return " .. str))()--[[# as number]] |
| 626 | + return assert(load("return " .. str))()--[[# as number]] |
604 | 627 | end |
605 | 628 |
|
606 | 629 | return { |
|
0 commit comments