Skip to content

Commit

Permalink
fix: detect module automatically
Browse files Browse the repository at this point in the history
  • Loading branch information
XuJiandong committed Jan 2, 2025
1 parent 36f3449 commit 4883740
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 8 deletions.
12 changes: 7 additions & 5 deletions src/qjs.c
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,8 @@ static int eval_buf(JSContext *ctx, const void *buf, int buf_len, const char *fi
JSValue val;
int ret;

if (JS_DetectModule(buf, buf_len)) eval_flags |= JS_EVAL_TYPE_MODULE;

if (((const char *)buf)[0] == (char)BC_VERSION) {
val = JS_ReadObject(ctx, buf, buf_len, JS_READ_OBJ_BYTECODE);
if (JS_IsException(val)) {
Expand Down Expand Up @@ -173,7 +175,7 @@ int run_from_file_system_buf(JSContext *ctx, char *buf, size_t buf_size) {
}
CHECK(err);
CHECK2(main_file->size > 0, -1);
err = eval_buf(ctx, main_file->content, main_file->size, MAIN_FILE_NAME, JS_EVAL_TYPE_MODULE);
err = eval_buf(ctx, main_file->content, main_file->size, MAIN_FILE_NAME, 0);
CHECK(err);

exit:
Expand All @@ -197,7 +199,7 @@ static int run_from_local_file(JSContext *ctx, bool enable_fs) {
return run_from_file_system_buf(ctx, buf, (size_t)count);
} else {
buf[count] = 0;
return eval_buf(ctx, buf, count, "<run_from_file>", JS_EVAL_TYPE_MODULE);
return eval_buf(ctx, buf, count, "<run_from_file>", 0);
}
}

Expand All @@ -222,7 +224,7 @@ static int run_from_cell_data(JSContext *ctx, bool enable_fs) {
return err;
} else {
buf[buf_size] = 0;
err = eval_buf(ctx, buf, buf_size, "<run_from_file>", JS_EVAL_TYPE_MODULE);
err = eval_buf(ctx, buf, buf_size, "<run_from_file>", 0);
free(buf);
return err;
}
Expand Down Expand Up @@ -260,7 +262,7 @@ static int run_from_target(JSContext *ctx, const char *target, bool enable_fs) {
return err;
} else {
buf[buf_size] = 0;
err = eval_buf(ctx, buf, buf_size, "<run_from_file>", JS_EVAL_TYPE_MODULE);
err = eval_buf(ctx, buf, buf_size, "<run_from_file>", 0);
free(buf);
return err;
}
Expand Down Expand Up @@ -341,7 +343,7 @@ int main(int argc, const char **argv) {
JS_SetModuleLoaderFunc(rt, NULL, js_module_dummy_loader, NULL);
err = compile_from_file(ctx);
} else if (e_data) {
err = eval_buf(ctx, e_data, strlen(e_data), "<cmdline>", JS_EVAL_TYPE_MODULE);
err = eval_buf(ctx, e_data, strlen(e_data), "<cmdline>", 0);
} else if (r_bool && f_bool) {
err = run_from_local_file(ctx, true);
} else if (r_bool) {
Expand Down
1 change: 0 additions & 1 deletion tests/basic/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ syntax-error:
$(CKB-DEBUGGER) --bin $(BIN_PATH) -- -e "ASDF ASDF" 2>&1 | grep "SyntaxError"

syscalls:
$(CKB-DEBUGGER) --bin $(BIN_PATH) -- -e 'console.log(CKB_SOURCE_GROUP_INPUT, CKB_SOURCE_GROUP_OUTPUT)'
$(CKB-DEBUGGER) --bin $(BIN_PATH) -- -e 'import * as ckb from "ckb"; ckb.exit(0);'
$(CKB-DEBUGGER) --bin $(BIN_PATH) -- -e 'import * as ckb from "ckb"; ckb.debug("hello, ckb");'
$(CKB-DEBUGGER) --bin $(BIN_PATH) -- -e 'import * as ckb from "ckb"; console.log(ckb.vm_version(), ckb.current_cycles())'
Expand Down
1 change: 0 additions & 1 deletion tests/basic/test_closure.js
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,5 @@ test_closure1();
test_closure2();
test_closure3();
test_arrow_function();
test_with();
test_eval_closure();
test_eval_const();
2 changes: 1 addition & 1 deletion tests/basic/test_language.js
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ function test_argument_scope()
f();

f = (a = eval("var arguments = 1"), probe = () => arguments) => {
assert(arguments, 2);
assert(arguments, 1);
assert(probe(), 1);
}
f();
Expand Down
1 change: 1 addition & 0 deletions tests/ckb_js_tests/test_data/fs_module_mount/main.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/* example of JS module */
import * as ckb from "ckb";

ckb.mount(2, ckb.SOURCE_CELL_DEP)

Expand Down

0 comments on commit 4883740

Please sign in to comment.