diff --git a/src/compiler.ts b/src/compiler.ts index 1bf749ba35..d0c3bfa88e 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -7756,6 +7756,14 @@ export class Compiler extends DiagnosticEmitter { uniqueMap(flow.contextualTypeArguments) ); if (!functionInstance || !this.compileFunction(functionInstance)) return module.unreachable(); + if (functionInstance.hasDecorator(DecoratorFlags.BUILTIN)) { + this.error( + DiagnosticCode.Not_implemented_0, + expression.range, "First-class built-ins" + ); + this.currentType = functionInstance.type; + return module.unreachable(); + } if (contextualType.isExternalReference) { this.currentType = Type.funcref; return module.ref_func(functionInstance.internalName, TypeRef.Funcref); // TODO diff --git a/tests/compiler/issues/2202.json b/tests/compiler/issues/2202.json new file mode 100644 index 0000000000..5f2e3488a6 --- /dev/null +++ b/tests/compiler/issues/2202.json @@ -0,0 +1,24 @@ +{ + "asc_flags": [ + ], + "stderr": [ + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "AS100: Not implemented: First-class built-ins", + "EOF" + ] +} diff --git a/tests/compiler/issues/2202.ts b/tests/compiler/issues/2202.ts new file mode 100644 index 0000000000..52d3a313b8 --- /dev/null +++ b/tests/compiler/issues/2202.ts @@ -0,0 +1,18 @@ +i16; +i32; +i64; +u8; +u16; +u32; +u64; +bool; +f32; +f64; +v128; +i8x16; +i16x8; +i32x4; +i64x2; +f32x4; +f64x2; +ERROR("EOF"); \ No newline at end of file