浏览代码

[cs] Clean up haxe.lang.Null code

Clean up after 9954e860c708e4ec39675979d1db016218dbb214 . Closes #4301
Cauê Waneck 10 年之前
父节点
当前提交
99fab15ca1
共有 2 个文件被更改,包括 7 次插入26 次删除
  1. 4 2
      gencs.ml
  2. 3 24
      std/cs/internal/Null.hx

+ 4 - 2
gencs.ml

@@ -2711,8 +2711,10 @@ let configure gen =
 
 	if not erase_generics then HardNullableSynf.configure gen (HardNullableSynf.traverse gen
 		(fun e ->
-			match real_type e.etype with
-				| TInst({ cl_path = (["haxe";"lang"], "Null") }, [t]) ->
+			match e.eexpr, real_type e.etype with
+				| TConst TThis, _ when gen.gcurrent_path = (["haxe";"lang"], "Null") ->
+					e
+				| _, TInst({ cl_path = (["haxe";"lang"], "Null") }, [t]) ->
 					let e = { e with eexpr = TParenthesis(e) } in
 					{ (mk_field_access gen e "value" e.epos) with etype = t }
 				| _ ->

+ 3 - 24
std/cs/internal/Null.hx

@@ -21,14 +21,6 @@
  */
 package cs.internal;
 
-@:classCode('
-	static public readonly System.Type Type = typeof(T);
-	static public readonly bool IsValueType = haxe.lang.NullMetadata<T>.Type.IsValueType;
-')
-@:keep @:nativeGen @:native("haxe.lang.NullMetadata") private class NullMetadata<T>
-{
-}
-
 @:classCode('
 	//This function is here to be used with Reflection, when the haxe.lang.Null type is known
 	public static haxe.lang.Null<T> _ofDynamic(object obj)
@@ -54,19 +46,9 @@ package cs.internal;
 	@:readOnly public var value(default,never):T;
 	@:readOnly public var hasValue(default,never):Bool;
 
-	@:functionCode('
-		object obj = null;
-		if (hasValue && System.Object.ReferenceEquals(v, obj))
-		{
-			hasValue = false;
-		}
-		this.value = v;
-		this.hasValue = hasValue;
-	')
 	public function new(v:T, hasValue:Bool)
 	{
-		var obj:Dynamic = null;
-		if (hasValue && cs.system.Object.ReferenceEquals(v, obj))
+		if (hasValue && cs.system.Object.ReferenceEquals(v, null))
 		{
 			hasValue = false;
 		}
@@ -91,13 +73,10 @@ package cs.internal;
 		return null;
 	}
 
-	@:functionCode('
-		if (this.hasValue)
-			return value;
-		return null;
-	')
 	public function toDynamic():Dynamic
 	{
+		if (this.hasValue)
+			return value;
 		return null;
 	}
 }