4 个版本
0.10.1 | 2023 年 7 月 10 日 |
---|---|
0.10.0 | 2023 年 3 月 22 日 |
0.9.1 | 2020 年 11 月 1 日 |
0.9.0 | 2020 年 10 月 10 日 |
#30 in 过程宏
433,332 每月下载量
用于 1,065 个 crates(19 个直接使用)
25KB
389 行
proc-macro2-diagnostics
稳定和夜间过程宏的诊断工具!
使用方法
- 在您的过程宏中依赖此库。
[dependencies]
proc_macro2_diagnostics = "0.10"
- 导入
SpanDiagnosticExt
并在proc_macro2::Span
上使用其方法来创建Diagnostic
对象。
use syn::spanned::Spanned;
use proc_macro2::TokenStream;
use proc_macro2_diagnostics::{SpanDiagnosticExt, Diagnostic};
fn my_macro(input: TokenStream) -> Result<TokenStream, Diagnostic> {
Err(input.span().error("there's a problem here..."))
}
- 如果有错误,则作为标记发出诊断
extern crate proc_macro;
pub fn real_macro(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
match my_macro(tokens.into()) {
Ok(tokens) => tokens.into(),
Err(diag) => diag.emit_as_expr_tokens().into()
}
}
这在夜间或稳定版本上都是正确的。
注意事项
在稳定版本上,由于限制,任何顶级非错误诊断都会被作为错误发出。这将终止编译。为了避免这种情况,您可能希望将非错误诊断的发出通过 cfg
隔离到夜间。
颜色
默认情况下,在稳定版本上错误消息会着色。要禁用,请禁用默认功能。
[dependencies]
proc_macro2_diagnostics = { version = "0.10", default-features = false }
编译器在夜间版本上始终着色诊断信息。
许可证
以下任一许可证,任选其一
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
依赖关系
~260–730KB
~17K SLoC