ocypode_lang/diagnostics/runtime/
functions.rs

1use miette::{Diagnostic, NamedSource};
2
3/// Missing main function error diagnostic.
4#[derive(Debug, Diagnostic, thiserror::Error)]
5#[diagnostic(
6    code("Error(runtime::functions::missing_main)"),
7    help("Try adding a main function.")
8)]
9#[error("Missing main function")]
10pub struct MissingMain {
11    #[source_code]
12    pub(crate) src: NamedSource,
13}
14
15/// Invalid exit code error diagnostic.
16#[derive(Debug, Diagnostic, thiserror::Error)]
17#[diagnostic(
18    code("Error(runtime::functions::invalid_exit_code)"),
19    help("Try using a number between 0 and 255.")
20)]
21#[error("Invalid exit code")]
22pub struct InvalidExitCode {
23    #[source_code]
24    pub(crate) src: NamedSource,
25    pub(crate) code: bigdecimal::BigDecimal,
26    #[label("Invalid exit code `{code}`")]
27    pub(crate) span: miette::SourceSpan,
28}
29
30/// Uncorrect arguments error diagnostic.
31#[derive(Debug, Diagnostic, thiserror::Error)]
32#[diagnostic(
33    code("Error(runtime::functions::uncorrect_arguments)"),
34    help("`{func_name}` function takes {params}. But you are passed {args_count} arguments.")
35)]
36#[error("Uncorrect arguments")]
37pub struct UncorrectArguments {
38    pub(crate) func_name: String,
39    pub(crate) args_count: usize,
40    pub(crate) params: String,
41    #[source_code]
42    pub(crate) src: NamedSource,
43    #[label("Function `{func_name}` is defined here")]
44    pub(crate) func_span: miette::SourceSpan,
45    #[label("Uncorrect arguments for function `{func_name}`")]
46    pub(crate) span: miette::SourceSpan,
47}