-
Notifications
You must be signed in to change notification settings - Fork 366
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Issue with property named get
inside classes
#296
Comments
Hi @yspreen, thanks for the report. Do you have a minimum reproducible js file? I can't reproduce this: class Examle{
get(){
return "hello world")
}
}
console.log(new Example().get()) |
class TestClass {
get = () => console.log("get");
}
new TestClass().get(); |
as mentioned above, it only breaks if you set it to an anonymous method. not if defining get() {} |
I've located the issue and submitted a patch to downstream QuickJS engine. The catch is that we're not up to date on the latest version. However, we can (and already do) apply patches independently of the engine: |
Hi @richarddavison , I thought it was fundamentally the same problem, so I am adding it here. The following code is part of the code generated when ES2022 is specified for a bundler in the Javascript framework called hono. The code is kept to a minimum so that it can be reproduced. // reproduction.js
var Hono = class {
get;
post;
put;
delete;
options;
patch;
//...
} % llrt reproduction.js
SyntaxError: invalid property name
at reproduction.js:2:5 Specifying ES2020 generates the following code, which can also be executed by LLRT. var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
//...
var _path2, _a3;
var Hono = (_a3 = class {
constructor(options = {}) {
__publicField(this, "get");
__publicField(this, "post");
__publicField(this, "put");
__publicField(this, "delete");
__publicField(this, "options");
__publicField(this, "patch");
//... EDIT: rquickjs = { version = "0.6.2", git = "https://github.com/DelSkayn/rquickjs", ... |
There is also this that needs to be merged upstream: |
Thanks for the information. I had completely overlooked the quickjs-ng initiative. |
Should work in latest release due to updated QJS version. Can you check again @yspreen ? |
This is now resolved! |
Express and Drizzle both have classes with property methods called
get
. It seems to be fine if defined likebut this line in drizzle: https://github.com/drizzle-team/drizzle-orm/blob/main/drizzle-orm/src/sqlite-core/query-builders/delete.ts#L251
causes issues in LLRT when compiled with TS and bundled with rollup.js:
because the compiled result is
The text was updated successfully, but these errors were encountered: