mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
Fix __dirname and __pathname
Former-commit-id: 58c1c3b1a5ff24e040d995559baf3162f7e11ab7
This commit is contained in:
@@ -184,6 +184,11 @@ pub const DotDefine = struct {
|
||||
var nan_val = js_ast.E.Number{ .value = std.math.nan_f64 };
|
||||
var inf_val = js_ast.E.Number{ .value = std.math.inf_f64 };
|
||||
|
||||
const __dirname_str: string = std.fs.path.sep_str ++ "__dirname_is_not_implemented";
|
||||
const __filename_str: string = "__filename_is_not_implemented.js";
|
||||
var __dirname = js_ast.E.String{ .utf8 = __dirname_str };
|
||||
var __filename = js_ast.E.String{ .utf8 = __filename_str };
|
||||
|
||||
pub const Define = struct {
|
||||
identifiers: std.StringHashMap(IdentifierDefine),
|
||||
dots: std.StringHashMap([]DotDefine),
|
||||
@@ -194,7 +199,7 @@ pub const Define = struct {
|
||||
define.allocator = allocator;
|
||||
define.identifiers = std.StringHashMap(IdentifierDefine).init(allocator);
|
||||
define.dots = std.StringHashMap([]DotDefine).init(allocator);
|
||||
try define.identifiers.ensureCapacity(641);
|
||||
try define.identifiers.ensureCapacity(641 + 2);
|
||||
try define.dots.ensureCapacity(64);
|
||||
|
||||
var val = js_ast.Expr.Data{ .e_undefined = .{} };
|
||||
@@ -233,6 +238,24 @@ pub const Define = struct {
|
||||
}
|
||||
}
|
||||
|
||||
// Node.js backwards compatibility hack
|
||||
define.identifiers.putAssumeCapacity(
|
||||
"__dirname",
|
||||
DefineData{
|
||||
.value = js_ast.Expr.Data{
|
||||
.e_string = &__dirname,
|
||||
},
|
||||
},
|
||||
);
|
||||
define.identifiers.putAssumeCapacity(
|
||||
"__filename",
|
||||
DefineData{
|
||||
.value = js_ast.Expr.Data{
|
||||
.e_string = &__filename,
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
// Step 2. Swap in certain literal values because those can be constant folded
|
||||
define.identifiers.putAssumeCapacity("undefined", value_define);
|
||||
define.identifiers.putAssumeCapacity("NaN", DefineData{
|
||||
|
||||
Reference in New Issue
Block a user