aboutsummaryrefslogtreecommitdiff
path: root/src/renamer.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/renamer.zig')
-rw-r--r--src/renamer.zig19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/renamer.zig b/src/renamer.zig
index c39a51847..eef40d111 100644
--- a/src/renamer.zig
+++ b/src/renamer.zig
@@ -1,18 +1,27 @@
const js_ast = @import("js_ast.zig");
usingnamespace @import("strings.zig");
const std = @import("std");
+const logger = @import("logger.zig");
pub const Renamer = struct {
symbols: js_ast.Symbol.Map,
- pub fn init(symbols: js_ast.Symbol.Map) Renamer {
- return Renamer{ .symbols = symbols };
+ source: *logger.Source,
+
+ pub fn init(symbols: js_ast.Symbol.Map, source: *logger.Source) Renamer {
+ return Renamer{ .symbols = symbols, .source = source };
}
pub fn nameForSymbol(renamer: *Renamer, ref: js_ast.Ref) string {
- const resolved = renamer.symbols.follow(ref);
- const symbol = renamer.symbols.get(resolved) orelse std.debug.panic("Internal error: symbol not found for ref: {s}", .{resolved});
+ if (ref.is_source_contents_slice) {
+ return renamer.source.contents[ref.source_index .. ref.source_index + ref.inner_index];
+ }
- return symbol.original_name;
+ const resolved = renamer.symbols.follow(ref);
+ if (renamer.symbols.get(resolved)) |symbol| {
+ return symbol.original_name;
+ } else {
+ std.debug.panic("Invalid symbol {s}", .{ref});
+ }
}
};