Browse Source

Meta: Correctly parse numeric literals in wasm tests

This was previously parsing them as hex numbers, causing tests to fail.
With this fix, 88% of the generated tests are passing :^)
Ali Mohammad Pur 4 years ago
parent
commit
b2bd5132c4
1 changed files with 13 additions and 4 deletions
  1. 13 4
      Meta/generate-libwasm-spec-test.py

+ 13 - 4
Meta/generate-libwasm-spec-test.py

@@ -126,7 +126,7 @@ def genarg(spec):
             return '-NaN'
 
         try:
-            x = float.fromhex(x)
+            x = float(x)
             if math.isnan(x):
                 # FIXME: This is going to mess up the different kinds of nan
                 return '-NaN' if math.copysign(1.0, x) < 0 else 'NaN'
@@ -135,10 +135,19 @@ def genarg(spec):
             return str(x)
         except ValueError:
             try:
-                x = int(x, 0)
+                x = float.fromhex(x)
+                if math.isnan(x):
+                    # FIXME: This is going to mess up the different kinds of nan
+                    return '-NaN' if math.copysign(1.0, x) < 0 else 'NaN'
+                if math.isinf(x):
+                    return 'Infinity' if x > 0 else '-Infinity'
                 return str(x)
             except ValueError:
-                return x
+                try:
+                    x = int(x, 0)
+                    return str(x)
+                except ValueError:
+                    return x
 
     x = gen()
     if x.startswith('nan'):
@@ -173,7 +182,7 @@ def genresult(ident, entry):
 
 
 def gentest(entry, main_name):
-    name = entry["function"]["name"]
+    name = json.dumps(entry["function"]["name"])[1:-1]
     if type(name) != str:
         print("Unsupported test case (call to", name, ")", file=stderr)
         return '\n    '