Переглянути джерело

fix block type when rewriting void return (closes #4329)

Simon Krajewski 10 роки тому
батько
коміт
8b4992d3e0
2 змінених файлів з 19 додано та 1 видалено
  1. 18 0
      tests/unit/src/unit/issues/Issue4329.hx
  2. 1 1
      typer.ml

+ 18 - 0
tests/unit/src/unit/issues/Issue4329.hx

@@ -0,0 +1,18 @@
+package unit.issues;
+
+class Issue4329 extends Test {
+
+    static function foo(x:Int) {
+        var r = switch( x ) {
+        case 5: 3;
+        default:
+            return bar();
+        }
+    }
+
+    static function bar() { }
+
+	function test() {
+		foo(12);
+	}
+}

+ 1 - 1
typer.ml

@@ -3240,7 +3240,7 @@ and type_expr ctx (e,p) (with_type:with_type) =
 					mk (TBlock [
 						e;
 						mk (TReturn None) t_dynamic p
-					]) e.etype e.epos;
+					]) t_dynamic e.epos;
 				| _ ->
 					mk (TReturn (Some e)) t_dynamic p
 				end