Browse Source

[cs] enum generation

Cauê Waneck 11 years ago
parent
commit
d97278d4e5
3 changed files with 97 additions and 9 deletions
  1. 1 1
      gencs.ml
  2. 88 0
      tests/unit/TestCSharp.hx
  3. 8 8
      tests/unit/native_cs/src/haxe/test/MyClass.cs

+ 1 - 1
gencs.ml

@@ -2713,7 +2713,7 @@ let convert_ilenum ctx p ilcls =
 		d_params = []; (* enums never have type parameters *)
 		d_meta = !meta;
 		d_flags = [EExtern];
-		d_data = !data;
+		d_data = List.rev !data;
   }
 
 let rec has_unmanaged = function

+ 88 - 0
tests/unit/TestCSharp.hx

@@ -49,6 +49,48 @@ class TestCSharp extends Test
 		t(true);
 	}
 
+	function testOverloadOverride()
+	{
+		var c = new TestMyClass();
+		c.normalOverload(true);
+		t(c.boolCalled);
+		c.normalOverload(10);
+		t(c.intCalled);
+		c.normalOverload(haxe.Int64.ofInt(0));
+		t(c.int64Called);
+		c.normalOverload("");
+		t(c.stringCalled);
+		c.normalOverload({});
+		t(c.dynamicCalled);
+
+		var c = new TestMyClass("");
+		t(c.alternativeCtorCalled);
+		var b:haxe.test.MyClass = c;
+		b.normalOverload(true);
+		t(c.boolCalled);
+		b.normalOverload(10);
+		t(c.intCalled);
+		b.normalOverload(haxe.Int64.ofInt(0));
+		t(c.int64Called);
+		b.normalOverload("");
+		t(c.stringCalled);
+		b.normalOverload({});
+		t(c.dynamicCalled);
+	}
+
+	function testEnum()
+	{
+		var e = TEnum.TA;
+		switch(e)
+		{
+			case TA:
+				t(true);
+			case _:
+				t(false);
+		}
+		eq("TA",Type.enumConstructor(e));
+	}
+
 	@:skipReflection private function refTest(i:cs.Ref<Int>):Void
 	{
 		i *= 2;
@@ -191,3 +233,49 @@ private class HxClass extends NativeClass
 		i *= 2;
 	}
 }
+
+private class TestMyClass extends haxe.test.MyClass
+{
+	@:overload public function new()
+	{
+		super();
+	}
+
+	@:overload public function new(str:String)
+	{
+		super();
+		alternativeCtorCalled = true;
+	}
+
+	public var alternativeCtorCalled:Bool;
+	public var boolCalled:Bool;
+	public var intCalled:Bool;
+	public var int64Called:Bool;
+	public var stringCalled:Bool;
+	public var dynamicCalled:Bool;
+
+	@:overload override public function normalOverload(b:Bool):Void
+	{
+		this.boolCalled = true;
+	}
+
+	@:overload override public function normalOverload(i:Int):Void
+	{
+		this.intCalled = true;
+	}
+
+	@:overload override public function normalOverload(i64:haxe.Int64):Void
+	{
+		this.int64Called = true;
+	}
+
+	@:overload override public function normalOverload(str:String):Void
+	{
+		this.stringCalled = true;
+	}
+
+	@:overload override public function normalOverload(dyn:Dynamic):Void
+	{
+		this.dynamicCalled = true;
+	}
+}

+ 8 - 8
tests/unit/native_cs/src/haxe/test/MyClass.cs

@@ -3,42 +3,42 @@ namespace haxe.test
 
 public class MyClass
 {
-	public void normalOverload(string a)
+	virtual public void normalOverload(string a)
 	{
 
 	}
 
-	public void normalOverload(int a)
+	virtual public void normalOverload(int a)
 	{
 
 	}
 
-	public void normalOverload(bool a)
+	virtual public void normalOverload(bool a)
 	{
 
 	}
 
-	public void normalOverload(object a)
+	virtual public void normalOverload(object a)
 	{
 
 	}
 
-	public void normalOverload(long a)
+	virtual public void normalOverload(long a)
 	{
 
 	}
 
-	public void normalOverload(float a)
+	virtual public void normalOverload(float a)
 	{
 
 	}
 
-	public void normalOverload(double a)
+	virtual public void normalOverload(double a)
 	{
 
 	}
 
-	public void normalOverload(Base a)
+	virtual public void normalOverload(Base a)
 	{
 		
 	}