microsoft / devicescript

TypeScript for Tiny IoT Devices (ESP32, RP2040, ...)
https://microsoft.github.io/devicescript/
MIT License
3.24k stars 112 forks source link

added Number.toFixed function #621

Open JackTam1993 opened 9 months ago

JackTam1993 commented 9 months ago

I added an empty toFixed function in packages/core/src/number.ts and test case in devs/run-tests/02numbers.ts. when I run the test case withyarn build and yarn test, the console will return an exception

WASM> Exception: TypeError WASM> message: setting field 'toFixed' of a builtin frozen object WASM> at prototype [as F1_pc16] (node_modules/@devicescript/core/src/number.ts:1:1) WASM> at main [as F0_pc3] (devs/run-tests/02numbers.ts:1:1)

I think some settings occured this error?

JackTam1993 commented 9 months ago

@microsoft-github-policy-service agree

mmoskal commented 8 months ago

We only allow adding properties to objects listed in builtin_proto_idx. Try this:

diff --git a/runtime/devicescript/objects.c b/runtime/devicescript/objects.c
index b75762b7..1e80756c 100644
--- a/runtime/devicescript/objects.c
+++ b/runtime/devicescript/objects.c
@@ -261,8 +261,9 @@ static const uint8_t builtin_proto_idx[] = {
     [DEVS_BUILTIN_OBJECT_BUFFER] = 10,
     [DEVS_BUILTIN_OBJECT_GPIO_PROTOTYPE] = 11,
     [DEVS_BUILTIN_OBJECT_GPIO] = 12,
+    [DEVS_BUILTIN_OBJECT_NUMBER_PROTOTYPE] = 13,
 };
-#define MAX_PROTO 12
+#define MAX_PROTO 13

 devs_maplike_t *devs_get_builtin_object(devs_ctx_t *ctx, unsigned idx) {
     if (idx < sizeof(builtin_proto_idx)) {
mmoskal commented 8 months ago

It didn't work?

JackTam1993 commented 8 months ago

It didn't work?

No, it didn't.