Commit abdaf4af authored by Vinicius Jarina's avatar Vinicius Jarina
Browse files

Merge pull request #126 from isaacbrodsky/master

Create structs with default parameterless constructor
parents f9c5a807 c6a65b2a
...@@ -1114,6 +1114,14 @@ namespace NLua ...@@ -1114,6 +1114,14 @@ namespace NLua
} }
} }
if (klass.UnderlyingSystemType.IsValueType) {
int numLuaParams = LuaLib.LuaGetTop (luaState);
if (numLuaParams == 0) {
translator.Push (luaState, Activator.CreateInstance (klass.UnderlyingSystemType));
return 1;
}
}
string constructorName = (constructors.Length == 0) ? "unknown" : constructors [0].Name; string constructorName = (constructors.Length == 0) ? "unknown" : constructors [0].Name;
translator.ThrowError (luaState, String.Format ("{0} does not contain constructor({1}) argument match", translator.ThrowError (luaState, String.Format ("{0} does not contain constructor({1}) argument match",
klass.UnderlyingSystemType, constructorName)); klass.UnderlyingSystemType, constructorName));
......
...@@ -196,7 +196,6 @@ namespace NLuaTest ...@@ -196,7 +196,6 @@ namespace NLuaTest
} }
} }
/* /*
* Tests structure assignment * Tests structure assignment
*/ */
...@@ -215,6 +214,21 @@ namespace NLuaTest ...@@ -215,6 +214,21 @@ namespace NLuaTest
} }
} }
/*
* Tests structure creation via the default constructor
*/
[Test]
public void TestStructDefaultConstructor ()
{
using (Lua lua = new Lua ())
{
lua.DoString ("luanet.load_assembly('NLuaTest')");
lua.DoString ("TestStruct=luanet.import_type('NLuaTest.Mock.TestStruct')");
lua.DoString ("struct=TestStruct()");
Assert.AreEqual (new TestStruct(), (TestStruct)lua ["struct"]);
}
}
[Test] [Test]
public void TestStructHashesEqual() public void TestStructHashesEqual()
{ {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment