-
Notifications
You must be signed in to change notification settings - Fork 359
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in 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 ? |
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: