@@ -125,6 +125,24 @@ impl DecodedMap {
125125 }
126126 }
127127 }
128+
129+ /// Returns the debug ID of the sourcemap, if it exists.
130+ pub fn debug_id ( & self ) -> Option < DebugId > {
131+ match self {
132+ DecodedMap :: Regular ( sm) => sm. get_debug_id ( ) ,
133+ DecodedMap :: Index ( smi) => smi. debug_id ( ) ,
134+ DecodedMap :: Hermes ( smh) => smh. get_debug_id ( ) ,
135+ }
136+ }
137+
138+ /// Sets the debug ID of the sourcemap.
139+ pub fn set_debug_id ( & mut self , debug_id : Option < DebugId > ) {
140+ match self {
141+ DecodedMap :: Regular ( sm) => sm. set_debug_id ( debug_id) ,
142+ DecodedMap :: Index ( smi) => smi. set_debug_id ( debug_id) ,
143+ DecodedMap :: Hermes ( smh) => smh. set_debug_id ( debug_id) ,
144+ }
145+ }
128146}
129147
130148/// Represents a raw token
@@ -1110,9 +1128,13 @@ impl SourceMapIndex {
11101128 self . debug_id
11111129 }
11121130
1131+ fn set_debug_id ( & mut self , debug_id : Option < DebugId > ) {
1132+ self . debug_id = debug_id;
1133+ }
1134+
11131135 /// Adds the given debug id to the sourcemap index.
11141136 pub ( crate ) fn with_debug_id ( mut self , debug_id : Option < DebugId > ) -> Self {
1115- self . debug_id = debug_id ;
1137+ self . set_debug_id ( debug_id) ;
11161138 self
11171139 }
11181140
@@ -1320,7 +1342,9 @@ impl SourceMapSection {
13201342
13211343#[ cfg( test) ]
13221344mod tests {
1323- use super :: { RewriteOptions , SourceMap , SourceMapIndex } ;
1345+ use std:: collections:: BTreeSet ;
1346+
1347+ use super :: { DecodedMap , RewriteOptions , SourceMap , SourceMapIndex } ;
13241348 use debugid:: DebugId ;
13251349
13261350 #[ test]
@@ -1449,6 +1473,80 @@ mod tests {
14491473 ) ;
14501474 }
14511475
1476+ #[ test]
1477+ fn test_decoded_map_regular_debug_id ( ) {
1478+ const DEBUG_ID : & str = "0123456789abcdef0123456789abcdef" ;
1479+
1480+ let mut decoded_map = DecodedMap :: Regular ( SourceMap {
1481+ file : None ,
1482+ tokens : vec ! [ ] ,
1483+ names : vec ! [ ] ,
1484+ source_root : None ,
1485+ sources : vec ! [ ] ,
1486+ sources_prefixed : None ,
1487+ sources_content : vec ! [ ] ,
1488+ ignore_list : BTreeSet :: new ( ) ,
1489+ debug_id : None ,
1490+ } ) ;
1491+
1492+ assert ! ( decoded_map. debug_id( ) . is_none( ) ) ;
1493+
1494+ decoded_map. set_debug_id ( Some ( DEBUG_ID . parse ( ) . expect ( "valid debug id" ) ) ) ;
1495+
1496+ assert_eq ! (
1497+ decoded_map,
1498+ DecodedMap :: Regular ( SourceMap {
1499+ file: None ,
1500+ tokens: vec![ ] ,
1501+ names: vec![ ] ,
1502+ source_root: None ,
1503+ sources: vec![ ] ,
1504+ sources_prefixed: None ,
1505+ sources_content: vec![ ] ,
1506+ ignore_list: BTreeSet :: new( ) ,
1507+ debug_id: Some ( DEBUG_ID . parse( ) . expect( "valid debug id" ) ) ,
1508+ } )
1509+ ) ;
1510+
1511+ assert_eq ! (
1512+ decoded_map. debug_id( ) ,
1513+ Some ( DEBUG_ID . parse( ) . expect( "valid debug id" ) )
1514+ ) ;
1515+ }
1516+
1517+ #[ test]
1518+ fn test_decoded_map_index_debug_id ( ) {
1519+ const DEBUG_ID : & str = "0123456789abcdef0123456789abcdef" ;
1520+
1521+ let mut decoded_map = DecodedMap :: Index ( SourceMapIndex {
1522+ file : None ,
1523+ sections : vec ! [ ] ,
1524+ x_facebook_offsets : None ,
1525+ x_metro_module_paths : None ,
1526+ debug_id : None ,
1527+ } ) ;
1528+
1529+ assert ! ( decoded_map. debug_id( ) . is_none( ) ) ;
1530+
1531+ decoded_map. set_debug_id ( Some ( DEBUG_ID . parse ( ) . expect ( "valid debug id" ) ) ) ;
1532+
1533+ assert_eq ! (
1534+ decoded_map,
1535+ DecodedMap :: Index ( SourceMapIndex {
1536+ file: None ,
1537+ sections: vec![ ] ,
1538+ x_facebook_offsets: None ,
1539+ x_metro_module_paths: None ,
1540+ debug_id: Some ( DEBUG_ID . parse( ) . expect( "valid debug id" ) ) ,
1541+ } )
1542+ ) ;
1543+
1544+ assert_eq ! (
1545+ decoded_map. debug_id( ) ,
1546+ Some ( DEBUG_ID . parse( ) . expect( "valid debug id" ) )
1547+ ) ;
1548+ }
1549+
14521550 mod prop {
14531551 //! This module exists to test the following property:
14541552 //!
0 commit comments