mirror of
https://github.com/luau-lang/luau.git
synced 2025-05-04 10:33:46 +01:00
[Tests] Added LuauPolyfillMap coerceToTable related tests
This commit is contained in:
parent
e66d16ac18
commit
f70e21d9b3
1 changed files with 0 additions and 29 deletions
|
@ -4,35 +4,6 @@
|
|||
local Array = {}
|
||||
local Object = {}
|
||||
local Map = {}
|
||||
local None = newproxy(true)
|
||||
|
||||
type Comparable = (any, any) -> number
|
||||
local defaultSort = function(a: any, b: any): boolean
|
||||
return type(a) .. tostring(a) < type(b) .. tostring(b)
|
||||
end
|
||||
|
||||
function Array.sort(array: Array<any>, compare: Comparable?)
|
||||
-- wrapperCompare interprets compare return value to be compatible with Lua's table.sort
|
||||
local wrappedCompare = defaultSort
|
||||
if compare ~= nil and compare ~= None then
|
||||
if typeof(compare :: any) ~= "function" then
|
||||
error("invalid argument to Array.sort: compareFunction must be a function")
|
||||
end
|
||||
wrappedCompare = function(a, b)
|
||||
local result = compare(a, b)
|
||||
if typeof(result) ~= "number" then
|
||||
-- deviation: throw an error because
|
||||
-- it's not clearly defined what is
|
||||
-- the behavior when the compare function
|
||||
-- does not return a number
|
||||
error(("invalid result from compare function, expected number but got %s"):format(typeof(result)))
|
||||
end
|
||||
return result < 0
|
||||
end
|
||||
end
|
||||
table.sort(array, wrappedCompare)
|
||||
return array
|
||||
end
|
||||
|
||||
type Array<T> = { [number]: T }
|
||||
type callbackFn<K, V> = (element: V, key: K, map: Map<K, V>) -> ()
|
||||
|
|
Loading…
Add table
Reference in a new issue