func materialize_decl_wrapper_result(consume result: DeclWrapperResult, context_tag: Int) -> DeclWrapperOutputTurn the wrapper author's result into the flattened service output consumed by the Rust expansion driver.
View Source
pub func materialize_decl_wrapper_result(consume result: DeclWrapperResult, context_tag: Int) -> DeclWrapperOutput {
match result {
.remove -> DeclWrapperOutput(
source: "",
outcome: .none,
metadata: SyntaxMetadataOutput(identifiers: []),
removed: true,
failure_code: .none,
failure_message: .none,
failure_start: 0,
failure_end: 0
),
.failure(failure) -> decl_wrapper_failure(code: failure.code, message: failure.message, span: failure.span),
.replace(syntax) -> {
let materialized = materialize_decl_syntax_in(syntax: syntax, context_tag: context_tag)
if let .some(failure) = materialized.failure {
return decl_wrapper_failure(code: failure.code, message: failure.message, span: failure.span)
}
if let .some(value) = materialized.value {
let metadata = syntax_metadata_output(materialized: value)
return DeclWrapperOutput(
source: value.source,
outcome: .some(value.outcome),
metadata: metadata,
removed: false,
failure_code: .none,
failure_message: .none,
failure_start: 0,
failure_end: 0
)
}
decl_wrapper_failure(code: "macro.empty-result", message: "Wrapper returned no declaration syntax", span: 0..<0)
}
}
}