diff options
author | 2021-08-12 01:58:35 -0700 | |
---|---|---|
committer | 2021-08-12 01:58:35 -0700 | |
commit | bae23210f4d6421e6549a1dcc94e7dc52bf280be (patch) | |
tree | e49174519fc7d3257e43fe07c39dd2963f3be567 /src | |
parent | 6cda74994b6e205229f086b0bc3db546af32de85 (diff) | |
download | bun-bae23210f4d6421e6549a1dcc94e7dc52bf280be.tar.gz bun-bae23210f4d6421e6549a1dcc94e7dc52bf280be.tar.zst bun-bae23210f4d6421e6549a1dcc94e7dc52bf280be.zip |
Fix __dirname and __pathname
Former-commit-id: 58c1c3b1a5ff24e040d995559baf3162f7e11ab7
Diffstat (limited to 'src')
-rw-r--r-- | src/defines.zig | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/defines.zig b/src/defines.zig index 88665aa06..a0e3bc8ea 100644 --- a/src/defines.zig +++ b/src/defines.zig @@ -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{ |