<html>
    <head>
      <base href="https://bugs.webkit.org/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - WebAssembly: exporting a property with a name that's a number doesn't work"
   href="https://bugs.webkit.org/show_bug.cgi?id=168857">168857</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>WebAssembly: exporting a property with a name that's a number doesn't work
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>WebKit
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>WebKit Nightly Build
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>Unspecified
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Unspecified
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>Normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P2
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>JavaScriptCore
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>webkit-unassigned&#64;lists.webkit.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>jfbastien&#64;apple.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>jfbastien&#64;apple.com, keith_miller&#64;apple.com, mark.lam&#64;apple.com, msaboff&#64;apple.com, sbarati&#64;apple.com, utatane.tea&#64;gmail.com
          </td>
        </tr>

        <tr>
          <th>Blocks</th>
          <td>159775
          </td>
        </tr></table>
      <p>
        <div>
        <pre>The following test in test_Instance.js fails but shouldn't:

(function ExportedNumber() {
    for (let i = 0; i &lt;= 129; ++i) {
        const name = i.toString();
        const builder = (new Builder())
             .Type().End()
             .Function().End()
             .Export()
                 .Function(name)
             .End()
             .Code()
                 .Function(name, { params: [], ret: &quot;i32&quot; })
                 .I32Const(i)
                 .Return()
             .End()
             .End();
        const bin = builder.WebAssembly().get();
        const module = new WebAssembly.Module(bin);
        const instance = new WebAssembly.Instance(module);
        const result = instance.exports[name]();
        assert.isA(result, &quot;number&quot;);
        assert.eq(result, i);
    }
})();

If you prefix `name` with another string, everything works. I think the issue has to do with using AbstractModuleRecord, somewhere after:

        symbolTablePutTouchWatchpointSet(moduleEnvironment, state, exp.field, exportedValue, shouldThrowReadOnlyError, ignoreReadOnlyErrors, putResult);

exp.field is being put in properly, but then the ModuleRecord mapping is sad at string such as &quot;0&quot;.

I'm adding this test, commented out, and leaving a FIXME. The spec tests have a similar failure.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>