|
1 | 1 | use serde::{Deserialize, Serialize};
|
2 | 2 | use std::collections::BTreeMap;
|
3 | 3 | use std::fmt::Write;
|
4 |
| -use std::path::{Path, PathBuf}; |
| 4 | +use std::path::PathBuf; |
| 5 | + |
| 6 | +pub type ModuleResult = GenericModuleResult<PathBuf>; |
5 | 7 |
|
6 | 8 | #[derive(Debug, Serialize, Deserialize)]
|
7 | 9 | #[serde(untagged)]
|
8 |
| -pub enum ModuleResult { |
9 |
| - SingleModule(PathBuf), |
10 |
| - MultiModule(BTreeMap<String, PathBuf>), |
| 10 | +pub enum GenericModuleResult<T> { |
| 11 | + SingleModule(T), |
| 12 | + MultiModule(BTreeMap<String, T>), |
11 | 13 | }
|
12 | 14 |
|
13 |
| -impl ModuleResult { |
14 |
| - pub fn unwrap_single(&self) -> &Path { |
| 15 | +impl<T> GenericModuleResult<T> { |
| 16 | + pub fn unwrap_single(&self) -> &T { |
15 | 17 | match self {
|
16 |
| - ModuleResult::SingleModule(result) => result, |
17 |
| - ModuleResult::MultiModule(_) => { |
| 18 | + GenericModuleResult::SingleModule(result) => result, |
| 19 | + GenericModuleResult::MultiModule(_) => { |
18 | 20 | panic!("called `ModuleResult::unwrap_single()` on a `MultiModule` result")
|
19 | 21 | }
|
20 | 22 | }
|
21 | 23 | }
|
22 | 24 |
|
23 |
| - pub fn unwrap_multi(&self) -> &BTreeMap<String, PathBuf> { |
| 25 | + pub fn unwrap_multi(&self) -> &BTreeMap<String, T> { |
24 | 26 | match self {
|
25 |
| - ModuleResult::MultiModule(result) => result, |
26 |
| - ModuleResult::SingleModule(_) => { |
| 27 | + GenericModuleResult::MultiModule(result) => result, |
| 28 | + GenericModuleResult::SingleModule(_) => { |
27 | 29 | panic!("called `ModuleResult::unwrap_multi()` on a `SingleModule` result")
|
28 | 30 | }
|
29 | 31 | }
|
30 | 32 | }
|
31 | 33 | }
|
32 | 34 |
|
| 35 | +pub type CompileResult = GenericCompileResult<PathBuf>; |
| 36 | + |
33 | 37 | #[derive(Debug, Serialize, Deserialize)]
|
34 |
| -pub struct CompileResult { |
| 38 | +pub struct GenericCompileResult<T> { |
35 | 39 | pub entry_points: Vec<String>,
|
36 |
| - pub module: ModuleResult, |
| 40 | + pub module: GenericModuleResult<T>, |
37 | 41 | }
|
38 | 42 |
|
39 |
| -impl CompileResult { |
| 43 | +impl<T> GenericCompileResult<T> { |
40 | 44 | pub fn codegen_entry_point_strings(&self) -> String {
|
41 | 45 | let trie = Trie::create_from(self.entry_points.iter().map(|x| x as &str));
|
42 | 46 | let mut builder = String::new();
|
@@ -110,9 +114,6 @@ impl<'a> Trie<'a> {
|
110 | 114 | }
|
111 | 115 | }
|
112 | 116 |
|
113 |
| -#[allow(non_upper_case_globals)] |
114 |
| -pub const a: &str = "x::a"; |
115 |
| - |
116 | 117 | #[cfg(test)]
|
117 | 118 | mod test {
|
118 | 119 | use super::*;
|
|
0 commit comments