mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-24 18:48:01 +02:00
Fixed extension initializers and dtors. [NoExtension]. Extension warning
This commit is contained in:
parent
6e71cbc765
commit
b6db69d2b0
15 changed files with 235 additions and 64 deletions
|
@ -1,5 +1,6 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace LibA
|
||||
{
|
||||
|
@ -90,11 +91,18 @@ namespace LibA
|
|||
|
||||
class LibClassA
|
||||
{
|
||||
public int32 mA = GetVal(7, "LibA.LibClassA.mA");
|
||||
public int32 mA = GetVal(7, 10, "LibA.LibClassA.mA");
|
||||
|
||||
public static int32 sMagic = 1;
|
||||
|
||||
public static this()
|
||||
{
|
||||
sMagic += 10;
|
||||
}
|
||||
|
||||
public this()
|
||||
{
|
||||
PrintF("LibA.LibClassA()\n");
|
||||
Debug.WriteLine("LibA.LibClassA()\n");
|
||||
mA += 100;
|
||||
}
|
||||
|
||||
|
@ -103,9 +111,15 @@ class LibClassA
|
|||
mA += a;
|
||||
}
|
||||
|
||||
public static int32 GetVal(int32 val, String str)
|
||||
public ~this()
|
||||
{
|
||||
PrintF("GetVal: %s\n", str.CStr());
|
||||
sMagic += 20;
|
||||
}
|
||||
|
||||
public static int32 GetVal(int32 val, int32 magic, String str)
|
||||
{
|
||||
Debug.WriteLine("GetVal: {}", str);
|
||||
sMagic += magic;
|
||||
return val;
|
||||
}
|
||||
|
||||
|
@ -118,6 +132,11 @@ class LibClassA
|
|||
{
|
||||
return 30;
|
||||
}
|
||||
|
||||
public static LibClassA Create()
|
||||
{
|
||||
return new LibClassA();
|
||||
}
|
||||
}
|
||||
|
||||
class LibClassB
|
||||
|
|
|
@ -14,15 +14,25 @@ namespace LibB
|
|||
|
||||
extension LibClassA
|
||||
{
|
||||
public int32 mB = GetVal(8, "LibB.LibClassA.mB");
|
||||
public int32 mB = GetVal(8, 100, "LibB.LibClassA.mB");
|
||||
|
||||
public this()
|
||||
public static this()
|
||||
{
|
||||
sMagic += 100;
|
||||
}
|
||||
|
||||
public ~this()
|
||||
{
|
||||
sMagic += 200;
|
||||
}
|
||||
|
||||
public new this() : [NoExtension]this()
|
||||
{
|
||||
PrintF("LibB.LibClassA()\n");
|
||||
mB += 100;
|
||||
}
|
||||
|
||||
public this(int32 a)
|
||||
public new this(int32 a)
|
||||
{
|
||||
PrintF("LibB.LibClassA(int32)\n");
|
||||
mB += 1000;
|
||||
|
|
|
@ -12,7 +12,17 @@ namespace LibC
|
|||
|
||||
extension LibClassA
|
||||
{
|
||||
public int32 mB = GetVal(13, "LibC.LibClassA.mB");
|
||||
public int32 mB = GetVal(13, 1000, "LibC.LibClassA.mB");
|
||||
|
||||
public static this()
|
||||
{
|
||||
sMagic += 1000;
|
||||
}
|
||||
|
||||
public ~this()
|
||||
{
|
||||
sMagic += 2000;
|
||||
}
|
||||
|
||||
public this(int8 i8)
|
||||
{
|
||||
|
|
|
@ -2,15 +2,15 @@ using System;
|
|||
|
||||
extension LibClassA
|
||||
{
|
||||
public int32 mC = GetVal(9, "TestsB.LibClassA.mC");
|
||||
public int32 mC = GetVal(9, 10000, "TestsB.LibClassA.mC");
|
||||
|
||||
public this()
|
||||
public new this()
|
||||
{
|
||||
PrintF("TestB.LibClassA()\n");
|
||||
mB += 10000;
|
||||
}
|
||||
|
||||
public int GetVal2()
|
||||
public new int GetVal2()
|
||||
{
|
||||
return 11;
|
||||
}
|
||||
|
|
|
@ -227,21 +227,32 @@ namespace Tests
|
|||
[Test]
|
||||
public static void TestSharedData()
|
||||
{
|
||||
Test.Assert(LibClassA.sMagic == 1111);
|
||||
|
||||
LibClassA ca = scope LibClassA();
|
||||
Test.Assert(ca.mA == 7);
|
||||
Test.Assert(LibClassA.sMagic == 2221);
|
||||
Test.Assert(ca.mA == 107);
|
||||
Test.Assert(ca.LibB_GetB() == 108);
|
||||
Test.Assert(ca.LibC_GetB() == 13);
|
||||
Test.Assert(ca.GetVal2() == 9);
|
||||
|
||||
ca = scope LibClassA(12345);
|
||||
Test.Assert(LibClassA.sMagic == 3331);
|
||||
Test.Assert(ca.mA == 7);
|
||||
Test.Assert(ca.LibB_GetB() == 1008);
|
||||
Test.Assert(ca.LibC_GetB() == 13);
|
||||
|
||||
ca = scope LibClassA((int8)2);
|
||||
Test.Assert(LibClassA.sMagic == 4441);
|
||||
Test.Assert(ca.mA == 7);
|
||||
Test.Assert(ca.LibB_GetB() == 8);
|
||||
Test.Assert(ca.LibC_GetB() == 30013);
|
||||
|
||||
ca = LibClassA.Create();
|
||||
Test.Assert(LibClassA.sMagic == 5551);
|
||||
Test.Assert(ca.mA == 107);
|
||||
delete ca;
|
||||
Test.Assert(LibClassA.sMagic == 7771);
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue