neo-devpack-solidity 0.22.0

Production-focused Solidity-to-NeoVM compilation system
Documentation
impl CompileError {
    fn into_errors(self, file: &str) -> Vec<Value> {
        match self {
            CompileError::Diagnostics(diags) | CompileError::Semantic(diags) => diags
                .into_iter()
                .map(|diag| standard_json::diagnostic_to_standard_error(&diag, file))
                .collect(),
            CompileError::Ir(errors) => errors
                .into_iter()
                .map(|diag| {
                    let formatted = diag.display();
                    let code = diag
                        .code
                        .unwrap_or_else(|| "IR_GENERATION_ERROR".to_string());
                    let mut obj = json!({
                        "component": "neo-devpack-solidity",
                        "severity": "error",
                        "type": "IrGeneration",
                        "code": code,
                        "sourceLocation": { "file": file },
                        "formattedMessage": formatted,
                        "message": diag.message,
                        "functionName": diag.function_name,
                    });
                    if let Some(suggestion) = &diag.suggestion {
                        obj["suggestion"] = json!(suggestion);
                    }
                    obj
                })
                .collect(),
            CompileError::Manifest(message) => vec![json!({
                "component": "neo-devpack-solidity",
                "severity": "error",
                "type": "ManifestGeneration",
                "code": "MANIFEST_GENERATION_ERROR",
                "sourceLocation": { "file": file },
                "formattedMessage": message,
                "message": message,
            })],
            CompileError::ParseErrors(diags) => diags
                .into_iter()
                .map(|diag| {
                    json!({
                        "component": "neo-devpack-solidity",
                        "severity": "error",
                        "type": "ParseError",
                        "code": "PARSE_ERROR",
                        "sourceLocation": {
                            "file": file,
                            "start": diag.start,
                            "end": diag.end,
                        },
                        "formattedMessage": diag.message,
                        "message": diag.message,
                    })
                })
                .collect(),
            CompileError::Message(message) => vec![json!({
                "component": "neo-devpack-solidity",
                "severity": "error",
                "type": "Generic",
                "code": "GENERIC_ERROR",
                "sourceLocation": { "file": file },
                "formattedMessage": message,
                "message": message,
            })],
        }
    }
}