geam_core/frontend/
error.rs1use camino::Utf8PathBuf;
2use ecow::EcoString;
3use gleam_compiler_core::parse::error::ParseError;
4use gleam_compiler_core::type_::Error as TypeError;
5use thiserror::Error;
6
7#[derive(Debug, Error)]
8pub enum FrontendError {
9 #[error("failed to parse Gleam module {path}")]
10 Parse {
11 path: Utf8PathBuf,
12 error: Box<ParseError>,
13 },
14
15 #[error("failed to analyse Gleam module")]
16 Analyse { errors: Vec<TypeError> },
17
18 #[error("package {package} was supplied more than once")]
19 DuplicatePackage { package: EcoString },
20
21 #[error(
22 "module {module} was supplied by both package {first_package} and package {second_package}"
23 )]
24 DuplicateModule {
25 module: EcoString,
26 first_package: EcoString,
27 first_path: Utf8PathBuf,
28 second_package: EcoString,
29 second_path: Utf8PathBuf,
30 },
31
32 #[error(
33 "module {module} was supplied as source by package {source_package} and as a host module by package {host_package}"
34 )]
35 SourceHostModuleCollision {
36 module: EcoString,
37 source_package: EcoString,
38 source_path: Utf8PathBuf,
39 host_package: EcoString,
40 },
41
42 #[error("root package {package} was not supplied")]
43 MissingRootPackage { package: EcoString },
44
45 #[error("root module {module} was not supplied by package {package}")]
46 MissingRootModule {
47 package: EcoString,
48 module: EcoString,
49 },
50
51 #[error("module import cycle: {modules:?}")]
52 ImportCycle { modules: Vec<EcoString> },
53}