Untitled diff

Created Diff never expires
93 删除
总计
删除
单词
总计
删除
要继续使用此功能,请升级到
Diffchecker logo
Diffchecker Pro
469
81 添加
总计
添加
单词
总计
添加
要继续使用此功能,请升级到
Diffchecker logo
Diffchecker Pro
458
[doctest] run with "--help" for options
[doctest] run with "--help" for options


Starting ConstraintGenerator - visitModuleRoot
Starting ConstraintGenerator - visitModuleRoot


Visiting AstStat:
Visiting AstStat:
type function KeyOf(ty)
type function KeyOf(ty)
if not ty:is('table') then
if not ty:is('table') then
error('KeyOf only supports operating on table types!')
error('KeyOf only supports operating on table types!')
end
end


local components = {}
local components = {}
for key, _ in ty:properties() do
for key, _ in ty:properties() do
components.insert(key)
components.insert(key)
end
end


return types.unionof(table.unpack(components))
return types.unionof(table.unpack(components))
end
end




Visiting AstStat:
Visiting AstStat:
local PlayerData = {
local PlayerData = {
Coins = 0,
Coins = 0,
Level = 1,
Level = 1,
Exp = 0,
Exp = 0,
MaxExp = 100
MaxExp = 100
}
}


Constraint Add:
Constraint Add:
prim ("Coins" <: 'a <: string) as string
prim ("Coins" <: 'a <: string) as string


Constraint Add:
Constraint Add:
prim ("Level" <: 'a <: string) as string
prim ("Level" <: 'a <: string) as string


Constraint Add:
Constraint Add:
prim ("Exp" <: 'a <: string) as string
prim ("Exp" <: 'a <: string) as string


Constraint Add:
Constraint Add:
prim ("MaxExp" <: 'a <: string) as string
prim ("MaxExp" <: 'a <: string) as string


Constraint Add:
Constraint Add:
@name(*blocked-6999*) = PlayerData
@name(*blocked-6999*) = PlayerData




Visiting AstStat:
Visiting AstStat:
type Keys = KeyOf<typeof(PlayerData)>
type Keys = keyof<typeof(PlayerData)>


resolveType:
resolveType:
*blocked-6999*
*blocked-6999*


Constraint Add:
Constraint Add:
expand *pending-expansion-8*
expand *pending-expansion-8*


resolveType:
resolveType:
*pending-expansion-8*
*pending-expansion-8*


Constraint Add:
Constraint Add:
@name(*pending-expansion-8*) = Keys
@name(*pending-expansion-8*) = Keys




Visiting AstStat:
Visiting AstStat:
local function UpdateData(key: Keys, value)
local function UpdateData(key: Keys, value)
PlayerData[key] = value
PlayerData[key] = value
end
end


resolveType:
resolveType:
*pending-expansion-8*
*pending-expansion-8*




Visiting AstStat:
Visiting AstStat:
PlayerData[key] = value
PlayerData[key] = value


Constraint Add:
Constraint Add:
assignIndex *blocked-6999* *pending-expansion-8* 'a
assignIndex *blocked-6999* *pending-expansion-8* 'a


Constraint Add:
Constraint Add:
<...: a...
<...: a...


Constraint Add:
Constraint Add:
*blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
*blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)




Visiting AstStat:
Visiting AstStat:
UpdateData('Coins', 2)
UpdateData('Coins', 2)


Constraint Add:
Constraint Add:
prim ("Coins" <: 'a <: string) as string
prim ("Coins" <: 'a <: string) as string


Constraint Add:
Constraint Add:
function_check *blocked-7004* ("Coins" <: 'a <: string), number
function_check *blocked-7004* ("Coins" <: 'a <: string), number


Constraint Add:
Constraint Add:
call *blocked-7004*( ("Coins" <: 'a <: string), number ) with { result = *blocked-tp-81* }
call *blocked-7004*( ("Coins" <: 'a <: string), number ) with { result = *blocked-tp-81* }


Constraint Add:
Constraint Add:
<...: a...
<...: a...


Constraint Add:
Constraint Add:
*blocked-7009* ~ gen (...any) -> (a...)
*blocked-7009* ~ gen (...any) -> (a...)


!! Block Pushed !!
!! Block Pushed !!
*blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...) depends on constraint assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
*blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...) depends on constraint assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
!! Block Pushed !!
!! Block Pushed !!
*blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...) depends on constraint <...: b...
*blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...) depends on constraint <...: b...
!! Block Pushed !!
!! Block Pushed !!
prim ("Coins" <: 'c <: string) as string depends on constraint function_check *blocked-7004* ("Coins" <: 'c <: string), number
prim ("Coins" <: 'c <: string) as string depends on constraint function_check *blocked-7004* ("Coins" <: 'c <: string), number
!! Block Pushed !!
!! Block Pushed !!
call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* } depends on constraint function_check *blocked-7004* ("Coins" <: 'c <: string), number
call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* } depends on constraint function_check *blocked-7004* ("Coins" <: 'c <: string), number
!! Block Pushed !!
!! Block Pushed !!
call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* } depends on constraint prim ("Coins" <: 'c <: string) as string
call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* } depends on constraint prim ("Coins" <: 'c <: string) as string
!! Block Pushed !!
!! Block Pushed !!
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint prim ("Coins" <: 'd <: string) as string
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint prim ("Coins" <: 'd <: string) as string
!! Block Pushed !!
!! Block Pushed !!
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint prim ("Level" <: 'f <: string) as string
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint prim ("Level" <: 'f <: string) as string
!! Block Pushed !!
!! Block Pushed !!
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint prim ("Exp" <: 'g <: string) as string
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint prim ("Exp" <: 'g <: string) as string
!! Block Pushed !!
!! Block Pushed !!
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint prim ("MaxExp" <: 'h <: string) as string
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint prim ("MaxExp" <: 'h <: string) as string
!! Block Pushed !!
!! Block Pushed !!
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint @name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint @name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
!! Block Pushed !!
!! Block Pushed !!
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint expand *pending-expansion-8*
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint expand *pending-expansion-8*
!! Block Pushed !!
!! Block Pushed !!
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint @name(*pending-expansion-8*) = Keys
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint @name(*pending-expansion-8*) = Keys
!! Block Pushed !!
!! Block Pushed !!
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
!! Block Pushed !!
!! Block Pushed !!
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint <...: b...
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint <...: b...
!! Block Pushed !!
!! Block Pushed !!
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint *blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint *blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
!! Block Pushed !!
!! Block Pushed !!
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint prim ("Coins" <: 'c <: string) as string
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint prim ("Coins" <: 'c <: string) as string
!! Block Pushed !!
!! Block Pushed !!
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint function_check *blocked-7004* ("Coins" <: 'c <: string), number
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint function_check *blocked-7004* ("Coins" <: 'c <: string), number
!! Block Pushed !!
!! Block Pushed !!
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
!! Block Pushed !!
!! Block Pushed !!
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint <...: e...
*blocked-7009* ~ gen (...any) -> (e...) depends on constraint <...: e...
Starting solver for module MainModule (MainModule)
Starting solver for module MainModule (MainModule)
constraints:
constraints:
0 prim ("Coins" <: 'd <: string) as string
0 prim ("Coins" <: 'd <: string) as string
0 prim ("Level" <: 'f <: string) as string
0 prim ("Level" <: 'f <: string) as string
0 prim ("Exp" <: 'g <: string) as string
0 prim ("Exp" <: 'g <: string) as string
0 prim ("MaxExp" <: 'h <: string) as string
0 prim ("MaxExp" <: 'h <: string) as string
0 @name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
0 @name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
0 expand *pending-expansion-8*
0 expand *pending-expansion-8*
0 @name(*pending-expansion-8*) = Keys
0 @name(*pending-expansion-8*) = Keys
0 assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
0 assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
0 <...: b...
0 <...: b...
2 *blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
2 *blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
1 prim ("Coins" <: 'c <: string) as string
1 prim ("Coins" <: 'c <: string) as string
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
0 <...: e...
0 <...: e...
14 *blocked-7009* ~ gen (...any) -> (e...)
14 *blocked-7009* ~ gen (...any) -> (e...)
Bindings:
Bindings:
PlayerData : {| Coins: number, Exp: number, Level: number, MaxExp: number |}
PlayerData : {| Coins: number, Exp: number, Level: number, MaxExp: number |}
UpdateData : *blocked-7004*
UpdateData : *blocked-7004*
value : 'a
value : 'a
key : *pending-expansion-8*
key : *pending-expansion-8*
UpdateData : (*pending-expansion-8*, 'a) -> (b...)
UpdateData : (*pending-expansion-8*, 'a) -> (b...)


tryDispatch:
tryDispatch:
prim ("Coins" <: 'd <: string) as string
prim ("Coins" <: 'd <: string) as string


Unblocking count=14 *blocked-7009* ~ gen (...any) -> (e...)
Unblocking count=14 *blocked-7009* ~ gen (...any) -> (e...)
Dispatched
Dispatched
prim ("Coins" <: 'd <: string) as string
prim ("Coins" <: 'd <: string) as string
constraints:
constraints:
0 prim ("Level" <: 'f <: string) as string
0 prim ("Level" <: 'f <: string) as string
0 prim ("Exp" <: 'g <: string) as string
0 prim ("Exp" <: 'g <: string) as string
0 prim ("MaxExp" <: 'h <: string) as string
0 prim ("MaxExp" <: 'h <: string) as string
0 @name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
0 @name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
0 expand *pending-expansion-8*
0 expand *pending-expansion-8*
0 @name(*pending-expansion-8*) = Keys
0 @name(*pending-expansion-8*) = Keys
0 assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
0 assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
0 <...: b...
0 <...: b...
2 *blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
2 *blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
1 prim ("Coins" <: 'c <: string) as string
1 prim ("Coins" <: 'c <: string) as string
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
0 <...: e...
0 <...: e...
13 *blocked-7009* ~ gen (...any) -> (e...)
13 *blocked-7009* ~ gen (...any) -> (e...)


tryDispatch:
tryDispatch:
prim ("Level" <: 'f <: string) as string
prim ("Level" <: 'f <: string) as string


Unblocking count=13 *blocked-7009* ~ gen (...any) -> (e...)
Unblocking count=13 *blocked-7009* ~ gen (...any) -> (e...)
Dispatched
Dispatched
prim ("Level" <: 'f <: string) as string
prim ("Level" <: 'f <: string) as string
constraints:
constraints:
0 prim ("Exp" <: 'g <: string) as string
0 prim ("Exp" <: 'g <: string) as string
0 prim ("MaxExp" <: 'h <: string) as string
0 prim ("MaxExp" <: 'h <: string) as string
0 @name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
0 @name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
0 expand *pending-expansion-8*
0 expand *pending-expansion-8*
0 @name(*pending-expansion-8*) = Keys
0 @name(*pending-expansion-8*) = Keys
0 assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
0 assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
0 <...: b...
0 <...: b...
2 *blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
2 *blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
1 prim ("Coins" <: 'c <: string) as string
1 prim ("Coins" <: 'c <: string) as string
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
0 <...: e...
0 <...: e...
12 *blocked-7009* ~ gen (...any) -> (e...)
12 *blocked-7009* ~ gen (...any) -> (e...)


tryDispatch:
tryDispatch:
prim ("Exp" <: 'g <: string) as string
prim ("Exp" <: 'g <: string) as string


Unblocking count=12 *blocked-7009* ~ gen (...any) -> (e...)
Unblocking count=12 *blocked-7009* ~ gen (...any) -> (e...)
Dispatched
Dispatched
prim ("Exp" <: 'g <: string) as string
prim ("Exp" <: 'g <: string) as string
constraints:
constraints:
0 prim ("MaxExp" <: 'h <: string) as string
0 prim ("MaxExp" <: 'h <: string) as string
0 @name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
0 @name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
0 expand *pending-expansion-8*
0 expand *pending-expansion-8*
0 @name(*pending-expansion-8*) = Keys
0 @name(*pending-expansion-8*) = Keys
0 assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
0 assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
0 <...: b...
0 <...: b...
2 *blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
2 *blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
1 prim ("Coins" <: 'c <: string) as string
1 prim ("Coins" <: 'c <: string) as string
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
0 <...: e...
0 <...: e...
11 *blocked-7009* ~ gen (...any) -> (e...)
11 *blocked-7009* ~ gen (...any) -> (e...)


tryDispatch:
tryDispatch:
prim ("MaxExp" <: 'h <: string) as string
prim ("MaxExp" <: 'h <: string) as string


Unblocking count=11 *blocked-7009* ~ gen (...any) -> (e...)
Unblocking count=11 *blocked-7009* ~ gen (...any) -> (e...)
Dispatched
Dispatched
prim ("MaxExp" <: 'h <: string) as string
prim ("MaxExp" <: 'h <: string) as string
constraints:
constraints:
0 @name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
0 @name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
0 expand *pending-expansion-8*
0 expand *pending-expansion-8*
0 @name(*pending-expansion-8*) = Keys
0 @name(*pending-expansion-8*) = Keys
0 assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
0 assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
0 <...: b...
0 <...: b...
2 *blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
2 *blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
1 prim ("Coins" <: 'c <: string) as string
1 prim ("Coins" <: 'c <: string) as string
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
0 <...: e...
0 <...: e...
10 *blocked-7009* ~ gen (...any) -> (e...)
10 *blocked-7009* ~ gen (...any) -> (e...)


tryDispatch:
tryDispatch:
@name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
@name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData


Unblocking count=10 *blocked-7009* ~ gen (...any) -> (e...)
Unblocking count=10 *blocked-7009* ~ gen (...any) -> (e...)
Dispatched
Dispatched
@name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
@name({| Coins: number, Exp: number, Level: number, MaxExp: number |}) = PlayerData
constraints:
constraints:
0 expand *pending-expansion-8*
0 expand *pending-expansion-8*
0 @name(*pending-expansion-8*) = Keys
0 @name(*pending-expansion-8*) = Keys
0 assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
0 assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} *pending-expansion-8* 'a
0 <...: b...
0 <...: b...
2 *blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
2 *blocked-7004* ~ gen (*pending-expansion-8*, 'a) -> (b...)
1 prim ("Coins" <: 'c <: string) as string
1 prim ("Coins" <: 'c <: string) as string
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
0 <...: e...
0 <...: e...
9 *blocked-7009* ~ gen (...any) -> (e...)
9 *blocked-7009* ~ gen (...any) -> (e...)


tryDispatch:
tryDispatch:
expand *pending-expansion-8*
expand *pending-expansion-8*


Constraint Pushed!
Constraint Pushed!
reduce KeyOf<T0>
reduce keyof<T>
Constraint Pushed!
Constraint Pushed!
reduce KeyOf<PlayerData>
reduce keyof<PlayerData>


Dispatch not successful:
Dispatch not successful:
expand KeyOf<{| Coins: number, Exp: number, Level: number, MaxExp: number |}>
expand keyof<{| Coins: number, Exp: number, Level: number, MaxExp: number |}>




tryDispatch:
tryDispatch:
@name(KeyOf<{| Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
@name(keyof<{| Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys


!! Block Pushed !!
!! Block Pushed !!
@name(KeyOf<{| Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys depends on TypeId KeyOf<{| Coins: number, Exp: number, Level: number, MaxExp: number |}>
@name(keyof<{| Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys depends on TypeId keyof<{| Coins: number, Exp: number, Level: number, MaxExp: number |}>


Dispatch not successful:
Dispatch not successful:
@name(KeyOf<{| Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
@name(keyof<{| Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys




tryDispatch:
tryDispatch:
assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} KeyOf<{| Coins: number, Exp: number, Level: number, MaxExp: number |}> 'a
assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} keyof<{| Coins: number, Exp: number, Level: number, MaxExp: number |}> 'a


Unblocking count=2 *blocked-7004* ~ gen (t1, 'a) -> (b...) where t1 = KeyOf<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
Unblocking count=9 *blocked-7009* ~ gen (...any) -> (e...)
Unblocking count=9 *blocked-7009* ~ gen (...any) -> (e...)
Unblocking count=1 @name(t1 where t1 = KeyOf<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
Unblocking count=2 *blocked-7004* ~ gen (t1, 'a) -> (b...) where t1 = keyof<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
Unblocking count=1 @name(t1 where t1 = keyof<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
Dispatched
Dispatched
assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} KeyOf<{| Coins: number, Exp: number, Level: number, MaxExp: number |}> 'a
assignIndex {| Coins: number, Exp: number, Level: number, MaxExp: number |} keyof<{| Coins: number, Exp: number, Level: number, MaxExp: number |}> 'a
constraints:
constraints:
0 expand t1 where t1 = KeyOf<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 expand t1 where t1 = keyof<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 @name(t1 where t1 = KeyOf<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
0 @name(t1 where t1 = keyof<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
0 <...: b...
0 <...: b...
1 *blocked-7004* ~ gen (t1, 'a) -> (b...) where t1 = KeyOf<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
1 *blocked-7004* ~ gen (t1, 'a) -> (b...) where t1 = keyof<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
1 prim ("Coins" <: 'c <: string) as string
1 prim ("Coins" <: 'c <: string) as string
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
0 <...: e...
0 <...: e...
8 *blocked-7009* ~ gen (...any) -> (e...)
8 *blocked-7009* ~ gen (...any) -> (e...)
0 reduce KeyOf<T0>
0 reduce keyof<T>
0 reduce t1 where t1 = KeyOf<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 reduce t1 where t1 = keyof<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>


tryDispatch:
tryDispatch:
<...: b...
<...: b...


Unblocking count=1 *blocked-7004* ~ gen (t1, 'a) -> () where t1 = KeyOf<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
Unblocking count=8 *blocked-7009* ~ gen (...any) -> (e...)
Unblocking count=8 *blocked-7009* ~ gen (...any) -> (e...)
Unblocking count=1 *blocked-7004* ~ gen (t1, 'a) -> () where t1 = keyof<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
Dispatched
Dispatched
<...: b...
<...: b...
constraints:
constraints:
0 expand t1 where t1 = KeyOf<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 expand t1 where t1 = keyof<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 @name(t1 where t1 = KeyOf<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
0 @name(t1 where t1 = keyof<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
0 *blocked-7004* ~ gen (t1, 'a) -> () where t1 = KeyOf<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 *blocked-7004* ~ gen (t1, 'a) -> () where t1 = keyof<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
1 prim ("Coins" <: 'c <: string) as string
1 prim ("Coins" <: 'c <: string) as string
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
0 function_check *blocked-7004* ("Coins" <: 'c <: string), number
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
2 call *blocked-7004*( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
0 <...: e...
0 <...: e...
7 *blocked-7009* ~ gen (...any) -> (e...)
7 *blocked-7009* ~ gen (...any) -> (e...)
0 reduce KeyOf<T0>
0 reduce keyof<T>
0 reduce t1 where t1 = KeyOf<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 reduce t1 where t1 = keyof<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>


tryDispatch:
tryDispatch:
*blocked-7004* ~ gen (t1, 'a) -> () where t1 = KeyOf<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
*blocked-7004* ~ gen (t1, 'a) -> () where t1 = keyof<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>


Unblocking count=7 *blocked-7009* ~ gen (...any) -> (e...)
Unblocking count=7 *blocked-7009* ~ gen (...any) -> (e...)
Dispatched
Dispatched
*blocked-7004* ~ gen (t1, 'a) -> () where t1 = KeyOf<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
*blocked-7004* ~ gen (t1, 'a) -> () where t1 = keyof<{| [t1]: 'a, Coins: number, Exp: number, Level: number, MaxExp: number |}>
constraints:
constraints:
0 expand t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 expand t1 where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 @name(t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
0 @name(t1 where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
1 prim ("Coins" <: 'c <: string) as string
1 prim ("Coins" <: 'c <: string) as string
0 function_check (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}> ("Coins" <: 'c <: string), number
0 function_check (t1, unknown) -> () where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}> ("Coins" <: 'c <: string), number
2 call (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
2 call (t1, unknown) -> () where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
0 <...: e...
0 <...: e...
6 *blocked-7009* ~ gen (...any) -> (e...)
6 *blocked-7009* ~ gen (...any) -> (e...)
0 reduce KeyOf<T0>
0 reduce keyof<T>
0 reduce t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 reduce t1 where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>


Skipped prim ("Coins" <: 'a <: string) as string
Skipped prim ("Coins" <: 'a <: string) as string


tryDispatch:
tryDispatch:
function_check (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}> ("Coins" <: 'c <: string), number
function_check (t1, unknown) -> () where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}> ("Coins" <: 'c <: string), number


Unblocking count=2 call (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
Unblocking count=2 call (t1, unknown) -> () where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
Unblocking count=6 *blocked-7009* ~ gen (...any) -> (e...)
Unblocking count=1 prim ("Coins" <: 'c <: string) as string
Unblocking count=1 prim ("Coins" <: 'c <: string) as string
Unblocking count=6 *blocked-7009* ~ gen (...any) -> (e...)
Dispatched
Dispatched
function_check (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}> ("Coins" <: 'c <: string), number
function_check (t1, unknown) -> () where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}> ("Coins" <: 'c <: string), number
constraints:
constraints:
0 expand t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 expand t1 where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 @name(t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
0 @name(t1 where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
0 prim ("Coins" <: 'c <: string) as string
0 prim ("Coins" <: 'c <: string) as string
1 call (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
1 call (t1, unknown) -> () where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
0 <...: e...
0 <...: e...
5 *blocked-7009* ~ gen (...any) -> (e...)
5 *blocked-7009* ~ gen (...any) -> (e...)
0 reduce KeyOf<T0>
0 reduce keyof<T>
0 reduce t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 reduce t1 where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>


Skipped call (KeyOf<PlayerData>, unknown) -> ()( ("Coins" <: 'a <: string), number ) with { result = *blocked-tp-81* }
Skipped call (keyof<PlayerData>, unknown) -> ()( ("Coins" <: 'a <: string), number ) with { result = *blocked-tp-81* }


tryDispatch:
tryDispatch:
<...: e...
<...: e...


Unblocking count=5 *blocked-7009* ~ gen (...any) -> ()
Unblocking count=5 *blocked-7009* ~ gen (...any) -> ()
Dispatched
Dispatched
<...: e...
<...: e...
constraints:
constraints:
0 expand t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 expand t1 where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 @name(t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
0 @name(t1 where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
0 prim ("Coins" <: 'c <: string) as string
0 prim ("Coins" <: 'c <: string) as string
1 call (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
1 call (t1, unknown) -> () where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
4 *blocked-7009* ~ gen (...any) -> ()
4 *blocked-7009* ~ gen (...any) -> ()
0 reduce KeyOf<T0>
0 reduce keyof<T>
0 reduce t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 reduce t1 where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>


Skipped *blocked-7009* ~ gen (...any) -> ()
Skipped *blocked-7009* ~ gen (...any) -> ()


tryDispatch:
tryDispatch:
reduce KeyOf<T0>
reduce keyof<T>


Dispatched
Dispatched
reduce KeyOf<T0>
reduce keyof<T>
constraints:
constraints:
0 expand t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 expand t1 where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 @name(t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
0 @name(t1 where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
0 prim ("Coins" <: 'c <: string) as string
0 prim ("Coins" <: 'c <: string) as string
1 call (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
1 call (t1, unknown) -> () where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
4 *blocked-7009* ~ gen (...any) -> ()
4 *blocked-7009* ~ gen (...any) -> ()
0 reduce t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 reduce t1 where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>


tryDispatch:
tryDispatch:
reduce t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
reduce t1 where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>


Dispatched
Dispatched
reduce t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
reduce t1 where t1 = keyof<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
constraints:
constraints:
0 expand t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
0 expand "Coins" | "Exp" | "Level" | "MaxExp"
0 @name(t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
0 @name("Coins" | "Exp" | "Level" | "MaxExp") = Keys
0 prim ("Coins" <: 'c <: string) as string
0 prim ("Coins" <: 'c <: string) as string
1 call (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
1 call ("Coins" | "Exp" | "Level" | "MaxExp", unknown) -> ()( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
4 *blocked-7009* ~ gen (...any) -> ()
4 *blocked-7009* ~ gen (...any) -> ()


tryDispatch:
tryDispatch:
expand t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
expand "Coins" | "Exp" | "Level" | "MaxExp"


Unblocking count=4 *blocked-7009* ~ gen (...any) -> ()
Unblocking count=4 *blocked-7009* ~ gen (...any) -> ()
Dispatched
Dispatched
expand t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>
expand "Coins" | "Exp" | "Level" | "MaxExp"
constraints:
constraints:
0 @name(t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
0 @name("Coins" | "Exp" | "Level" | "MaxExp") = Keys
0 prim ("Coins" <: 'c <: string) as string
0 prim ("Coins" <: 'c <: string) as string
1 call (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
1 call ("Coins" | "Exp" | "Level" | "MaxExp", unknown) -> ()( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
3 *blocked-7009* ~ gen (...any) -> ()
3 *blocked-7009* ~ gen (...any) -> ()


tryDispatch:
tryDispatch:
@name(t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
@name("Coins" | "Exp" | "Level" | "MaxExp") = Keys


Unblocking count=3 *blocked-7009* ~ gen (...any) -> ()
Unblocking count=3 *blocked-7009* ~ gen (...any) -> ()
Dispatched
Dispatched
@name(t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>) = Keys
@name("Coins" | "Exp" | "Level" | "MaxExp") = Keys
constraints:
constraints:
0 prim ("Coins" <: 'c <: string) as string
0 prim ("Coins" <: 'c <: string) as string
1 call (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
1 call ("Coins" | "Exp" | "Level" | "MaxExp", unknown) -> ()( ("Coins" <: 'c <: string), number ) with { result = *blocked-tp-81* }
2 *blocked-7009* ~ gen (...any) -> ()
2 *blocked-7009* ~ gen (...any) -> ()


tryDispatch:
tryDispatch:
prim ("Coins" <: 'c <: string) as string
prim ("Coins" <: 'c <: string) as string


Unblocking count=1 call (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( string, number ) with { result = *blocked-tp-81* }
Unblocking count=1 call ("Coins" | "Exp" | "Level" | "MaxExp", unknown) -> ()( string, number ) with { result = *blocked-tp-81* }
Unblocking count=2 *blocked-7009* ~ gen (...any) -> ()
Unblocking count=2 *blocked-7009* ~ gen (...any) -> ()
Dispatched
Dispatched
prim ("Coins" <: 'c <: string) as string
prim ("Coins" <: 'c <: string) as string
constraints:
constraints:
0 call (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( string, number ) with { result = *blocked-tp-81* }
0 call ("Coins" | "Exp" | "Level" | "MaxExp", unknown) -> ()( string, number ) with { result = *blocked-tp-81* }
1 *blocked-7009* ~ gen (...any) -> ()
1 *blocked-7009* ~ gen (...any) -> ()


tryDispatch:
tryDispatch:
call (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( string, number ) with { result = *blocked-tp-81* }
call ("Coins" | "Exp" | "Level" | "MaxExp", unknown) -> ()( string, number ) with { result = *blocked-tp-81* }


Constraint Pushed!
reduce KeyOf<PlayerData>
Unblocking count=1 *blocked-7009* ~ gen (...any) -> ()
Unblocking count=1 *blocked-7009* ~ gen (...any) -> ()
Dispatched
Dispatched
call (t1, unknown) -> () where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>( string, number ) with { result = *blocked-tp-81* }
call ("Coins" | "Exp" | "Level" | "MaxExp", unknown) -> ()( string, number ) with { result = *blocked-tp-81* }
constraints:
constraints:
0 *blocked-7009* ~ gen (...any) -> ()
0 *blocked-7009* ~ gen (...any) -> ()
0 reduce t1 where t1 = KeyOf<{| [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number |}>


tryDispatch:
tryDispatch:
*blocked-7009* ~ gen (...any) -> ()
*blocked-7009* ~ gen (...any) -> ()


Dispatched
Dispatched
*blocked-7009* ~ gen (...any) -> ()
*blocked-7009* ~ gen (...any) -> ()
constraints:
constraints:
0 reduce t1 where t1 = KeyOf<{ [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number }>
PlayerData : { ["Coins" | "Exp" | "Level" | "MaxExp"]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number }

UpdateData : ("Coins" | "Exp" | "Level" | "MaxExp", unknown) -> ()
tryDispatch:
reduce t1 where t1 = KeyOf<{ [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number }>

Dispatched
reduce t1 where t1 = KeyOf<{ [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number }>
constraints:
PlayerData : t1 where t1 = { [KeyOf<t1>]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number }
UpdateData : (t1, unknown) -> () where t1 = KeyOf<{ [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number }>
value : unknown
value : unknown
key : t1 where t1 = KeyOf<{ [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number }>
key : "Coins" | "Exp" | "Level" | "MaxExp"
UpdateData : (t1, unknown) -> () where t1 = KeyOf<{ [t1]: unknown, Coins: number, Exp: number, Level: number, MaxExp: number }>
UpdateData : ("Coins" | "Exp" | "Level" | "MaxExp", unknown) -> ()