NLua / NLua

Bridge between Lua and the .NET.

Home Page:http://nlua.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Overloaded functions bug

umby24 opened this issue · comments

In C#, I have an overloaded function, GetBlock(int) and GetBlock(string), which I am providing to Lua to be used.

If I run GetBlock(int) multiple times from lua, it is fine. However, once I have used the string overload, I can no longer use the int overload. It will default to the string overload every time.

Example code:
local newblock = G_Blocks:GetBlock(1)
local newblock2 = G_Blocks:GetBlock("Stone")
local newblock3 = G_Blocks:GetBlock(1)

newblock and newblock2 will function properly, but newblock3 will be attempting to run the string overload rather than the int.

commented

I'm seeing similar behavior with overloads involving params object[] values, e.g.:

Bar Foo(IEnumerable enumerable)
{
  ...
}
Bar Foo(NLua.LuaTable luaTable)
{
  ...
}
Bar Foo(params object[] values)
{
  ...
}

As soon as that third overload is selected, that's all the lua environment will ever use. Up until that point, the appropriate overloads are selected, contextually.