func materialize_expr_macro_result(consume result: SyntaxResult<Expr>) -> ExprMacroOutputTurn the macro author's category-checked result into the single flattened service output consumed by the Rust expansion driver.
View Source
pub func materialize_expr_macro_result(consume result: SyntaxResult<Expr>) -> ExprMacroOutput {
if let .some(failure) = result.failure {
return expr_macro_failure(code: failure.code, message: failure.message, span: failure.span)
}
if let .some(syntax) = result.value {
let materialized = materialize_expr_syntax(syntax: syntax)
if let .some(failure) = materialized.failure {
return expr_macro_failure(code: failure.code, message: failure.message, span: failure.span)
}
if let .some(value) = materialized.value {
let metadata = syntax_metadata_output(materialized: value)
return ExprMacroOutput(
source: value.source,
outcome: .some(value.outcome),
metadata: metadata,
failure_code: .none,
failure_message: .none,
failure_start: 0,
failure_end: 0
)
}
}
expr_macro_failure(code: "macro.empty-result", message: "Macro returned no expression syntax", span: 0..<0)
}