diff options
-rw-r--r-- | test/interp/atomic-rmw-cmpxchg.txt | 2 | ||||
-rw-r--r-- | test/parse/expr/bad-const-v128-nat-expected.txt | 5 | ||||
-rw-r--r-- | test/parse/expr/bad-const-v128-nat-overflow.txt | 3 | ||||
-rw-r--r-- | test/parse/expr/bad-const-v128-type-i32-expected.txt | 5 | ||||
-rw-r--r-- | test/parse/expr/const.txt | 1 | ||||
-rw-r--r-- | test/parse/expr/convert-sat.txt | 1 | ||||
-rw-r--r-- | test/parse/expr/unary-extend.txt | 1 | ||||
-rw-r--r-- | test/parse/module/import-mutable-global.txt | 1 | ||||
-rwxr-xr-x | test/run-tests.py | 303 | ||||
-rw-r--r-- | test/two-commands.txt | 11 | ||||
-rw-r--r-- | test/typecheck/bad-atomic-no-shared-memory.txt | 133 | ||||
-rw-r--r-- | test/typecheck/bad-atomic-type-mismatch.txt | 387 | ||||
-rw-r--r-- | test/typecheck/nocheck.txt | 1 |
13 files changed, 480 insertions, 374 deletions
diff --git a/test/interp/atomic-rmw-cmpxchg.txt b/test/interp/atomic-rmw-cmpxchg.txt index bddc935a..c713f70c 100644 --- a/test/interp/atomic-rmw-cmpxchg.txt +++ b/test/interp/atomic-rmw-cmpxchg.txt @@ -1,5 +1,5 @@ -;;; FLAGS: --enable-threads ;;; TOOL: run-interp +;;; FLAGS: --enable-threads (module (memory 1 1 shared) diff --git a/test/parse/expr/bad-const-v128-nat-expected.txt b/test/parse/expr/bad-const-v128-nat-expected.txt index 7ee4d755..aa5dae36 100644 --- a/test/parse/expr/bad-const-v128-nat-expected.txt +++ b/test/parse/expr/bad-const-v128-nat-expected.txt @@ -1,14 +1,15 @@ ;;; ERROR: 1 +;;; TOOL: wat2wasm ;;; FLAGS: --enable-simd (module (func v128.const i32 0x12345678 -123 0x00000000 0xabcd3478)) (module (func v128.const i32 0x12345678 0x9 +234 0xabcd3478)) (;; STDERR ;;; -out/test/parse/expr/bad-const-v128-nat-expected.txt:4:35: error: unexpected token "-123", expected an Nat literal (e.g. 123). +out/test/parse/expr/bad-const-v128-nat-expected.txt:5:35: error: unexpected token "-123", expected an Nat literal (e.g. 123). (func v128.const i32 0x12345678 -123 0x00000000 0xabcd3478)) ^^^^ -out/test/parse/expr/bad-const-v128-nat-expected.txt:6:39: error: unexpected token "+234", expected an Nat literal (e.g. 123). +out/test/parse/expr/bad-const-v128-nat-expected.txt:7:39: error: unexpected token "+234", expected an Nat literal (e.g. 123). (func v128.const i32 0x12345678 0x9 +234 0xabcd3478)) ^^^^ ;;; STDERR ;;) diff --git a/test/parse/expr/bad-const-v128-nat-overflow.txt b/test/parse/expr/bad-const-v128-nat-overflow.txt index e8423f9b..7660882e 100644 --- a/test/parse/expr/bad-const-v128-nat-overflow.txt +++ b/test/parse/expr/bad-const-v128-nat-overflow.txt @@ -1,9 +1,10 @@ ;;; ERROR: 1 +;;; TOOL: wat2wasm ;;; FLAGS: --enable-simd (module (func v128.const i32 0x12345678 0x123 4294967296 0xabcd3478)) (;; STDERR ;;; -out/test/parse/expr/bad-const-v128-nat-overflow.txt:4:41: error: invalid literal "4294967296" +out/test/parse/expr/bad-const-v128-nat-overflow.txt:5:41: error: invalid literal "4294967296" (func v128.const i32 0x12345678 0x123 4294967296 0xabcd3478)) ^^^^^^^^^^ ;;; STDERR ;;) diff --git a/test/parse/expr/bad-const-v128-type-i32-expected.txt b/test/parse/expr/bad-const-v128-type-i32-expected.txt index 654bf851..f8bcb26b 100644 --- a/test/parse/expr/bad-const-v128-type-i32-expected.txt +++ b/test/parse/expr/bad-const-v128-type-i32-expected.txt @@ -1,12 +1,13 @@ ;;; ERROR: 1 +;;; TOOL: wat2wasm ;;; FLAGS: --enable-simd (module (func v128.const 0x12345678 0x00000000 0x00000000 0xabcd3478)) (module (func v128.const i64 0x12345678 0x00000000 0x00000000 0xabcd3478)) (;; STDERR ;;; -out/test/parse/expr/bad-const-v128-type-i32-expected.txt:3:26: error: Expected i32 at start of simd constant +out/test/parse/expr/bad-const-v128-type-i32-expected.txt:4:26: error: Expected i32 at start of simd constant (module (func v128.const 0x12345678 0x00000000 0x00000000 0xabcd3478)) ^^^^^^^^^^ -out/test/parse/expr/bad-const-v128-type-i32-expected.txt:4:26: error: Expected i32 at start of simd constant +out/test/parse/expr/bad-const-v128-type-i32-expected.txt:5:26: error: Expected i32 at start of simd constant (module (func v128.const i64 0x12345678 0x00000000 0x00000000 0xabcd3478)) ^^^ ;;; STDERR ;;) diff --git a/test/parse/expr/const.txt b/test/parse/expr/const.txt index de885f39..ce13a77a 100644 --- a/test/parse/expr/const.txt +++ b/test/parse/expr/const.txt @@ -1,3 +1,4 @@ +;;; TOOL: wat2wasm ;;; FLAGS: --enable-simd (module (func diff --git a/test/parse/expr/convert-sat.txt b/test/parse/expr/convert-sat.txt index e2f6d07b..fa956c59 100644 --- a/test/parse/expr/convert-sat.txt +++ b/test/parse/expr/convert-sat.txt @@ -1,3 +1,4 @@ +;;; TOOL: wat2wasm ;;; FLAGS: --enable-saturating-float-to-int (module (func diff --git a/test/parse/expr/unary-extend.txt b/test/parse/expr/unary-extend.txt index 88791d48..24391649 100644 --- a/test/parse/expr/unary-extend.txt +++ b/test/parse/expr/unary-extend.txt @@ -1,3 +1,4 @@ +;;; TOOL: wat2wasm ;;; FLAGS: --enable-sign-extension (module (func diff --git a/test/parse/module/import-mutable-global.txt b/test/parse/module/import-mutable-global.txt index 67f68b7e..7af8e4da 100644 --- a/test/parse/module/import-mutable-global.txt +++ b/test/parse/module/import-mutable-global.txt @@ -1,2 +1,3 @@ +;;; TOOL: wat2wasm ;;; FLAGS: --enable-mutable-globals (module (import "mod" "field" (global (mut f32)))) diff --git a/test/run-tests.py b/test/run-tests.py index 4314b0c9..984139ac 100755 --- a/test/run-tests.py +++ b/test/run-tests.py @@ -43,19 +43,22 @@ SLOW_TIMEOUT_MULTIPLIER = 2 TOOLS = { 'wat2wasm': { 'EXE': '%(wat2wasm)s', - 'FLAGS': [ '-o', '%(out_dir)s/out.wasm'], + 'FLAGS': ['%(in_file)s', '-o', '%(out_dir)s/out.wasm'], 'VERBOSE-FLAGS': ['-v'] }, 'wast2json': { 'EXE': '%(wast2json)s', + 'FLAGS': ['%(in_file)s'], 'VERBOSE-FLAGS': ['-v'] }, 'wat-desugar': { - 'EXE': '%(wat-desugar)s' + 'EXE': '%(wat-desugar)s', + 'FLAGS': ['%(in_file)s'] }, 'run-objdump': { 'EXE': 'test/run-objdump.py', 'FLAGS': [ + '%(in_file)s', '--bindir=%(bindir)s', '--no-error-cmdline', '-o', '%(out_dir)s' @@ -64,12 +67,13 @@ TOOLS = { }, 'run-wasm-link': { 'EXE': 'test/run-wasm-link.py', - 'FLAGS': ['--bindir=%(bindir)s', '-o', '%(out_dir)s'], + 'FLAGS': ['%(in_file)s', '--bindir=%(bindir)s', '-o', '%(out_dir)s'], 'VERBOSE-FLAGS': ['-v'] }, 'run-roundtrip': { 'EXE': 'test/run-roundtrip.py', 'FLAGS': [ + '%(in_file)s', '-v', '--bindir=%(bindir)s', '--no-error-cmdline', @@ -81,6 +85,7 @@ TOOLS = { 'run-interp': { 'EXE': 'test/run-interp.py', 'FLAGS': [ + '%(in_file)s', '--bindir=%(bindir)s', '--run-all-exports', '--no-error-cmdline', @@ -92,6 +97,7 @@ TOOLS = { 'run-interp-spec': { 'EXE': 'test/run-interp.py', 'FLAGS': [ + '%(in_file)s', '--bindir=%(bindir)s', '--spec', '--no-error-cmdline', @@ -103,6 +109,7 @@ TOOLS = { 'run-gen-wasm': { 'EXE': 'test/run-gen-wasm.py', 'FLAGS': [ + '%(in_file)s', '--bindir=%(bindir)s', '--no-error-cmdline', '-o', @@ -113,6 +120,7 @@ TOOLS = { 'run-gen-wasm-interp': { 'EXE': 'test/run-gen-wasm-interp.py', 'FLAGS': [ + '%(in_file)s', '--bindir=%(bindir)s', '--run-all-exports', '--no-error-cmdline', @@ -124,6 +132,7 @@ TOOLS = { 'run-opcodecnt': { 'EXE': 'test/run-opcodecnt.py', 'FLAGS': [ + '%(in_file)s', '--bindir=%(bindir)s', '--no-error-cmdline', '-o', @@ -134,6 +143,7 @@ TOOLS = { 'run-gen-spec-js': { 'EXE': 'test/run-gen-spec-js.py', 'FLAGS': [ + '%(in_file)s', '--bindir=%(bindir)s', '--no-error-cmdline', '-o', @@ -144,6 +154,7 @@ TOOLS = { 'run-spec-wasm2c': { 'EXE': 'test/run-spec-wasm2c.py', 'FLAGS': [ + '%(in_file)s', '--bindir=%(bindir)s', '--no-error-cmdline', '-o', @@ -160,6 +171,10 @@ if IS_WINDOWS: ROUNDTRIP_TOOLS = ('wat2wasm',) +class NoRoundtripError(Error): + pass + + def Indent(s, spaces): return ''.join(' ' * spaces + l for l in s.splitlines(1)) @@ -172,11 +187,6 @@ def DiffLines(expected, actual): tofile='actual', lineterm='')) -def AppendBeforeExt(file_path, suffix): - file_path_noext, ext = os.path.splitext(file_path) - return file_path_noext + suffix + ext - - class Cell(object): def __init__(self, value): @@ -189,52 +199,131 @@ class Cell(object): return self.value[0] -def RunCommandWithTimeout(command, cwd, timeout, console_out=False, env=None): - process = None - is_timeout = Cell(False) +def SplitArgs(value): + if isinstance(value, list): + return value + return shlex.split(value) - def KillProcess(timeout=True): - if process: - try: - if IS_WINDOWS: - # http://stackoverflow.com/a/10830753: deleting child processes in - # Windows - subprocess.call(['taskkill', '/F', '/T', '/PID', str(process.pid)]) - else: - os.killpg(os.getpgid(process.pid), 15) - except OSError: - pass - is_timeout.Set(timeout) - try: - start_time = time.time() - kwargs = {} - if not IS_WINDOWS: - kwargs['preexec_fn'] = os.setsid - - # http://stackoverflow.com/a/10012262: subprocess with a timeout - # http://stackoverflow.com/a/22582602: kill subprocess and children - process = subprocess.Popen(command, cwd=cwd, env=env, - stdout=None if console_out else subprocess.PIPE, - stderr=None if console_out else subprocess.PIPE, - universal_newlines=True, **kwargs) - timer = threading.Timer(timeout, KillProcess) +class CommandTemplate(object): + + def __init__(self, exe): + self.exe = exe + self.flags = [] + self.verbose_flags = [] + self.last_cmd = None + + def AppendFlags(self, flags): + self.flags += SplitArgs(flags) + + def AppendVerboseFlags(self, flags_list): + for level, level_flags in enumerate(flags_list): + while level >= len(self.verbose_flags): + self.verbose_flags.append([]) + self.verbose_flags[level] += SplitArgs(level_flags) + + def _GetExecutable(self): + if os.path.splitext(self.exe)[1] == '.py': + return [sys.executable, os.path.join(REPO_ROOT_DIR, self.exe)] + else: + return [self.exe] + + def _Format(self, cmd, variables): + return [arg % variables for arg in cmd] + + def GetCommand(self, variables, extra_args=None, verbose_level=0): + args = self._GetExecutable() + vl = 0 + while vl < verbose_level and vl < len(self.verbose_flags): + args += self.verbose_flags[vl] + vl += 1 + if extra_args: + args += extra_args + args += self.flags + args = self._Format(args, variables) + self.last_cmd = args + return Command(args) + + +class Command(object): + + def __init__(self, args): + self.args = args + + def Run(self, cwd, timeout, console_out=False, env=None): + process = None + is_timeout = Cell(False) + + def KillProcess(timeout=True): + if process: + try: + if IS_WINDOWS: + # http://stackoverflow.com/a/10830753: deleting child processes in + # Windows + subprocess.call(['taskkill', '/F', '/T', '/PID', str(process.pid)]) + else: + os.killpg(os.getpgid(process.pid), 15) + except OSError: + pass + is_timeout.Set(timeout) + try: - timer.start() - stdout, stderr = process.communicate() + start_time = time.time() + kwargs = {} + if not IS_WINDOWS: + kwargs['preexec_fn'] = os.setsid + + # http://stackoverflow.com/a/10012262: subprocess with a timeout + # http://stackoverflow.com/a/22582602: kill subprocess and children + process = subprocess.Popen(self.args, cwd=cwd, env=env, + stdout=None if console_out else subprocess.PIPE, + stderr=None if console_out else subprocess.PIPE, + universal_newlines=True, **kwargs) + timer = threading.Timer(timeout, KillProcess) + try: + timer.start() + stdout, stderr = process.communicate() + finally: + returncode = process.returncode + process = None + timer.cancel() + if is_timeout.Get(): + raise Error('TIMEOUT\nSTDOUT:\n%s\nSTDERR:\n%s\n' % (stdout, stderr)) + duration = time.time() - start_time + except OSError as e: + raise Error(str(e)) finally: - returncode = process.returncode - process = None - timer.cancel() - if is_timeout.Get(): - raise Error('TIMEOUT\nSTDOUT:\n%s\nSTDERR:\n%s\n' % (stdout, stderr)) - duration = time.time() - start_time - except OSError as e: - raise Error(str(e)) - finally: - KillProcess(False) + KillProcess(False) + + return RunResult(stdout, stderr, returncode, duration) - return stdout, stderr, returncode, duration + def __str__(self): + return ' '.join(self.args) + + +class RunResult(object): + + def __init__(self, stdout = '', stderr = '', returncode = 0, duration = 0): + self.stdout = stdout + self.stderr = stderr + self.returncode = returncode + self.duration = duration + + def Failed(self): + return self.returncode != 0 + + def Append(self, other): + assert isinstance(other, RunResult) + self.stdout += other.stdout + self.stderr += other.stderr + self.duration += other.duration + + assert(self.returncode == 0) + self.returncode = other.returncode + + def __repr__(self): + return 'RunResult(%s, %s, %s, %s)' % (self.stdout, self.stderr, + self.returncode, self.duration) class TestInfo(object): @@ -247,8 +336,7 @@ class TestInfo(object): self.expected_stdout = '' self.expected_stderr = '' self.tool = None - self.exe = None - self.flags = [] + self.cmds = [] self.env = {} self.last_cmd = '' self.expected_error = 0 @@ -257,6 +345,12 @@ class TestInfo(object): self.is_roundtrip = False def CreateRoundtripInfo(self, fold_exprs): + if self.tool not in ROUNDTRIP_TOOLS: + raise NoRoundtripError() + + if len(self.cmds) != 1: + raise NoRoundtripError() + result = TestInfo() result.SetTool('run-roundtrip') result.filename = self.filename @@ -265,11 +359,15 @@ class TestInfo(object): result.input_ = self.input_ result.expected_stdout = '' result.expected_stderr = '' + # TODO(binji): It's kind of cheesy to keep the enable flag based on prefix. # Maybe it would be nicer to add a new directive ENABLE instead. - result.flags = [flag for flag in self.flags if flag.startswith('--enable')] + old_cmd = self.cmds[0] + new_cmd = result.cmds[0] + new_cmd.AppendFlags([f for f in old_cmd.flags if f.startswith('--enable')]) if fold_exprs: - result.flags.append('--fold-exprs') + new_cmd.AppendFlags('--fold-exprs') + result.env = self.env result.expected_error = 0 result.slow = self.slow @@ -311,9 +409,6 @@ class TestInfo(object): return path - def ShouldCreateRoundtrip(self): - return self.tool in ROUNDTRIP_TOOLS - def SetTool(self, tool): if tool not in TOOLS: raise Error('Unknown tool: %s' % tool) @@ -321,15 +416,20 @@ class TestInfo(object): for tool_key, tool_value in TOOLS[tool].items(): self.ParseDirective(tool_key, tool_value) + def GetLastCommand(self): + if not self.cmds: + self.SetTool('wat2wasm') + return self.cmds[-1] + def ParseDirective(self, key, value): if key == 'EXE': - self.exe = value + self.cmds.append(CommandTemplate(value)) elif key == 'STDIN_FILE': self.input_filename = value elif key == 'FLAGS': if not isinstance(value, list): value = shlex.split(value) - self.flags += value + self.GetLastCommand().AppendFlags(value) elif key == 'ERROR': self.expected_error = int(value) elif key == 'SLOW': @@ -337,7 +437,7 @@ class TestInfo(object): elif key == 'SKIP': self.skip = True elif key == 'VERBOSE-FLAGS': - self.verbose_flags = [shlex.split(level) for level in value] + self.GetLastCommand().AppendVerboseFlags(value) elif key in ['TODO', 'NOTE']: pass elif key == 'TOOL': @@ -353,7 +453,6 @@ class TestInfo(object): test_path = os.path.join(REPO_ROOT_DIR, filename) with open(test_path) as f: - seen_keys = set() state = 'header' empty = True header_lines = [] @@ -379,9 +478,6 @@ class TestInfo(object): key, value = directive.split(':', 1) key = key.strip() value = value.strip() - if key in seen_keys: - raise Error('%s already set' % key) - seen_keys.add(key) self.ParseDirective(key, value) elif state in ('stdout', 'stderr'): if not re.match(r'%s ;;\)$' % state.upper(), directive): @@ -413,32 +509,9 @@ class TestInfo(object): # If the test didn't specify a executable (either via EXE or indirectly # via TOOL, then use the default tool) - if not self.exe: + if not self.cmds: self.SetTool('wat2wasm') - def GetExecutable(self): - if os.path.splitext(self.exe)[1] == '.py': - return [sys.executable, os.path.join(REPO_ROOT_DIR, self.exe)] - else: - return [self.exe] - - def FormatCommand(self, cmd, variables): - return [arg % variables for arg in cmd] - - def GetCommand(self, filename, variables, extra_args=None, verbose_level=0): - cmd = self.GetExecutable() - vl = 0 - while vl < verbose_level and vl < len(self.verbose_flags): - cmd += self.verbose_flags[vl] - vl += 1 - if extra_args: - cmd += extra_args - cmd += self.flags - cmd += [filename.replace(os.path.sep, '/')] - cmd = self.FormatCommand(cmd, variables) - self.last_cmd = cmd - return cmd - def CreateInputFile(self): gen_input_path = self.GetGeneratedInputFilename() gen_input_dir = os.path.dirname(gen_input_path) @@ -587,7 +660,9 @@ def RunTest(info, options, variables, verbose_level=0): env = dict(os.environ) env.update(info.env) gen_input_path = info.CreateInputFile() - rel_gen_input_path = os.path.relpath(gen_input_path, cwd) + rel_gen_input_path = ( + os.path.relpath(gen_input_path, cwd).replace(os.path.sep, '/')) + variables['in_file'] = rel_gen_input_path # Each test runs with a unique output directory which is removed before # we run the test. @@ -597,15 +672,23 @@ def RunTest(info, options, variables, verbose_level=0): os.makedirs(out_dir) variables['out_dir'] = out_dir - cmd = info.GetCommand(rel_gen_input_path, variables, options.arg, - verbose_level) - if options.print_cmd: - print(' '.join(cmd)) + final_result = RunResult() - try: - return RunCommandWithTimeout(cmd, cwd, timeout, verbose_level > 0, env) - except (Error, KeyboardInterrupt) as e: - return e + for cmd_template in info.cmds: + cmd = cmd_template.GetCommand(variables, options.arg, verbose_level) + if options.print_cmd: + print(cmd) + + try: + result = cmd.Run(cwd, timeout, verbose_level > 0, env) + except (Error, KeyboardInterrupt) as e: + return e + + final_result.Append(result) + if final_result.Failed(): + break + + return final_result def HandleTestResult(status, info, result, rebase=False): @@ -613,32 +696,31 @@ def HandleTestResult(status, info, result, rebase=False): if isinstance(result, (Error, KeyboardInterrupt)): raise result - stdout, stderr, returncode, duration = result if info.is_roundtrip: - if returncode == 0: - status.Passed(info, duration) - elif returncode == 2: + if result.returncode == 0: + status.Passed(info, result.duration) + elif result.returncode == 2: # run-roundtrip.py returns 2 if the file couldn't be parsed. # it's likely a "bad-*" file. status.Skipped(info) else: raise Error(stderr) else: - if returncode != info.expected_error: + if result.returncode != info.expected_error: # This test has already failed, but diff it anyway. msg = 'expected error code %d, got %d.' % (info.expected_error, - returncode) + result.returncode) try: - info.Diff(stdout, stderr) + info.Diff(result.stdout, result.stderr) except Error as e: msg += '\n' + str(e) raise Error(msg) else: if rebase: - info.Rebase(stdout, stderr) + info.Rebase(result.stdout, result.stderr) else: - info.Diff(stdout, stderr) - status.Passed(info, duration) + info.Diff(result.stdout, result.stderr) + status.Passed(info, result.duration) except Error as e: status.Failed(info, str(e)) @@ -802,9 +884,12 @@ def main(args): continue infos_to_run.append(info) - if options.roundtrip and info.ShouldCreateRoundtrip(): - infos_to_run.append(info.CreateRoundtripInfo(fold_exprs=False)) - infos_to_run.append(info.CreateRoundtripInfo(fold_exprs=True)) + if options.roundtrip: + for fold_exprs in False, True: + try: + infos_to_run.append(info.CreateRoundtripInfo(fold_exprs=fold_exprs)) + except NoRoundtripError: + pass if not os.path.exists(OUT_DIR): os.makedirs(OUT_DIR) diff --git a/test/two-commands.txt b/test/two-commands.txt new file mode 100644 index 00000000..2aa6d9a3 --- /dev/null +++ b/test/two-commands.txt @@ -0,0 +1,11 @@ +;;; TOOL: wat2wasm +;;; FLAGS: -v +;;; TOOL: wat2wasm +;;; FLAGS: -v +(module) +(;; STDOUT ;;; +0000000: 0061 736d ; WASM_BINARY_MAGIC +0000004: 0100 0000 ; WASM_BINARY_VERSION +0000000: 0061 736d ; WASM_BINARY_MAGIC +0000004: 0100 0000 ; WASM_BINARY_VERSION +;;; STDOUT ;;) diff --git a/test/typecheck/bad-atomic-no-shared-memory.txt b/test/typecheck/bad-atomic-no-shared-memory.txt index e101f254..2bc0da5c 100644 --- a/test/typecheck/bad-atomic-no-shared-memory.txt +++ b/test/typecheck/bad-atomic-no-shared-memory.txt @@ -1,4 +1,5 @@ ;;; ERROR: 1 +;;; TOOL: wat2wasm ;;; FLAGS: --enable-threads (module @@ -82,202 +83,202 @@ )) (;; STDERR ;;; -out/test/typecheck/bad-atomic-no-shared-memory.txt:7:29: error: atomic.wake requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:8:29: error: atomic.wake requires memory to be shared. i32.const 0 i32.const 0 atomic.wake drop ^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:8:41: error: i32.atomic.wait requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:9:41: error: i32.atomic.wait requires memory to be shared. i32.const 0 i32.const 0 i64.const 0 i32.atomic.wait drop ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:9:41: error: i64.atomic.wait requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:10:41: error: i64.atomic.wait requires memory to be shared. i32.const 0 i64.const 0 i64.const 0 i64.atomic.wait drop ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:11:17: error: i32.atomic.load requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:12:17: error: i32.atomic.load requires memory to be shared. i32.const 0 i32.atomic.load drop ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:12:17: error: i64.atomic.load requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:13:17: error: i64.atomic.load requires memory to be shared. i32.const 0 i64.atomic.load drop ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:13:17: error: i32.atomic.load8_u requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:14:17: error: i32.atomic.load8_u requires memory to be shared. i32.const 0 i32.atomic.load8_u drop ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:14:17: error: i32.atomic.load16_u requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:15:17: error: i32.atomic.load16_u requires memory to be shared. i32.const 0 i32.atomic.load16_u drop ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:15:17: error: i64.atomic.load8_u requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:16:17: error: i64.atomic.load8_u requires memory to be shared. i32.const 0 i64.atomic.load8_u drop ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:16:17: error: i64.atomic.load16_u requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:17:17: error: i64.atomic.load16_u requires memory to be shared. i32.const 0 i64.atomic.load16_u drop ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:17:17: error: i64.atomic.load32_u requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:18:17: error: i64.atomic.load32_u requires memory to be shared. i32.const 0 i64.atomic.load32_u drop ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:19:29: error: i32.atomic.store requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:20:29: error: i32.atomic.store requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.store ^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:20:29: error: i64.atomic.store requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:21:29: error: i64.atomic.store requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.store ^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:21:29: error: i32.atomic.store8 requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:22:29: error: i32.atomic.store8 requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.store8 ^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:22:29: error: i32.atomic.store16 requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:23:29: error: i32.atomic.store16 requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.store16 ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:23:29: error: i64.atomic.store8 requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:24:29: error: i64.atomic.store8 requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.store8 ^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:24:29: error: i64.atomic.store16 requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:25:29: error: i64.atomic.store16 requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.store16 ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:25:29: error: i64.atomic.store32 requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:26:29: error: i64.atomic.store32 requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.store32 ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:27:29: error: i32.atomic.rmw.add requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:28:29: error: i32.atomic.rmw.add requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw.add drop ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:28:29: error: i64.atomic.rmw.add requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:29:29: error: i64.atomic.rmw.add requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw.add drop ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:29:29: error: i32.atomic.rmw8_u.add requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:30:29: error: i32.atomic.rmw8_u.add requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw8_u.add drop ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:30:29: error: i32.atomic.rmw16_u.add requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:31:29: error: i32.atomic.rmw16_u.add requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw16_u.add drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:31:29: error: i64.atomic.rmw8_u.add requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:32:29: error: i64.atomic.rmw8_u.add requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw8_u.add drop ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:32:29: error: i64.atomic.rmw16_u.add requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:33:29: error: i64.atomic.rmw16_u.add requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw16_u.add drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:33:29: error: i64.atomic.rmw32_u.add requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:34:29: error: i64.atomic.rmw32_u.add requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw32_u.add drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:35:29: error: i32.atomic.rmw.sub requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:36:29: error: i32.atomic.rmw.sub requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw.sub drop ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:36:29: error: i64.atomic.rmw.sub requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:37:29: error: i64.atomic.rmw.sub requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw.sub drop ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:37:29: error: i32.atomic.rmw8_u.sub requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:38:29: error: i32.atomic.rmw8_u.sub requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw8_u.sub drop ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:38:29: error: i32.atomic.rmw16_u.sub requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:39:29: error: i32.atomic.rmw16_u.sub requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw16_u.sub drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:39:29: error: i64.atomic.rmw8_u.sub requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:40:29: error: i64.atomic.rmw8_u.sub requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw8_u.sub drop ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:40:29: error: i64.atomic.rmw16_u.sub requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:41:29: error: i64.atomic.rmw16_u.sub requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw16_u.sub drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:41:29: error: i64.atomic.rmw32_u.sub requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:42:29: error: i64.atomic.rmw32_u.sub requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw32_u.sub drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:43:29: error: i32.atomic.rmw.and requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:44:29: error: i32.atomic.rmw.and requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw.and drop ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:44:29: error: i64.atomic.rmw.and requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:45:29: error: i64.atomic.rmw.and requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw.and drop ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:45:29: error: i32.atomic.rmw8_u.and requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:46:29: error: i32.atomic.rmw8_u.and requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw8_u.and drop ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:46:29: error: i32.atomic.rmw16_u.and requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:47:29: error: i32.atomic.rmw16_u.and requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw16_u.and drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:47:29: error: i64.atomic.rmw8_u.and requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:48:29: error: i64.atomic.rmw8_u.and requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw8_u.and drop ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:48:29: error: i64.atomic.rmw16_u.and requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:49:29: error: i64.atomic.rmw16_u.and requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw16_u.and drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:49:29: error: i64.atomic.rmw32_u.and requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:50:29: error: i64.atomic.rmw32_u.and requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw32_u.and drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:51:29: error: i32.atomic.rmw.or requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:52:29: error: i32.atomic.rmw.or requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw.or drop ^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:52:29: error: i64.atomic.rmw.or requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:53:29: error: i64.atomic.rmw.or requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw.or drop ^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:53:29: error: i32.atomic.rmw8_u.or requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:54:29: error: i32.atomic.rmw8_u.or requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw8_u.or drop ^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:54:29: error: i32.atomic.rmw16_u.or requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:55:29: error: i32.atomic.rmw16_u.or requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw16_u.or drop ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:55:29: error: i64.atomic.rmw8_u.or requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:56:29: error: i64.atomic.rmw8_u.or requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw8_u.or drop ^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:56:29: error: i64.atomic.rmw16_u.or requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:57:29: error: i64.atomic.rmw16_u.or requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw16_u.or drop ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:57:29: error: i64.atomic.rmw32_u.or requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:58:29: error: i64.atomic.rmw32_u.or requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw32_u.or drop ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:59:29: error: i32.atomic.rmw.xor requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:60:29: error: i32.atomic.rmw.xor requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw.xor drop ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:60:29: error: i64.atomic.rmw.xor requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:61:29: error: i64.atomic.rmw.xor requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw.xor drop ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:61:29: error: i32.atomic.rmw8_u.xor requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:62:29: error: i32.atomic.rmw8_u.xor requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw8_u.xor drop ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:62:29: error: i32.atomic.rmw16_u.xor requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:63:29: error: i32.atomic.rmw16_u.xor requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw16_u.xor drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:63:29: error: i64.atomic.rmw8_u.xor requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:64:29: error: i64.atomic.rmw8_u.xor requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw8_u.xor drop ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:64:29: error: i64.atomic.rmw16_u.xor requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:65:29: error: i64.atomic.rmw16_u.xor requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw16_u.xor drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:65:29: error: i64.atomic.rmw32_u.xor requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:66:29: error: i64.atomic.rmw32_u.xor requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw32_u.xor drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:67:29: error: i32.atomic.rmw.xchg requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:68:29: error: i32.atomic.rmw.xchg requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw.xchg drop ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:68:29: error: i64.atomic.rmw.xchg requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:69:29: error: i64.atomic.rmw.xchg requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw.xchg drop ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:69:29: error: i32.atomic.rmw8_u.xchg requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:70:29: error: i32.atomic.rmw8_u.xchg requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw8_u.xchg drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:70:29: error: i32.atomic.rmw16_u.xchg requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:71:29: error: i32.atomic.rmw16_u.xchg requires memory to be shared. i32.const 0 i32.const 0 i32.atomic.rmw16_u.xchg drop ^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:71:29: error: i64.atomic.rmw8_u.xchg requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:72:29: error: i64.atomic.rmw8_u.xchg requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw8_u.xchg drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:72:29: error: i64.atomic.rmw16_u.xchg requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:73:29: error: i64.atomic.rmw16_u.xchg requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw16_u.xchg drop ^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:73:29: error: i64.atomic.rmw32_u.xchg requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:74:29: error: i64.atomic.rmw32_u.xchg requires memory to be shared. i32.const 0 i64.const 0 i64.atomic.rmw32_u.xchg drop ^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:75:41: error: i32.atomic.rmw.cmpxchg requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:76:41: error: i32.atomic.rmw.cmpxchg requires memory to be shared. i32.const 0 i32.const 0 i32.const 0 i32.atomic.rmw.cmpxchg drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:76:41: error: i64.atomic.rmw.cmpxchg requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:77:41: error: i64.atomic.rmw.cmpxchg requires memory to be shared. i32.const 0 i64.const 0 i64.const 0 i64.atomic.rmw.cmpxchg drop ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:77:41: error: i32.atomic.rmw8_u.cmpxchg requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:78:41: error: i32.atomic.rmw8_u.cmpxchg requires memory to be shared. i32.const 0 i32.const 0 i32.const 0 i32.atomic.rmw8_u.cmpxchg drop ^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:78:41: error: i32.atomic.rmw16_u.cmpxchg requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:79:41: error: i32.atomic.rmw16_u.cmpxchg requires memory to be shared. i32.const 0 i32.const 0 i32.const 0 i32.atomic.rmw16_u.cmpxchg drop ^^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:79:41: error: i64.atomic.rmw8_u.cmpxchg requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:80:41: error: i64.atomic.rmw8_u.cmpxchg requires memory to be shared. i32.const 0 i64.const 0 i64.const 0 i64.atomic.rmw8_u.cmpxchg drop ^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:80:41: error: i64.atomic.rmw16_u.cmpxchg requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:81:41: error: i64.atomic.rmw16_u.cmpxchg requires memory to be shared. i32.const 0 i64.const 0 i64.const 0 i64.atomic.rmw16_u.cmpxchg drop ^^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-no-shared-memory.txt:81:41: error: i64.atomic.rmw32_u.cmpxchg requires memory to be shared. +out/test/typecheck/bad-atomic-no-shared-memory.txt:82:41: error: i64.atomic.rmw32_u.cmpxchg requires memory to be shared. i32.const 0 i64.const 0 i64.const 0 i64.atomic.rmw32_u.cmpxchg drop ^^^^^^^^^^^^^^^^^^^^^^^^^^ ;;; STDERR ;;) diff --git a/test/typecheck/bad-atomic-type-mismatch.txt b/test/typecheck/bad-atomic-type-mismatch.txt index c66c74ec..59438dfe 100644 --- a/test/typecheck/bad-atomic-type-mismatch.txt +++ b/test/typecheck/bad-atomic-type-mismatch.txt @@ -1,4 +1,5 @@ ;;; ERROR: 1 +;;; TOOL: wat2wasm ;;; FLAGS: --enable-threads (module @@ -207,583 +208,583 @@ ) (;; STDERR ;;; -out/test/typecheck/bad-atomic-type-mismatch.txt:8:33: error: type mismatch in atomic.wake, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:9:33: error: type mismatch in atomic.wake, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 atomic.wake drop) ^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:9:45: error: type mismatch in i32.atomic.wait, expected [i32, i32, i64] but got [f32, i32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:10:45: error: type mismatch in i32.atomic.wait, expected [i32, i32, i64] but got [f32, i32, i64] (func f32.const 0 i32.const 0 i64.const 0 i32.atomic.wait drop) ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:10:45: error: type mismatch in i64.atomic.wait, expected [i32, i64, i64] but got [f32, i64, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:11:45: error: type mismatch in i64.atomic.wait, expected [i32, i64, i64] but got [f32, i64, i64] (func f32.const 0 i64.const 0 i64.const 0 i64.atomic.wait drop) ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:11:21: error: type mismatch in i32.atomic.load, expected [i32] but got [f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:12:21: error: type mismatch in i32.atomic.load, expected [i32] but got [f32] (func f32.const 0 i32.atomic.load drop) ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:12:21: error: type mismatch in i64.atomic.load, expected [i32] but got [f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:13:21: error: type mismatch in i64.atomic.load, expected [i32] but got [f32] (func f32.const 0 i64.atomic.load drop) ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:13:21: error: type mismatch in i32.atomic.load8_u, expected [i32] but got [f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:14:21: error: type mismatch in i32.atomic.load8_u, expected [i32] but got [f32] (func f32.const 0 i32.atomic.load8_u drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:14:21: error: type mismatch in i32.atomic.load16_u, expected [i32] but got [f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:15:21: error: type mismatch in i32.atomic.load16_u, expected [i32] but got [f32] (func f32.const 0 i32.atomic.load16_u drop) ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:15:21: error: type mismatch in i64.atomic.load8_u, expected [i32] but got [f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:16:21: error: type mismatch in i64.atomic.load8_u, expected [i32] but got [f32] (func f32.const 0 i64.atomic.load8_u drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:16:21: error: type mismatch in i64.atomic.load16_u, expected [i32] but got [f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:17:21: error: type mismatch in i64.atomic.load16_u, expected [i32] but got [f32] (func f32.const 0 i64.atomic.load16_u drop) ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:17:21: error: type mismatch in i64.atomic.load32_u, expected [i32] but got [f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:18:21: error: type mismatch in i64.atomic.load32_u, expected [i32] but got [f32] (func f32.const 0 i64.atomic.load32_u drop) ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:18:33: error: type mismatch in i32.atomic.store, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:19:33: error: type mismatch in i32.atomic.store, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.store) ^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:19:33: error: type mismatch in i64.atomic.store, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:20:33: error: type mismatch in i64.atomic.store, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.store) ^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:20:33: error: type mismatch in i32.atomic.store8, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:21:33: error: type mismatch in i32.atomic.store8, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.store8) ^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:21:33: error: type mismatch in i32.atomic.store16, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:22:33: error: type mismatch in i32.atomic.store16, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.store16) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:22:33: error: type mismatch in i64.atomic.store8, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:23:33: error: type mismatch in i64.atomic.store8, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.store8) ^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:23:33: error: type mismatch in i64.atomic.store16, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:24:33: error: type mismatch in i64.atomic.store16, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.store16) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:24:33: error: type mismatch in i64.atomic.store32, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:25:33: error: type mismatch in i64.atomic.store32, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.store32) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:25:33: error: type mismatch in i32.atomic.rmw.add, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:26:33: error: type mismatch in i32.atomic.rmw.add, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw.add drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:26:33: error: type mismatch in i64.atomic.rmw.add, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:27:33: error: type mismatch in i64.atomic.rmw.add, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw.add drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:27:33: error: type mismatch in i32.atomic.rmw8_u.add, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:28:33: error: type mismatch in i32.atomic.rmw8_u.add, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw8_u.add drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:28:33: error: type mismatch in i32.atomic.rmw16_u.add, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:29:33: error: type mismatch in i32.atomic.rmw16_u.add, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw16_u.add drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:29:33: error: type mismatch in i64.atomic.rmw8_u.add, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:30:33: error: type mismatch in i64.atomic.rmw8_u.add, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw8_u.add drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:30:33: error: type mismatch in i64.atomic.rmw16_u.add, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:31:33: error: type mismatch in i64.atomic.rmw16_u.add, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw16_u.add drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:31:33: error: type mismatch in i64.atomic.rmw32_u.add, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:32:33: error: type mismatch in i64.atomic.rmw32_u.add, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw32_u.add drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:32:33: error: type mismatch in i32.atomic.rmw.sub, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:33:33: error: type mismatch in i32.atomic.rmw.sub, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw.sub drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:33:33: error: type mismatch in i64.atomic.rmw.sub, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:34:33: error: type mismatch in i64.atomic.rmw.sub, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw.sub drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:34:33: error: type mismatch in i32.atomic.rmw8_u.sub, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:35:33: error: type mismatch in i32.atomic.rmw8_u.sub, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw8_u.sub drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:35:33: error: type mismatch in i32.atomic.rmw16_u.sub, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:36:33: error: type mismatch in i32.atomic.rmw16_u.sub, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw16_u.sub drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:36:33: error: type mismatch in i64.atomic.rmw8_u.sub, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:37:33: error: type mismatch in i64.atomic.rmw8_u.sub, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw8_u.sub drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:37:33: error: type mismatch in i64.atomic.rmw16_u.sub, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:38:33: error: type mismatch in i64.atomic.rmw16_u.sub, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw16_u.sub drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:38:33: error: type mismatch in i64.atomic.rmw32_u.sub, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:39:33: error: type mismatch in i64.atomic.rmw32_u.sub, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw32_u.sub drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:39:33: error: type mismatch in i32.atomic.rmw.and, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:40:33: error: type mismatch in i32.atomic.rmw.and, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw.and drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:40:33: error: type mismatch in i64.atomic.rmw.and, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:41:33: error: type mismatch in i64.atomic.rmw.and, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw.and drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:41:33: error: type mismatch in i32.atomic.rmw8_u.and, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:42:33: error: type mismatch in i32.atomic.rmw8_u.and, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw8_u.and drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:42:33: error: type mismatch in i32.atomic.rmw16_u.and, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:43:33: error: type mismatch in i32.atomic.rmw16_u.and, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw16_u.and drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:43:33: error: type mismatch in i64.atomic.rmw8_u.and, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:44:33: error: type mismatch in i64.atomic.rmw8_u.and, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw8_u.and drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:44:33: error: type mismatch in i64.atomic.rmw16_u.and, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:45:33: error: type mismatch in i64.atomic.rmw16_u.and, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw16_u.and drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:45:33: error: type mismatch in i64.atomic.rmw32_u.and, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:46:33: error: type mismatch in i64.atomic.rmw32_u.and, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw32_u.and drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:46:33: error: type mismatch in i32.atomic.rmw.or, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:47:33: error: type mismatch in i32.atomic.rmw.or, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw.or drop) ^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:47:33: error: type mismatch in i64.atomic.rmw.or, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:48:33: error: type mismatch in i64.atomic.rmw.or, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw.or drop) ^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:48:33: error: type mismatch in i32.atomic.rmw8_u.or, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:49:33: error: type mismatch in i32.atomic.rmw8_u.or, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw8_u.or drop) ^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:49:33: error: type mismatch in i32.atomic.rmw16_u.or, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:50:33: error: type mismatch in i32.atomic.rmw16_u.or, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw16_u.or drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:50:33: error: type mismatch in i64.atomic.rmw8_u.or, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:51:33: error: type mismatch in i64.atomic.rmw8_u.or, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw8_u.or drop) ^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:51:33: error: type mismatch in i64.atomic.rmw16_u.or, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:52:33: error: type mismatch in i64.atomic.rmw16_u.or, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw16_u.or drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:52:33: error: type mismatch in i64.atomic.rmw32_u.or, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:53:33: error: type mismatch in i64.atomic.rmw32_u.or, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw32_u.or drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:53:33: error: type mismatch in i32.atomic.rmw.xor, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:54:33: error: type mismatch in i32.atomic.rmw.xor, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw.xor drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:54:33: error: type mismatch in i64.atomic.rmw.xor, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:55:33: error: type mismatch in i64.atomic.rmw.xor, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw.xor drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:55:33: error: type mismatch in i32.atomic.rmw8_u.xor, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:56:33: error: type mismatch in i32.atomic.rmw8_u.xor, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw8_u.xor drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:56:33: error: type mismatch in i32.atomic.rmw16_u.xor, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:57:33: error: type mismatch in i32.atomic.rmw16_u.xor, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw16_u.xor drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:57:33: error: type mismatch in i64.atomic.rmw8_u.xor, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:58:33: error: type mismatch in i64.atomic.rmw8_u.xor, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw8_u.xor drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:58:33: error: type mismatch in i64.atomic.rmw16_u.xor, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:59:33: error: type mismatch in i64.atomic.rmw16_u.xor, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw16_u.xor drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:59:33: error: type mismatch in i64.atomic.rmw32_u.xor, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:60:33: error: type mismatch in i64.atomic.rmw32_u.xor, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw32_u.xor drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:60:33: error: type mismatch in i32.atomic.rmw.xchg, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:61:33: error: type mismatch in i32.atomic.rmw.xchg, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw.xchg drop) ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:61:33: error: type mismatch in i64.atomic.rmw.xchg, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:62:33: error: type mismatch in i64.atomic.rmw.xchg, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw.xchg drop) ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:62:33: error: type mismatch in i32.atomic.rmw8_u.xchg, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:63:33: error: type mismatch in i32.atomic.rmw8_u.xchg, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw8_u.xchg drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:63:33: error: type mismatch in i32.atomic.rmw16_u.xchg, expected [i32, i32] but got [f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:64:33: error: type mismatch in i32.atomic.rmw16_u.xchg, expected [i32, i32] but got [f32, i32] (func f32.const 0 i32.const 0 i32.atomic.rmw16_u.xchg drop) ^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:64:33: error: type mismatch in i64.atomic.rmw8_u.xchg, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:65:33: error: type mismatch in i64.atomic.rmw8_u.xchg, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw8_u.xchg drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:65:33: error: type mismatch in i64.atomic.rmw16_u.xchg, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:66:33: error: type mismatch in i64.atomic.rmw16_u.xchg, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw16_u.xchg drop) ^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:66:33: error: type mismatch in i64.atomic.rmw32_u.xchg, expected [i32, i64] but got [f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:67:33: error: type mismatch in i64.atomic.rmw32_u.xchg, expected [i32, i64] but got [f32, i64] (func f32.const 0 i64.const 0 i64.atomic.rmw32_u.xchg drop) ^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:67:45: error: type mismatch in i32.atomic.rmw.cmpxchg, expected [i32, i32, i32] but got [f32, i32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:68:45: error: type mismatch in i32.atomic.rmw.cmpxchg, expected [i32, i32, i32] but got [f32, i32, i32] (func f32.const 0 i32.const 0 i32.const 0 i32.atomic.rmw.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:68:45: error: type mismatch in i64.atomic.rmw.cmpxchg, expected [i32, i64, i64] but got [f32, i64, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:69:45: error: type mismatch in i64.atomic.rmw.cmpxchg, expected [i32, i64, i64] but got [f32, i64, i64] (func f32.const 0 i64.const 0 i64.const 0 i64.atomic.rmw.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:69:45: error: type mismatch in i32.atomic.rmw8_u.cmpxchg, expected [i32, i32, i32] but got [f32, i32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:70:45: error: type mismatch in i32.atomic.rmw8_u.cmpxchg, expected [i32, i32, i32] but got [f32, i32, i32] (func f32.const 0 i32.const 0 i32.const 0 i32.atomic.rmw8_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:70:45: error: type mismatch in i32.atomic.rmw16_u.cmpxchg, expected [i32, i32, i32] but got [f32, i32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:71:45: error: type mismatch in i32.atomic.rmw16_u.cmpxchg, expected [i32, i32, i32] but got [f32, i32, i32] (func f32.const 0 i32.const 0 i32.const 0 i32.atomic.rmw16_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:71:45: error: type mismatch in i64.atomic.rmw8_u.cmpxchg, expected [i32, i64, i64] but got [f32, i64, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:72:45: error: type mismatch in i64.atomic.rmw8_u.cmpxchg, expected [i32, i64, i64] but got [f32, i64, i64] (func f32.const 0 i64.const 0 i64.const 0 i64.atomic.rmw8_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:72:45: error: type mismatch in i64.atomic.rmw16_u.cmpxchg, expected [i32, i64, i64] but got [f32, i64, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:73:45: error: type mismatch in i64.atomic.rmw16_u.cmpxchg, expected [i32, i64, i64] but got [f32, i64, i64] (func f32.const 0 i64.const 0 i64.const 0 i64.atomic.rmw16_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:73:45: error: type mismatch in i64.atomic.rmw32_u.cmpxchg, expected [i32, i64, i64] but got [f32, i64, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:74:45: error: type mismatch in i64.atomic.rmw32_u.cmpxchg, expected [i32, i64, i64] but got [f32, i64, i64] (func f32.const 0 i64.const 0 i64.const 0 i64.atomic.rmw32_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:76:33: error: type mismatch in atomic.wake, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:77:33: error: type mismatch in atomic.wake, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 atomic.wake drop) ^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:77:45: error: type mismatch in i32.atomic.wait, expected [i32, i32, i64] but got [i32, f32, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:78:45: error: type mismatch in i32.atomic.wait, expected [i32, i32, i64] but got [i32, f32, i64] (func i32.const 0 f32.const 0 i64.const 0 i32.atomic.wait drop) ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:78:45: error: type mismatch in i64.atomic.wait, expected [i32, i64, i64] but got [i32, f64, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:79:45: error: type mismatch in i64.atomic.wait, expected [i32, i64, i64] but got [i32, f64, i64] (func i32.const 0 f64.const 0 i64.const 0 i64.atomic.wait drop) ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:79:33: error: type mismatch in i32.atomic.store, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:80:33: error: type mismatch in i32.atomic.store, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.store) ^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:80:33: error: type mismatch in i64.atomic.store, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:81:33: error: type mismatch in i64.atomic.store, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.store) ^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:81:33: error: type mismatch in i32.atomic.store8, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:82:33: error: type mismatch in i32.atomic.store8, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.store8) ^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:82:33: error: type mismatch in i32.atomic.store16, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:83:33: error: type mismatch in i32.atomic.store16, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.store16) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:83:33: error: type mismatch in i64.atomic.store8, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:84:33: error: type mismatch in i64.atomic.store8, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.store8) ^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:84:33: error: type mismatch in i64.atomic.store16, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:85:33: error: type mismatch in i64.atomic.store16, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.store16) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:85:33: error: type mismatch in i64.atomic.store32, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:86:33: error: type mismatch in i64.atomic.store32, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.store32) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:86:33: error: type mismatch in i32.atomic.rmw.add, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:87:33: error: type mismatch in i32.atomic.rmw.add, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw.add drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:87:33: error: type mismatch in i64.atomic.rmw.add, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:88:33: error: type mismatch in i64.atomic.rmw.add, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw.add drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:88:33: error: type mismatch in i32.atomic.rmw8_u.add, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:89:33: error: type mismatch in i32.atomic.rmw8_u.add, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw8_u.add drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:89:33: error: type mismatch in i32.atomic.rmw16_u.add, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:90:33: error: type mismatch in i32.atomic.rmw16_u.add, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw16_u.add drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:90:33: error: type mismatch in i64.atomic.rmw8_u.add, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:91:33: error: type mismatch in i64.atomic.rmw8_u.add, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw8_u.add drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:91:33: error: type mismatch in i64.atomic.rmw16_u.add, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:92:33: error: type mismatch in i64.atomic.rmw16_u.add, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw16_u.add drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:92:33: error: type mismatch in i64.atomic.rmw32_u.add, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:93:33: error: type mismatch in i64.atomic.rmw32_u.add, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw32_u.add drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:93:33: error: type mismatch in i32.atomic.rmw.sub, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:94:33: error: type mismatch in i32.atomic.rmw.sub, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw.sub drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:94:33: error: type mismatch in i64.atomic.rmw.sub, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:95:33: error: type mismatch in i64.atomic.rmw.sub, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw.sub drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:95:33: error: type mismatch in i32.atomic.rmw8_u.sub, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:96:33: error: type mismatch in i32.atomic.rmw8_u.sub, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw8_u.sub drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:96:33: error: type mismatch in i32.atomic.rmw16_u.sub, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:97:33: error: type mismatch in i32.atomic.rmw16_u.sub, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw16_u.sub drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:97:33: error: type mismatch in i64.atomic.rmw8_u.sub, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:98:33: error: type mismatch in i64.atomic.rmw8_u.sub, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw8_u.sub drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:98:33: error: type mismatch in i64.atomic.rmw16_u.sub, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:99:33: error: type mismatch in i64.atomic.rmw16_u.sub, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw16_u.sub drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:99:33: error: type mismatch in i64.atomic.rmw32_u.sub, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:100:33: error: type mismatch in i64.atomic.rmw32_u.sub, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw32_u.sub drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:100:33: error: type mismatch in i32.atomic.rmw.and, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:101:33: error: type mismatch in i32.atomic.rmw.and, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw.and drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:101:33: error: type mismatch in i64.atomic.rmw.and, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:102:33: error: type mismatch in i64.atomic.rmw.and, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw.and drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:102:33: error: type mismatch in i32.atomic.rmw8_u.and, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:103:33: error: type mismatch in i32.atomic.rmw8_u.and, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw8_u.and drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:103:33: error: type mismatch in i32.atomic.rmw16_u.and, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:104:33: error: type mismatch in i32.atomic.rmw16_u.and, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw16_u.and drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:104:33: error: type mismatch in i64.atomic.rmw8_u.and, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:105:33: error: type mismatch in i64.atomic.rmw8_u.and, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw8_u.and drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:105:33: error: type mismatch in i64.atomic.rmw16_u.and, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:106:33: error: type mismatch in i64.atomic.rmw16_u.and, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw16_u.and drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:106:33: error: type mismatch in i64.atomic.rmw32_u.and, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:107:33: error: type mismatch in i64.atomic.rmw32_u.and, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw32_u.and drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:107:33: error: type mismatch in i32.atomic.rmw.or, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:108:33: error: type mismatch in i32.atomic.rmw.or, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw.or drop) ^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:108:33: error: type mismatch in i64.atomic.rmw.or, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:109:33: error: type mismatch in i64.atomic.rmw.or, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw.or drop) ^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:109:33: error: type mismatch in i32.atomic.rmw8_u.or, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:110:33: error: type mismatch in i32.atomic.rmw8_u.or, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw8_u.or drop) ^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:110:33: error: type mismatch in i32.atomic.rmw16_u.or, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:111:33: error: type mismatch in i32.atomic.rmw16_u.or, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw16_u.or drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:111:33: error: type mismatch in i64.atomic.rmw8_u.or, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:112:33: error: type mismatch in i64.atomic.rmw8_u.or, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw8_u.or drop) ^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:112:33: error: type mismatch in i64.atomic.rmw16_u.or, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:113:33: error: type mismatch in i64.atomic.rmw16_u.or, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw16_u.or drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:113:33: error: type mismatch in i64.atomic.rmw32_u.or, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:114:33: error: type mismatch in i64.atomic.rmw32_u.or, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw32_u.or drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:114:33: error: type mismatch in i32.atomic.rmw.xor, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:115:33: error: type mismatch in i32.atomic.rmw.xor, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw.xor drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:115:33: error: type mismatch in i64.atomic.rmw.xor, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:116:33: error: type mismatch in i64.atomic.rmw.xor, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw.xor drop) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:116:33: error: type mismatch in i32.atomic.rmw8_u.xor, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:117:33: error: type mismatch in i32.atomic.rmw8_u.xor, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw8_u.xor drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:117:33: error: type mismatch in i32.atomic.rmw16_u.xor, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:118:33: error: type mismatch in i32.atomic.rmw16_u.xor, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw16_u.xor drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:118:33: error: type mismatch in i64.atomic.rmw8_u.xor, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:119:33: error: type mismatch in i64.atomic.rmw8_u.xor, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw8_u.xor drop) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:119:33: error: type mismatch in i64.atomic.rmw16_u.xor, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:120:33: error: type mismatch in i64.atomic.rmw16_u.xor, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw16_u.xor drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:120:33: error: type mismatch in i64.atomic.rmw32_u.xor, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:121:33: error: type mismatch in i64.atomic.rmw32_u.xor, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw32_u.xor drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:121:33: error: type mismatch in i32.atomic.rmw.xchg, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:122:33: error: type mismatch in i32.atomic.rmw.xchg, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw.xchg drop) ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:122:33: error: type mismatch in i64.atomic.rmw.xchg, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:123:33: error: type mismatch in i64.atomic.rmw.xchg, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw.xchg drop) ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:123:33: error: type mismatch in i32.atomic.rmw8_u.xchg, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:124:33: error: type mismatch in i32.atomic.rmw8_u.xchg, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw8_u.xchg drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:124:33: error: type mismatch in i32.atomic.rmw16_u.xchg, expected [i32, i32] but got [i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:125:33: error: type mismatch in i32.atomic.rmw16_u.xchg, expected [i32, i32] but got [i32, f32] (func i32.const 0 f32.const 0 i32.atomic.rmw16_u.xchg drop) ^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:125:33: error: type mismatch in i64.atomic.rmw8_u.xchg, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:126:33: error: type mismatch in i64.atomic.rmw8_u.xchg, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw8_u.xchg drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:126:33: error: type mismatch in i64.atomic.rmw16_u.xchg, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:127:33: error: type mismatch in i64.atomic.rmw16_u.xchg, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw16_u.xchg drop) ^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:127:33: error: type mismatch in i64.atomic.rmw32_u.xchg, expected [i32, i64] but got [i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:128:33: error: type mismatch in i64.atomic.rmw32_u.xchg, expected [i32, i64] but got [i32, f64] (func i32.const 0 f64.const 0 i64.atomic.rmw32_u.xchg drop) ^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:128:45: error: type mismatch in i32.atomic.rmw.cmpxchg, expected [i32, i32, i32] but got [i32, f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:129:45: error: type mismatch in i32.atomic.rmw.cmpxchg, expected [i32, i32, i32] but got [i32, f32, i32] (func i32.const 0 f32.const 0 i32.const 0 i32.atomic.rmw.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:129:45: error: type mismatch in i64.atomic.rmw.cmpxchg, expected [i32, i64, i64] but got [i32, f64, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:130:45: error: type mismatch in i64.atomic.rmw.cmpxchg, expected [i32, i64, i64] but got [i32, f64, i64] (func i32.const 0 f64.const 0 i64.const 0 i64.atomic.rmw.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:130:45: error: type mismatch in i32.atomic.rmw8_u.cmpxchg, expected [i32, i32, i32] but got [i32, f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:131:45: error: type mismatch in i32.atomic.rmw8_u.cmpxchg, expected [i32, i32, i32] but got [i32, f32, i32] (func i32.const 0 f32.const 0 i32.const 0 i32.atomic.rmw8_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:131:45: error: type mismatch in i32.atomic.rmw16_u.cmpxchg, expected [i32, i32, i32] but got [i32, f32, i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:132:45: error: type mismatch in i32.atomic.rmw16_u.cmpxchg, expected [i32, i32, i32] but got [i32, f32, i32] (func i32.const 0 f32.const 0 i32.const 0 i32.atomic.rmw16_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:132:45: error: type mismatch in i64.atomic.rmw8_u.cmpxchg, expected [i32, i64, i64] but got [i32, f64, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:133:45: error: type mismatch in i64.atomic.rmw8_u.cmpxchg, expected [i32, i64, i64] but got [i32, f64, i64] (func i32.const 0 f64.const 0 i64.const 0 i64.atomic.rmw8_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:133:45: error: type mismatch in i64.atomic.rmw16_u.cmpxchg, expected [i32, i64, i64] but got [i32, f64, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:134:45: error: type mismatch in i64.atomic.rmw16_u.cmpxchg, expected [i32, i64, i64] but got [i32, f64, i64] (func i32.const 0 f64.const 0 i64.const 0 i64.atomic.rmw16_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:134:45: error: type mismatch in i64.atomic.rmw32_u.cmpxchg, expected [i32, i64, i64] but got [i32, f64, i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:135:45: error: type mismatch in i64.atomic.rmw32_u.cmpxchg, expected [i32, i64, i64] but got [i32, f64, i64] (func i32.const 0 f64.const 0 i64.const 0 i64.atomic.rmw32_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:137:45: error: type mismatch in i32.atomic.wait, expected [i32, i32, i64] but got [i32, i32, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:138:45: error: type mismatch in i32.atomic.wait, expected [i32, i32, i64] but got [i32, i32, f64] (func i32.const 0 i32.const 0 f64.const 0 i32.atomic.wait drop) ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:138:45: error: type mismatch in i64.atomic.wait, expected [i32, i64, i64] but got [i32, i64, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:139:45: error: type mismatch in i64.atomic.wait, expected [i32, i64, i64] but got [i32, i64, f64] (func i32.const 0 i64.const 0 f64.const 0 i64.atomic.wait drop) ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:139:45: error: type mismatch in i32.atomic.rmw.cmpxchg, expected [i32, i32, i32] but got [i32, i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:140:45: error: type mismatch in i32.atomic.rmw.cmpxchg, expected [i32, i32, i32] but got [i32, i32, f32] (func i32.const 0 i32.const 0 f32.const 0 i32.atomic.rmw.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:140:45: error: type mismatch in i64.atomic.rmw.cmpxchg, expected [i32, i64, i64] but got [i32, i64, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:141:45: error: type mismatch in i64.atomic.rmw.cmpxchg, expected [i32, i64, i64] but got [i32, i64, f64] (func i32.const 0 i64.const 0 f64.const 0 i64.atomic.rmw.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:141:45: error: type mismatch in i32.atomic.rmw8_u.cmpxchg, expected [i32, i32, i32] but got [i32, i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:142:45: error: type mismatch in i32.atomic.rmw8_u.cmpxchg, expected [i32, i32, i32] but got [i32, i32, f32] (func i32.const 0 i32.const 0 f32.const 0 i32.atomic.rmw8_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:142:45: error: type mismatch in i32.atomic.rmw16_u.cmpxchg, expected [i32, i32, i32] but got [i32, i32, f32] +out/test/typecheck/bad-atomic-type-mismatch.txt:143:45: error: type mismatch in i32.atomic.rmw16_u.cmpxchg, expected [i32, i32, i32] but got [i32, i32, f32] (func i32.const 0 i32.const 0 f32.const 0 i32.atomic.rmw16_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:143:45: error: type mismatch in i64.atomic.rmw8_u.cmpxchg, expected [i32, i64, i64] but got [i32, i64, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:144:45: error: type mismatch in i64.atomic.rmw8_u.cmpxchg, expected [i32, i64, i64] but got [i32, i64, f64] (func i32.const 0 i64.const 0 f64.const 0 i64.atomic.rmw8_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:144:45: error: type mismatch in i64.atomic.rmw16_u.cmpxchg, expected [i32, i64, i64] but got [i32, i64, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:145:45: error: type mismatch in i64.atomic.rmw16_u.cmpxchg, expected [i32, i64, i64] but got [i32, i64, f64] (func i32.const 0 i64.const 0 f64.const 0 i64.atomic.rmw16_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:145:45: error: type mismatch in i64.atomic.rmw32_u.cmpxchg, expected [i32, i64, i64] but got [i32, i64, f64] +out/test/typecheck/bad-atomic-type-mismatch.txt:146:45: error: type mismatch in i64.atomic.rmw32_u.cmpxchg, expected [i32, i64, i64] but got [i32, i64, f64] (func i32.const 0 i64.const 0 f64.const 0 i64.atomic.rmw32_u.cmpxchg drop) ^^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:148:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:149:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 atomic.wake) ^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:149:58: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:150:58: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i64.const 0 i32.atomic.wait) ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:150:58: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:151:58: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i64.const 0 i64.const 0 i64.atomic.wait) ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:151:34: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:152:34: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.atomic.load) ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:152:34: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:153:34: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.atomic.load) ^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:153:34: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:154:34: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.atomic.load8_u) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:154:34: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:155:34: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.atomic.load16_u) ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:155:34: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:156:34: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.atomic.load8_u) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:156:34: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:157:34: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.atomic.load16_u) ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:157:34: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:158:34: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.atomic.load32_u) ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:158:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:159:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw.add) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:159:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:160:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw.add) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:160:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:161:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw8_u.add) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:161:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:162:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw16_u.add) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:162:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:163:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw8_u.add) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:163:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:164:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw16_u.add) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:164:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:165:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw32_u.add) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:165:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:166:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw.sub) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:166:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:167:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw.sub) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:167:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:168:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw8_u.sub) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:168:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:169:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw16_u.sub) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:169:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:170:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw8_u.sub) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:170:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:171:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw16_u.sub) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:171:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:172:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw32_u.sub) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:172:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:173:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw.and) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:173:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:174:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw.and) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:174:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:175:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw8_u.and) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:175:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:176:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw16_u.and) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:176:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:177:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw8_u.and) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:177:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:178:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw16_u.and) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:178:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:179:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw32_u.and) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:179:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:180:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw.or) ^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:180:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:181:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw.or) ^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:181:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:182:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw8_u.or) ^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:182:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:183:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw16_u.or) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:183:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:184:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw8_u.or) ^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:184:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:185:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw16_u.or) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:185:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:186:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw32_u.or) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:186:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:187:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw.xor) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:187:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:188:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw.xor) ^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:188:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:189:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw8_u.xor) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:189:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:190:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw16_u.xor) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:190:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:191:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw8_u.xor) ^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:191:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:192:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw16_u.xor) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:192:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:193:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw32_u.xor) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:193:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:194:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw.xchg) ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:194:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:195:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw.xchg) ^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:195:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:196:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw8_u.xchg) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:196:46: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:197:46: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.atomic.rmw16_u.xchg) ^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:197:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:198:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw8_u.xchg) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:198:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:199:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw16_u.xchg) ^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:199:46: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:200:46: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.atomic.rmw32_u.xchg) ^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:200:58: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:201:58: error: type mismatch in implicit return, expected [f32] but got [i32] (func (result f32) i32.const 0 i32.const 0 i32.const 0 i32.atomic.rmw.cmpxchg) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:201:58: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:202:58: error: type mismatch in implicit return, expected [f64] but got [i64] (func (result f64) i32.const 0 i64.const 0 i64.const 0 i64.atomic.rmw.cmpxchg) ^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:202:58: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:203:58: error: type mismatch in implicit return, expected [f32] but got [i32] ...c (result f32) i32.const 0 i32.const 0 i32.const 0 i32.atomic.rmw8_u.cmpxchg) ^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:203:58: error: type mismatch in implicit return, expected [f32] but got [i32] +out/test/typecheck/bad-atomic-type-mismatch.txt:204:58: error: type mismatch in implicit return, expected [f32] but got [i32] ... (result f32) i32.const 0 i32.const 0 i32.const 0 i32.atomic.rmw16_u.cmpxchg) ^^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:204:58: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:205:58: error: type mismatch in implicit return, expected [f64] but got [i64] ...c (result f64) i32.const 0 i64.const 0 i64.const 0 i64.atomic.rmw8_u.cmpxchg) ^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:205:58: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:206:58: error: type mismatch in implicit return, expected [f64] but got [i64] ... (result f64) i32.const 0 i64.const 0 i64.const 0 i64.atomic.rmw16_u.cmpxchg) ^^^^^^^^^^^^^^^^^^^^^^^^^^ -out/test/typecheck/bad-atomic-type-mismatch.txt:206:58: error: type mismatch in implicit return, expected [f64] but got [i64] +out/test/typecheck/bad-atomic-type-mismatch.txt:207:58: error: type mismatch in implicit return, expected [f64] but got [i64] ... (result f64) i32.const 0 i64.const 0 i64.const 0 i64.atomic.rmw32_u.cmpxchg) ^^^^^^^^^^^^^^^^^^^^^^^^^^ ;;; STDERR ;;) diff --git a/test/typecheck/nocheck.txt b/test/typecheck/nocheck.txt index 5b0352e3..bcb15102 100644 --- a/test/typecheck/nocheck.txt +++ b/test/typecheck/nocheck.txt @@ -1,3 +1,4 @@ +;;; TOOL: wat2wasm ;;; FLAGS: --no-check (module (func (result i32) |