Sfoglia il codice sorgente

Report as a Warn error when an string is assigned in an Int variable

Chimrod 5 mesi fa
parent
commit
60cb98b4a2
2 ha cambiato i file con 13 aggiunte e 2 eliminazioni
  1. 1 1
      lib/syntax/type_of.ml
  2. 12 1
      test/type_of.ml

+ 1 - 1
lib/syntax/type_of.ml

@@ -465,7 +465,7 @@ module Instruction = struct
             [ op1; op2 ] []
         with
         | [] ->
-            Helper.compare_args ~strict:true ~level:Report.Debug pos expected
+            Helper.compare_args ~strict:true ~level:Report.Warn pos expected
               [ op1; op2 ] report
         | reports -> reports @ report)
 end

+ 12 - 1
test/type_of.ml

@@ -15,11 +15,21 @@ let type_mismatch () =
       };
     ]
 
+let type_mismatch2 () =
+  _test_instruction {|abc[''] = $Var|}
+    [
+      {
+        level = Warn;
+        loc = _position;
+        message = "The type Integer is expected but got String";
+      };
+    ]
+
 let type_conversion () =
   _test_instruction {|abc = '123'|}
     [
       {
-        level = Debug;
+        level = Warn;
         loc = _position;
         message = "The type Integer is expected but got Integer as String";
       };
@@ -54,6 +64,7 @@ let test =
   ( "Typechecking",
     [
       Alcotest.test_case "Assign" `Quick type_mismatch;
+      Alcotest.test_case "Assign array" `Quick type_mismatch2;
       Alcotest.test_case "Conversion" `Quick type_conversion;
       Alcotest.test_case "Conversion'" `Quick type_conversion';
       Alcotest.test_case "Comparaison" `Quick type_comparaison;