diff --git a/src/compiler.ts b/src/compiler.ts index e035cab8ca..a4e33bf342 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -10067,7 +10067,11 @@ export class Compiler extends DiagnosticEmitter { /** Evaluates a boolean condition, determining whether it is TRUE, FALSE or UNKNOWN. */ evaluateCondition(expr: ExpressionRef): ConditionKind { - assert(getExpressionType(expr) == TypeRef.I32); + let type = getExpressionType(expr); + if (type == TypeRef.Unreachable) + return ConditionKind.UNKNOWN; + + assert(type == TypeRef.I32); var module = this.module; var evaled = module.runExpression(expr, ExpressionRunnerFlags.Default); if (evaled) { diff --git a/tests/compiler/unknown-bool-ident.json b/tests/compiler/unknown-bool-ident.json new file mode 100644 index 0000000000..9808373e96 --- /dev/null +++ b/tests/compiler/unknown-bool-ident.json @@ -0,0 +1,8 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "TS2304: Cannot find name 'unknown_var'.", + "EOF" + ] +} diff --git a/tests/compiler/unknown-bool-ident.ts b/tests/compiler/unknown-bool-ident.ts new file mode 100644 index 0000000000..2b6c3b4f05 --- /dev/null +++ b/tests/compiler/unknown-bool-ident.ts @@ -0,0 +1,2 @@ +if (1 <= unknown_var) {} +ERROR("EOF"); \ No newline at end of file diff --git a/tests/compiler/unknown-bool-ident.untouched.wat b/tests/compiler/unknown-bool-ident.untouched.wat new file mode 100644 index 0000000000..e69de29bb2