diff options
author | Ben Bridle <bridle.benjamin@gmail.com> | 2025-02-13 20:23:25 +1300 |
---|---|---|
committer | Ben Bridle <bridle.benjamin@gmail.com> | 2025-02-13 20:23:25 +1300 |
commit | e717e32badebcd34f590e1e58d6417ebf8c8d973 (patch) | |
tree | d760edb12b84ee15036200fc5c7092f692815b2b | |
parent | d0fcd03c363475aa5020743ce16f04fab70ac59d (diff) | |
download | assembler-e717e32badebcd34f590e1e58d6417ebf8c8d973.zip |
Create struct for reporting unused definitions
-rw-r--r-- | src/reports/mod.rs | 2 | ||||
-rw-r--r-- | src/reports/unused_symbols.rs | 20 | ||||
-rw-r--r-- | src/resolver.rs | 5 |
3 files changed, 27 insertions, 0 deletions
diff --git a/src/reports/mod.rs b/src/reports/mod.rs index 49fdff7..eb7a52f 100644 --- a/src/reports/mod.rs +++ b/src/reports/mod.rs @@ -1,10 +1,12 @@ mod resolver_error; mod source_hierarchy; mod source_symbols; +mod unused_symbols; pub use resolver_error::*; pub use source_hierarchy::*; pub use source_symbols::*; +pub use unused_symbols::*; use crate::*; diff --git a/src/reports/unused_symbols.rs b/src/reports/unused_symbols.rs new file mode 100644 index 0000000..7cd3596 --- /dev/null +++ b/src/reports/unused_symbols.rs @@ -0,0 +1,20 @@ +use crate::*; + + +pub struct UnusedSymbols<'a> { + pub resolver: &'a Resolver, +} + +impl<'a> UnusedSymbols<'a> { + pub fn report(&self) { + for definition in &self.resolver.definitions { + if definition.references.is_empty() { + let message = format!( + "Unused definition '{BOLD}{:?}{NORMAL}'", + definition.tracked.symbol); + let context = definition.tracked.context(self.resolver); + report_source_issue(LogLevel::Warn, &context, &message); + } + } + } +} diff --git a/src/resolver.rs b/src/resolver.rs index 77ab348..b50f910 100644 --- a/src/resolver.rs +++ b/src/resolver.rs @@ -136,6 +136,11 @@ impl Resolver { SourceSymbols { resolver: self } } + /// Return a type that can print all unused symbol definitions. + pub fn unused(&self) -> UnusedSymbols { + UnusedSymbols { resolver: self } + } + /// Return a type that can print the structure of the source tree. pub fn hierarchy(&self) -> SourceHierarchy { SourceHierarchy { resolver: self } |