use crate::*; pub struct SourceSymbols<'a> { pub resolver: &'a Resolver, } impl<'a> SourceSymbols<'a> { pub fn report(&self) { for definition in &self.resolver.definitions { let message = format!( "Definition '{BOLD}{:?}{NORMAL}' (resolves {})", definition.tracked.symbol, definition.references.len()); let context = definition.tracked.context(self.resolver); report_source_issue(LogLevel::Info, &context, &message); } for reference in &self.resolver.resolved { let definition = &self.resolver.definitions[reference.definition]; let message = format!( "Resolved reference '{BOLD}{:?}{NORMAL}' (defined by {:?})", reference.tracked.symbol, definition.tracked.symbol); let context = reference.tracked.context(self.resolver); report_source_issue(LogLevel::Info, &context, &message); } for reference in &self.resolver.unresolved { let message = format!( "Unresolved reference '{BOLD}{:?}{NORMAL}'", reference.symbol); let context = reference.context(self.resolver); report_source_issue(LogLevel::Warn, &context, &message); } } }