@@ -460,6 +460,7 @@ impl<'a> RustLowerer<'a> {
460460 kind : "field" . to_string ( ) ,
461461 source : field. span . clone ( ) ,
462462 generated : generated_span_at_end ( out, "src/lib.rs" , "field" ) ,
463+ ..Default :: default ( )
463464 } ) ;
464465 if field. is_weak {
465466 out. push_str ( & format ! (
@@ -638,6 +639,7 @@ impl<'a> RustLowerer<'a> {
638639 && block_needs_async_executor ( & function. body ) )
639640 . then ( || "__rsscript_async_executor" . to_string ( ) ) ;
640641 let generated_start = out. len ( ) ;
642+ let source_map_start = self . source_map . len ( ) ;
641643 let marker = self . record_source_marker ( out, 0 , "function" , & function. span ) ;
642644 let is_public = function. is_public || is_runnable_main ( function) ;
643645 out. push_str ( & format ! (
@@ -691,6 +693,14 @@ impl<'a> RustLowerer<'a> {
691693 & marker. generated ,
692694 generated_line_count ( & out[ generated_start..] ) ,
693695 ) ;
696+ // Stamp every source-map entry produced while lowering this function with
697+ // its source symbol and lowered Rust symbol, so a remapped backend error
698+ // can name the declaration (not just the line).
699+ let lowered_symbol = rust_function_ident ( & function. name ) ;
700+ for entry in & mut self . source_map [ source_map_start..] {
701+ entry. symbol = Some ( function. name . clone ( ) ) ;
702+ entry. lowered_symbol = Some ( lowered_symbol. clone ( ) ) ;
703+ }
694704 self . param_effects = previous_param_effects;
695705 self . value_types = previous_value_types;
696706 self . managed_bindings = previous_managed_bindings;
@@ -1983,6 +1993,7 @@ impl<'a> RustLowerer<'a> {
19831993 kind : "with" . to_string ( ) ,
19841994 source : stmt. span . clone ( ) ,
19851995 generated : generated. clone ( ) ,
1996+ ..Default :: default ( )
19861997 } ) ;
19871998 self . record_expr_source_map ( & stmt. resource , generated) ;
19881999 self . record_block_source_map ( & stmt. body , generated) ;
@@ -2045,6 +2056,7 @@ impl<'a> RustLowerer<'a> {
20452056 kind : "statement" . to_string ( ) ,
20462057 source : stmt_span ( statement) . clone ( ) ,
20472058 generated : generated. clone ( ) ,
2059+ ..Default :: default ( )
20482060 } ) ;
20492061 self . record_statement_source_map ( statement, generated) ;
20502062 }
@@ -2059,6 +2071,7 @@ impl<'a> RustLowerer<'a> {
20592071 kind : "binary" . to_string ( ) ,
20602072 source : span. clone ( ) ,
20612073 generated : generated. clone ( ) ,
2074+ ..Default :: default ( )
20622075 } ) ;
20632076 self . record_expr_source_map ( left, generated) ;
20642077 self . record_expr_source_map ( right, generated) ;
@@ -2068,6 +2081,7 @@ impl<'a> RustLowerer<'a> {
20682081 kind : "field_path" . to_string ( ) ,
20692082 source : span. clone ( ) ,
20702083 generated : generated. clone ( ) ,
2084+ ..Default :: default ( )
20712085 } ) ;
20722086 self . record_expr_source_map ( base, generated) ;
20732087 }
@@ -2080,19 +2094,22 @@ impl<'a> RustLowerer<'a> {
20802094 kind : "call" . to_string ( ) ,
20812095 source : span. clone ( ) ,
20822096 generated : generated. clone ( ) ,
2097+ ..Default :: default ( )
20832098 } ) ;
20842099 if self . is_native_boundary_call ( callee) {
20852100 self . source_map . push ( RustSourceMapEntry {
20862101 kind : "native_call" . to_string ( ) ,
20872102 source : span. clone ( ) ,
20882103 generated : generated. clone ( ) ,
2104+ ..Default :: default ( )
20892105 } ) ;
20902106 }
20912107 for arg in args {
20922108 self . source_map . push ( RustSourceMapEntry {
20932109 kind : "named_arg" . to_string ( ) ,
20942110 source : arg. span . clone ( ) ,
20952111 generated : generated. clone ( ) ,
2112+ ..Default :: default ( )
20962113 } ) ;
20972114 self . record_expr_source_map ( & arg. value , generated) ;
20982115 }
@@ -2103,6 +2120,7 @@ impl<'a> RustLowerer<'a> {
21032120 kind : "manage" . to_string ( ) ,
21042121 source : span. clone ( ) ,
21052122 generated : generated. clone ( ) ,
2123+ ..Default :: default ( )
21062124 } ) ;
21072125 self . record_expr_source_map ( value, generated) ;
21082126 }
@@ -2111,6 +2129,7 @@ impl<'a> RustLowerer<'a> {
21112129 kind : "spawn" . to_string ( ) ,
21122130 source : span. clone ( ) ,
21132131 generated : generated. clone ( ) ,
2132+ ..Default :: default ( )
21142133 } ) ;
21152134 self . record_expr_source_map ( value, generated) ;
21162135 }
@@ -2119,6 +2138,7 @@ impl<'a> RustLowerer<'a> {
21192138 kind : "await" . to_string ( ) ,
21202139 source : span. clone ( ) ,
21212140 generated : generated. clone ( ) ,
2141+ ..Default :: default ( )
21222142 } ) ;
21232143 self . record_expr_source_map ( value, generated) ;
21242144 }
@@ -2127,6 +2147,7 @@ impl<'a> RustLowerer<'a> {
21272147 kind : "try" . to_string ( ) ,
21282148 source : span. clone ( ) ,
21292149 generated : generated. clone ( ) ,
2150+ ..Default :: default ( )
21302151 } ) ;
21312152 self . record_expr_source_map ( value, generated) ;
21322153 }
@@ -2135,6 +2156,7 @@ impl<'a> RustLowerer<'a> {
21352156 kind : "closure" . to_string ( ) ,
21362157 source : span. clone ( ) ,
21372158 generated : generated. clone ( ) ,
2159+ ..Default :: default ( )
21382160 } ) ;
21392161 self . record_block_source_map ( body, generated) ;
21402162 }
@@ -2145,6 +2167,7 @@ impl<'a> RustLowerer<'a> {
21452167 kind : "match_pattern" . to_string ( ) ,
21462168 source : match_pattern_span ( & arm. pattern ) ,
21472169 generated : generated. clone ( ) ,
2170+ ..Default :: default ( )
21482171 } ) ;
21492172 self . record_block_source_map ( & arm. body , generated) ;
21502173 }
@@ -2154,12 +2177,14 @@ impl<'a> RustLowerer<'a> {
21542177 kind : "object_literal" . to_string ( ) ,
21552178 source : span. clone ( ) ,
21562179 generated : generated. clone ( ) ,
2180+ ..Default :: default ( )
21572181 } ) ;
21582182 for field in fields {
21592183 self . source_map . push ( RustSourceMapEntry {
21602184 kind : "object_literal_field" . to_string ( ) ,
21612185 source : field. span . clone ( ) ,
21622186 generated : generated. clone ( ) ,
2187+ ..Default :: default ( )
21632188 } ) ;
21642189 self . record_expr_source_map ( & field. value , generated) ;
21652190 }
@@ -2169,12 +2194,14 @@ impl<'a> RustLowerer<'a> {
21692194 kind : "map_literal" . to_string ( ) ,
21702195 source : span. clone ( ) ,
21712196 generated : generated. clone ( ) ,
2197+ ..Default :: default ( )
21722198 } ) ;
21732199 for entry in entries {
21742200 self . source_map . push ( RustSourceMapEntry {
21752201 kind : "map_literal_entry" . to_string ( ) ,
21762202 source : entry. span . clone ( ) ,
21772203 generated : generated. clone ( ) ,
2204+ ..Default :: default ( )
21782205 } ) ;
21792206 self . record_expr_source_map ( & entry. key , generated) ;
21802207 self . record_expr_source_map ( & entry. value , generated) ;
@@ -2185,6 +2212,7 @@ impl<'a> RustLowerer<'a> {
21852212 kind : "array_literal" . to_string ( ) ,
21862213 source : span. clone ( ) ,
21872214 generated : generated. clone ( ) ,
2215+ ..Default :: default ( )
21882216 } ) ;
21892217 for item in items {
21902218 self . record_expr_source_map ( item, generated) ;
@@ -2194,17 +2222,20 @@ impl<'a> RustLowerer<'a> {
21942222 kind : "ident" . to_string ( ) ,
21952223 source : span. clone ( ) ,
21962224 generated : generated. clone ( ) ,
2225+ ..Default :: default ( )
21972226 } ) ,
21982227 Expr :: Number ( _, span) => self . source_map . push ( RustSourceMapEntry {
21992228 kind : "number" . to_string ( ) ,
22002229 source : span. clone ( ) ,
22012230 generated : generated. clone ( ) ,
2231+ ..Default :: default ( )
22022232 } ) ,
22032233 Expr :: String ( _, span) | Expr :: MultilineString ( _, span) => {
22042234 self . source_map . push ( RustSourceMapEntry {
22052235 kind : "string" . to_string ( ) ,
22062236 source : span. clone ( ) ,
22072237 generated : generated. clone ( ) ,
2238+ ..Default :: default ( )
22082239 } )
22092240 }
22102241 Expr :: Unknown ( _) => { }
0 commit comments