Skip to content

Commit 7e1c6a8

Browse files
feat: add bindings for ModuleRequest.get_phase() (#1881)
Co-authored-by: Nayeem Rahman <nayeemrmn99@gmail.com>
1 parent 244fd55 commit 7e1c6a8

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

src/binding.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3380,6 +3380,11 @@ const v8::String* v8__ModuleRequest__GetSpecifier(
33803380
return local_to_ptr(self.GetSpecifier());
33813381
}
33823382

3383+
v8::ModuleImportPhase v8__ModuleRequest__GetPhase(
3384+
const v8::ModuleRequest& self) {
3385+
return self.GetPhase();
3386+
}
3387+
33833388
int v8__ModuleRequest__GetSourceOffset(const v8::ModuleRequest& self) {
33843389
return self.GetSourceOffset();
33853390
}

src/module.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ use crate::Object;
1212
use crate::String;
1313
use crate::UnboundModuleScript;
1414
use crate::Value;
15+
use crate::isolate::ModuleImportPhase;
1516
use crate::isolate::RealIsolate;
1617
use crate::scope::GetIsolate;
1718
use crate::scope::PinScope;
@@ -255,6 +256,9 @@ unsafe extern "C" {
255256
fn v8__ModuleRequest__GetSpecifier(
256257
this: *const ModuleRequest,
257258
) -> *const String;
259+
fn v8__ModuleRequest__GetPhase(
260+
this: *const ModuleRequest,
261+
) -> ModuleImportPhase;
258262
fn v8__ModuleRequest__GetSourceOffset(this: *const ModuleRequest) -> int;
259263
fn v8__ModuleRequest__GetImportAttributes(
260264
this: *const ModuleRequest,
@@ -568,6 +572,11 @@ impl ModuleRequest {
568572
unsafe { Local::from_raw(v8__ModuleRequest__GetSpecifier(self)) }.unwrap()
569573
}
570574

575+
/// Returns the module import phase for this ModuleRequest.
576+
#[inline(always)]
577+
pub fn get_phase(&self) -> ModuleImportPhase {
578+
unsafe { v8__ModuleRequest__GetPhase(self) }
579+
}
571580
/// Returns the source code offset of this module request.
572581
/// Use Module::source_offset_to_location to convert this to line/column numbers.
573582
#[inline(always)]

tests/test_api.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4898,6 +4898,7 @@ fn module_instantiation_failures1() {
48984898
)
48994899
.unwrap();
49004900
assert_eq!("./foo.js", mr1.get_specifier().to_rust_string_lossy(scope));
4901+
assert_eq!(v8::ModuleImportPhase::kEvaluation, mr1.get_phase());
49014902
let loc = module.source_offset_to_location(mr1.get_source_offset());
49024903
assert_eq!(0, loc.get_line_number());
49034904
assert_eq!(7, loc.get_column_number());
@@ -4908,6 +4909,7 @@ fn module_instantiation_failures1() {
49084909
)
49094910
.unwrap();
49104911
assert_eq!("./bar.js", mr2.get_specifier().to_rust_string_lossy(scope));
4912+
assert_eq!(v8::ModuleImportPhase::kEvaluation, mr1.get_phase());
49114913
let loc = module.source_offset_to_location(mr2.get_source_offset());
49124914
assert_eq!(1, loc.get_line_number());
49134915
assert_eq!(15, loc.get_column_number());

0 commit comments

Comments
 (0)