Fix __dirname and __pathname

Former-commit-id: 58c1c3b1a5ff24e040d995559baf3162f7e11ab7
This commit is contained in:
Jarred Sumner
2021-08-12 01:58:35 -07:00
parent 6cda74994b
commit bae23210f4

View File

@@ -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{