neo_solidity/cli/cli_parts/cli_run/
compile.rs

1fn compile_input_or_exit(
2    input_content: &str,
3    verbose: bool,
4    options: CompileOptions,
5    json_errors: bool,
6    json_warnings: bool,
7) -> Vec<CompilationArtifacts> {
8    match compile_contracts_with_options(input_content, verbose, options) {
9        Ok(list) => list,
10        Err(CompileError::Diagnostics(diags)) | Err(CompileError::Semantic(diags)) => {
11            for diag in diags {
12                match diag.severity {
13                    DiagnosticSeverity::Warning => emit_warning(
14                        &diag.message,
15                        None,
16                        json_warnings,
17                        Some(standard_json::infer_validation_code(
18                            &diag.message,
19                            diag.severity,
20                        )),
21                    ),
22                    DiagnosticSeverity::Error => emit_error(
23                        &diag.message,
24                        standard_json::infer_validation_code(&diag.message, diag.severity),
25                        json_errors,
26                    ),
27                }
28            }
29            std::process::exit(1);
30        }
31        Err(CompileError::Ir(errors)) => {
32            for error in errors {
33                emit_error(&error.display(), "IR_GENERATION_ERROR", json_errors);
34            }
35            std::process::exit(1);
36        }
37        Err(CompileError::Manifest(message)) => {
38            emit_error(&message, "MANIFEST_GENERATION_ERROR", json_errors);
39            std::process::exit(1);
40        }
41        Err(CompileError::Message(message)) => {
42            emit_error(&message, "GENERIC_ERROR", json_errors);
43            std::process::exit(1);
44        }
45    }
46}