Просмотр исходного кода

add `@:nullable` and respect it for null-safety

Simon Krajewski 1 год назад
Родитель
Сommit
c5d67c9e20
3 измененных файлов с 10 добавлено и 0 удалено
  1. 7 0
      src-json/meta.json
  2. 2 0
      src/typing/nullSafety.ml
  3. 1 0
      std/haxe/Unit.hx

+ 7 - 0
src-json/meta.json

@@ -738,6 +738,13 @@
 		"platforms": ["flash"],
 		"internal": true
 	},
+	{
+		"name": "Nullable",
+		"metadata": ":nullable",
+		"doc": "Explicitly admits `null` as valid value for an enum, which affects null-safety",
+		"targets": ["TEnum"],
+		"links": ["https://haxe.org/manual/types-nullability.html"]
+	},
 	{
 		"name": "NullSafety",
 		"metadata": ":nullSafety",

+ 2 - 0
src/typing/nullSafety.ml

@@ -85,6 +85,8 @@ let rec is_nullable_type ?(dynamic_is_nullable=false) = function
 		is_nullable_type (apply_typedef t tl)
 	| (TDynamic _) as t ->
 		dynamic_is_nullable && t == t_dynamic
+	| TEnum(en,_) ->
+		Meta.has Meta.Nullable en.e_meta
 	| _ ->
 		false
 (*

+ 1 - 0
std/haxe/Unit.hx

@@ -25,4 +25,5 @@ package haxe;
 /**
 	A unit type which can only be `null` at run-time.
 **/
+@:nullable
 enum Unit {}