From a71387bcc143dde70c4a33a4f7038139316f4ea9 Mon Sep 17 00:00:00 2001 From: Aaron Turner Date: Tue, 8 Jun 2021 17:26:43 -0700 Subject: [PATCH 1/3] Fixed stdlib builtins not working with typedoc --- std/assembly/builtins.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 92326564b5..41f9e12ae2 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -2302,11 +2302,17 @@ export abstract class i31 { // FIXME: usage of 'new' requires a class :( // @ts-ignore: decorator @builtin - static new(value: i32): i31ref { return unreachable(); } + static new(value: i32): i31ref { + unreachable(); + return 0; + } // @ts-ignore: decorator @builtin - static get(i31expr: i31ref): i32 { return unreachable(); } + static get(i31expr: i31ref): i32 { + unreachable(); + return 0; + } } /* eslint-disable @typescript-eslint/no-unused-vars */ From c3ad406d7e43458b0f0cd7c8a51196864c257b82 Mon Sep 17 00:00:00 2001 From: Aaron Turner Date: Tue, 8 Jun 2021 17:41:48 -0700 Subject: [PATCH 2/3] Added the changetype instead of zero --- std/assembly/builtins.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 41f9e12ae2..1ce07bf3d4 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -2304,7 +2304,7 @@ export abstract class i31 { // FIXME: usage of 'new' requires a class :( @builtin static new(value: i32): i31ref { unreachable(); - return 0; + return changetype(0); } // @ts-ignore: decorator From 3eacd5d57b7cb8b168a957f79466b96a9209a32f Mon Sep 17 00:00:00 2001 From: Aaron Turner Date: Wed, 9 Jun 2021 10:44:16 -0700 Subject: [PATCH 3/3] Made suggested changes --- std/assembly/builtins.ts | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/std/assembly/builtins.ts b/std/assembly/builtins.ts index 1ce07bf3d4..1fcf9f9877 100644 --- a/std/assembly/builtins.ts +++ b/std/assembly/builtins.ts @@ -170,7 +170,7 @@ export declare function select(ifTrue: T, ifFalse: T, condition: bool): T; // @ts-ignore: decorator @unsafe @builtin -export declare function unreachable(): void; +export declare function unreachable(): auto; // @ts-ignore: decorator @builtin @@ -2302,17 +2302,11 @@ export abstract class i31 { // FIXME: usage of 'new' requires a class :( // @ts-ignore: decorator @builtin - static new(value: i32): i31ref { - unreachable(); - return changetype(0); - } + static new(value: i32): i31ref { return changetype(unreachable()); } // @ts-ignore: decorator @builtin - static get(i31expr: i31ref): i32 { - unreachable(); - return 0; - } + static get(i31expr: i31ref): i32 { return unreachable(); } } /* eslint-disable @typescript-eslint/no-unused-vars */