Skip to content

Commit 096eeab

Browse files
feat: Enable getting/setting debug ID on DecodedMap
Ref #110
1 parent f946f5a commit 096eeab

File tree

1 file changed

+100
-2
lines changed

1 file changed

+100
-2
lines changed

src/types.rs

Lines changed: 100 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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)]
13221344
mod 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

Comments
 (0)