27 lines
731 B
Rust
27 lines
731 B
Rust
use super::ast::{Expression, Program};
|
|
use internment::ArcIntern;
|
|
use std::collections::HashSet;
|
|
|
|
impl<T> Program<T> {
|
|
/// Get the complete list of strings used within the program.
|
|
///
|
|
/// For the purposes of this function, strings are the variables used in
|
|
/// `print` statements.
|
|
pub fn strings(&self) -> HashSet<ArcIntern<String>> {
|
|
let mut result = HashSet::new();
|
|
|
|
for function in self.functions.values() {
|
|
function.body.register_strings(&mut result);
|
|
}
|
|
|
|
result
|
|
}
|
|
}
|
|
|
|
impl<T> Expression<T> {
|
|
fn register_strings(&self, _string_set: &mut HashSet<ArcIntern<String>>) {
|
|
// nothing has a string in here, at the moment
|
|
unimplemented!()
|
|
}
|
|
}
|