From a369fc8c8969b0f2d823bed5a7565d245311345b Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Tue, 4 Apr 2023 16:49:33 -0700 Subject: Implement `import.meta.main` (#2556) * Implement `import.meta.main` * Update main-test-1.js * Update fs.test.ts --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> --- src/bun.js/bindings/ImportMetaObject.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/bun.js/bindings/ImportMetaObject.cpp') diff --git a/src/bun.js/bindings/ImportMetaObject.cpp b/src/bun.js/bindings/ImportMetaObject.cpp index f8b6d0f9b..7831cf881 100644 --- a/src/bun.js/bindings/ImportMetaObject.cpp +++ b/src/bun.js/bindings/ImportMetaObject.cpp @@ -39,6 +39,7 @@ #include "JSDOMURL.h" #include "JavaScriptCore/JSNativeStdFunction.h" +#include "JavaScriptCore/GetterSetter.h" namespace Zig { using namespace JSC; @@ -84,7 +85,7 @@ static EncodedJSValue functionRequireResolve(JSC::JSGlobalObject* globalObject, // require.resolve also supports a paths array // we only support a single path if (!fromValue.isUndefinedOrNull() && fromValue.isObject()) { - if (JSValue pathsValue = fromValue.getObject()->getIfPropertyExists(globalObject, JSC::Identifier::fromString(vm, "paths"_s))) { + if (JSValue pathsValue = fromValue.getObject()->getIfPropertyExists(globalObject, JSC::Identifier::fromString(vm, "paths"_s))) { if (JSC::JSArray* array = JSC::jsDynamicCast(pathsValue)) { if (array->length() > 0) { fromValue = array->getIndex(globalObject, 0); @@ -413,7 +414,13 @@ void ImportMetaObjectPrototype::finishCreation(VM& vm, JSGlobalObject* globalObj this->putDirect(vm, builtinNames.dirPublicName(), jsEmptyString(vm), 0); this->putDirect(vm, builtinNames.pathPublicName(), jsEmptyString(vm), 0); this->putDirect(vm, builtinNames.urlPublicName(), jsEmptyString(vm), 0); - this->putDirect(vm, builtinNames.mainPublicName(), jsBoolean(false), 0); + + this->putDirect( + vm, + builtinNames.mainPublicName(), + GetterSetter::create(vm, globalObject, JSFunction::create(vm, importMetaObjectMainCodeGenerator(vm), globalObject), nullptr), + JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::Accessor | JSC::PropertyAttribute::Builtin | 0); + this->putDirect(vm, Identifier::fromString(vm, "primordials"_s), jsUndefined(), JSC::PropertyAttribute::DontEnum | 0); String requireString = "[[require]]"_s; -- cgit v1.2.3