sway_core/language/
programs.rs

1use std::sync::Arc;
2
3use super::{lexed::LexedProgram, parsed::ParseProgram, ty::TyProgram};
4use crate::semantic_analysis::program::TypeCheckFailed;
5use sway_utils::PerformanceData;
6
7/// Contains the lexed, parsed, typed compilation stages of a program, as well
8/// as compilation metrics.
9#[derive(Clone, Debug)]
10pub struct Programs {
11    pub lexed: Arc<LexedProgram>,
12    pub parsed: Arc<ParseProgram>,
13    pub typed: Result<Arc<TyProgram>, TypeCheckFailed>,
14    pub metrics: PerformanceData,
15}
16
17impl Programs {
18    pub fn new(
19        lexed: Arc<LexedProgram>,
20        parsed: Arc<ParseProgram>,
21        typed: Result<Arc<TyProgram>, TypeCheckFailed>,
22        metrics: PerformanceData,
23    ) -> Programs {
24        Programs {
25            lexed,
26            parsed,
27            typed,
28            metrics,
29        }
30    }
31}