litex/result/
runtime_unknown.rs1use crate::prelude::*;
2use std::fmt;
3
4#[derive(Debug)]
5pub struct StmtUnknown {
6 pub detail: Option<Vec<String>>,
7}
8
9impl fmt::Display for StmtUnknown {
10 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
11 write!(f, "{}", UNKNOWN_COLON)?;
12 if let Some(detail_lines) = &self.detail {
13 if !detail_lines.is_empty() {
14 write!(f, " {}", detail_lines.join("\n"))?;
15 }
16 }
17 Ok(())
18 }
19}
20
21impl StmtUnknown {
22 pub fn new() -> Self {
23 StmtUnknown { detail: None }
24 }
25
26 pub fn new_with_detail(detail: String) -> Self {
27 Self::new_with_detail_lines(vec![detail])
28 }
29
30 pub fn new_with_detail_lines(detail_lines: Vec<String>) -> Self {
31 if detail_lines.is_empty() {
32 return StmtUnknown { detail: None };
33 }
34 StmtUnknown {
35 detail: Some(detail_lines),
36 }
37 }
38
39 pub fn detail_for_display(&self) -> String {
40 self.detail
41 .as_ref()
42 .map(|lines| lines.join("\n"))
43 .unwrap_or_default()
44 }
45}