@@ -8,7 +8,6 @@ use crate::syntax::ast::{
88
99use super :: helpers:: * ;
1010use super :: intrinsics:: * ;
11- use super :: source_map:: push_source_marker;
1211use super :: types:: { LoweredRust , RustSourceMapEntry } ;
1312
1413pub ( super ) struct RustLowerer < ' a > {
@@ -576,294 +575,6 @@ impl<'a> RustLowerer<'a> {
576575 out. push_str ( & format ! ( "{pad}}}\n " ) ) ;
577576 }
578577
579- pub ( super ) fn record_source_marker (
580- & mut self ,
581- out : & mut String ,
582- indent : usize ,
583- kind : & str ,
584- span : & Span ,
585- ) -> RustSourceMapEntry {
586- let entry = push_source_marker ( out, indent, kind, span) ;
587- self . source_map . push ( entry. clone ( ) ) ;
588- entry
589- }
590-
591- pub ( super ) fn widen_generated_span ( & mut self , generated : & Span , line_count : usize ) {
592- for entry in & mut self . source_map {
593- if entry. generated . file == generated. file
594- && entry. generated . line == generated. line
595- && entry. generated . column == generated. column
596- {
597- entry. generated . length = entry. generated . length . max ( line_count. max ( 1 ) ) ;
598- }
599- }
600- }
601-
602- pub ( super ) fn record_statement_source_map ( & mut self , statement : & Stmt , generated : & Span ) {
603- match statement {
604- Stmt :: Let ( stmt) => {
605- if let Some ( value) = & stmt. value {
606- self . record_expr_source_map ( value, generated) ;
607- }
608- }
609- Stmt :: Return ( stmt) => {
610- if let Some ( value) = & stmt. value {
611- self . record_expr_source_map ( value, generated) ;
612- }
613- }
614- Stmt :: With ( stmt) => {
615- self . source_map . push ( RustSourceMapEntry {
616- kind : "with" . to_string ( ) ,
617- source : stmt. span . clone ( ) ,
618- generated : generated. clone ( ) ,
619- ..Default :: default ( )
620- } ) ;
621- self . record_expr_source_map ( & stmt. resource , generated) ;
622- self . record_block_source_map ( & stmt. body , generated) ;
623- }
624- Stmt :: If ( stmt) => {
625- self . record_expr_source_map ( & stmt. condition , generated) ;
626- self . record_block_source_map ( & stmt. then_body , generated) ;
627- if let Some ( else_body) = & stmt. else_body {
628- self . record_block_source_map ( else_body, generated) ;
629- }
630- }
631- Stmt :: Loop ( stmt) => {
632- if let Some ( condition) = & stmt. condition {
633- self . record_expr_source_map ( condition, generated) ;
634- }
635- self . record_block_source_map ( & stmt. body , generated) ;
636- }
637- Stmt :: For ( stmt) => {
638- self . record_expr_source_map ( & stmt. iterable , generated) ;
639- self . record_block_source_map ( & stmt. body , generated) ;
640- }
641- Stmt :: TaskGroup ( stmt) => {
642- self . record_block_source_map ( & stmt. body , generated) ;
643- }
644- Stmt :: Select ( stmt) => {
645- for arm in & stmt. arms {
646- self . record_expr_source_map ( & arm. operation , generated) ;
647- self . record_block_source_map ( & arm. body , generated) ;
648- }
649- }
650- Stmt :: Match ( stmt) => {
651- self . record_expr_source_map ( & stmt. value , generated) ;
652- for arm in & stmt. arms {
653- self . record_block_source_map ( & arm. body , generated) ;
654- }
655- }
656- Stmt :: LetElse ( stmt) => {
657- self . record_expr_source_map ( & stmt. value , generated) ;
658- self . record_block_source_map ( & stmt. else_body , generated) ;
659- }
660- Stmt :: Assign ( stmt) => {
661- self . record_expr_source_map ( & stmt. target , generated) ;
662- self . record_expr_source_map ( & stmt. value , generated) ;
663- }
664- Stmt :: Expr ( expr) => self . record_expr_source_map ( expr, generated) ,
665- Stmt :: Break ( _)
666- | Stmt :: Continue ( _)
667- | Stmt :: MalformedWith ( _)
668- | Stmt :: MalformedIf ( _)
669- | Stmt :: MalformedLoop ( _)
670- | Stmt :: MalformedFor ( _)
671- | Stmt :: MalformedMatch ( _)
672- | Stmt :: Unknown ( _) => { }
673- }
674- }
675-
676- pub ( super ) fn record_block_source_map ( & mut self , block : & Block , generated : & Span ) {
677- for statement in & block. statements {
678- self . source_map . push ( RustSourceMapEntry {
679- kind : "statement" . to_string ( ) ,
680- source : stmt_span ( statement) . clone ( ) ,
681- generated : generated. clone ( ) ,
682- ..Default :: default ( )
683- } ) ;
684- self . record_statement_source_map ( statement, generated) ;
685- }
686- }
687-
688- pub ( super ) fn record_expr_source_map ( & mut self , expr : & Expr , generated : & Span ) {
689- match expr {
690- Expr :: Binary {
691- left, right, span, ..
692- } => {
693- self . source_map . push ( RustSourceMapEntry {
694- kind : "binary" . to_string ( ) ,
695- source : span. clone ( ) ,
696- generated : generated. clone ( ) ,
697- ..Default :: default ( )
698- } ) ;
699- self . record_expr_source_map ( left, generated) ;
700- self . record_expr_source_map ( right, generated) ;
701- }
702- Expr :: Field { base, span, .. } => {
703- self . source_map . push ( RustSourceMapEntry {
704- kind : "field_path" . to_string ( ) ,
705- source : span. clone ( ) ,
706- generated : generated. clone ( ) ,
707- ..Default :: default ( )
708- } ) ;
709- self . record_expr_source_map ( base, generated) ;
710- }
711- Expr :: Index { base, index, .. } => {
712- self . record_expr_source_map ( base, generated) ;
713- self . record_expr_source_map ( index, generated) ;
714- }
715- Expr :: Call { callee, args, span } => {
716- self . source_map . push ( RustSourceMapEntry {
717- kind : "call" . to_string ( ) ,
718- source : span. clone ( ) ,
719- generated : generated. clone ( ) ,
720- ..Default :: default ( )
721- } ) ;
722- if self . is_native_boundary_call ( callee) {
723- self . source_map . push ( RustSourceMapEntry {
724- kind : "native_call" . to_string ( ) ,
725- source : span. clone ( ) ,
726- generated : generated. clone ( ) ,
727- ..Default :: default ( )
728- } ) ;
729- }
730- for arg in args {
731- self . source_map . push ( RustSourceMapEntry {
732- kind : "named_arg" . to_string ( ) ,
733- source : arg. span . clone ( ) ,
734- generated : generated. clone ( ) ,
735- ..Default :: default ( )
736- } ) ;
737- self . record_expr_source_map ( & arg. value , generated) ;
738- }
739- }
740- Expr :: Effect { value, .. } => self . record_expr_source_map ( value, generated) ,
741- Expr :: Manage { value, span } => {
742- self . source_map . push ( RustSourceMapEntry {
743- kind : "manage" . to_string ( ) ,
744- source : span. clone ( ) ,
745- generated : generated. clone ( ) ,
746- ..Default :: default ( )
747- } ) ;
748- self . record_expr_source_map ( value, generated) ;
749- }
750- Expr :: Spawn { value, span } => {
751- self . source_map . push ( RustSourceMapEntry {
752- kind : "spawn" . to_string ( ) ,
753- source : span. clone ( ) ,
754- generated : generated. clone ( ) ,
755- ..Default :: default ( )
756- } ) ;
757- self . record_expr_source_map ( value, generated) ;
758- }
759- Expr :: Await { value, span } => {
760- self . source_map . push ( RustSourceMapEntry {
761- kind : "await" . to_string ( ) ,
762- source : span. clone ( ) ,
763- generated : generated. clone ( ) ,
764- ..Default :: default ( )
765- } ) ;
766- self . record_expr_source_map ( value, generated) ;
767- }
768- Expr :: Try { value, span } => {
769- self . source_map . push ( RustSourceMapEntry {
770- kind : "try" . to_string ( ) ,
771- source : span. clone ( ) ,
772- generated : generated. clone ( ) ,
773- ..Default :: default ( )
774- } ) ;
775- self . record_expr_source_map ( value, generated) ;
776- }
777- Expr :: Closure { body, span, .. } => {
778- self . source_map . push ( RustSourceMapEntry {
779- kind : "closure" . to_string ( ) ,
780- source : span. clone ( ) ,
781- generated : generated. clone ( ) ,
782- ..Default :: default ( )
783- } ) ;
784- self . record_block_source_map ( body, generated) ;
785- }
786- Expr :: Match { value, arms, .. } => {
787- self . record_expr_source_map ( value, generated) ;
788- for arm in arms {
789- self . source_map . push ( RustSourceMapEntry {
790- kind : "match_pattern" . to_string ( ) ,
791- source : match_pattern_span ( & arm. pattern ) ,
792- generated : generated. clone ( ) ,
793- ..Default :: default ( )
794- } ) ;
795- self . record_block_source_map ( & arm. body , generated) ;
796- }
797- }
798- Expr :: ObjectLiteral { fields, span } => {
799- self . source_map . push ( RustSourceMapEntry {
800- kind : "object_literal" . to_string ( ) ,
801- source : span. clone ( ) ,
802- generated : generated. clone ( ) ,
803- ..Default :: default ( )
804- } ) ;
805- for field in fields {
806- self . source_map . push ( RustSourceMapEntry {
807- kind : "object_literal_field" . to_string ( ) ,
808- source : field. span . clone ( ) ,
809- generated : generated. clone ( ) ,
810- ..Default :: default ( )
811- } ) ;
812- self . record_expr_source_map ( & field. value , generated) ;
813- }
814- }
815- Expr :: MapLiteral { entries, span } => {
816- self . source_map . push ( RustSourceMapEntry {
817- kind : "map_literal" . to_string ( ) ,
818- source : span. clone ( ) ,
819- generated : generated. clone ( ) ,
820- ..Default :: default ( )
821- } ) ;
822- for entry in entries {
823- self . source_map . push ( RustSourceMapEntry {
824- kind : "map_literal_entry" . to_string ( ) ,
825- source : entry. span . clone ( ) ,
826- generated : generated. clone ( ) ,
827- ..Default :: default ( )
828- } ) ;
829- self . record_expr_source_map ( & entry. key , generated) ;
830- self . record_expr_source_map ( & entry. value , generated) ;
831- }
832- }
833- Expr :: ArrayLiteral { items, span } => {
834- self . source_map . push ( RustSourceMapEntry {
835- kind : "array_literal" . to_string ( ) ,
836- source : span. clone ( ) ,
837- generated : generated. clone ( ) ,
838- ..Default :: default ( )
839- } ) ;
840- for item in items {
841- self . record_expr_source_map ( item, generated) ;
842- }
843- }
844- Expr :: Ident ( _, span) => self . source_map . push ( RustSourceMapEntry {
845- kind : "ident" . to_string ( ) ,
846- source : span. clone ( ) ,
847- generated : generated. clone ( ) ,
848- ..Default :: default ( )
849- } ) ,
850- Expr :: Number ( _, span) => self . source_map . push ( RustSourceMapEntry {
851- kind : "number" . to_string ( ) ,
852- source : span. clone ( ) ,
853- generated : generated. clone ( ) ,
854- ..Default :: default ( )
855- } ) ,
856- Expr :: String ( _, span) | Expr :: MultilineString ( _, span) => {
857- self . source_map . push ( RustSourceMapEntry {
858- kind : "string" . to_string ( ) ,
859- source : span. clone ( ) ,
860- generated : generated. clone ( ) ,
861- ..Default :: default ( )
862- } )
863- }
864- Expr :: Unknown ( _) => { }
865- }
866- }
867578
868579 pub ( super ) fn is_native_boundary_call ( & self , callee : & Callee ) -> bool {
869580 let key = native_boundary_callee_key ( callee) ;
0 commit comments