summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/reports/mod.rs2
-rw-r--r--src/reports/unused_symbols.rs20
-rw-r--r--src/resolver.rs5
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 }