diff --git a/derive-encode/Cargo.toml b/derive-encode/Cargo.toml index 145c0159..064cce7d 100644 --- a/derive-encode/Cargo.toml +++ b/derive-encode/Cargo.toml @@ -18,6 +18,7 @@ syn = "2" [dev-dependencies] prometheus-client = { path = "../", features = ["protobuf"] } +trybuild = "1" [lib] -proc-macro = true \ No newline at end of file +proc-macro = true diff --git a/derive-encode/src/lib.rs b/derive-encode/src/lib.rs index 5b3cbe32..a3c0aac3 100644 --- a/derive-encode/src/lib.rs +++ b/derive-encode/src/lib.rs @@ -71,15 +71,15 @@ pub fn derive_encode_label_set(input: TokenStream) -> TokenStream { }; let gen = quote! { - impl prometheus_client::encoding::EncodeLabelSet for #name { - fn encode(&self, encoder: &mut prometheus_client::encoding::LabelSetEncoder) -> std::result::Result<(), std::fmt::Error> { - use prometheus_client::encoding::EncodeLabel; - use prometheus_client::encoding::EncodeLabelKey; - use prometheus_client::encoding::EncodeLabelValue; + impl ::prometheus_client::encoding::EncodeLabelSet for #name { + fn encode(&self, encoder: &mut ::prometheus_client::encoding::LabelSetEncoder) -> ::core::result::Result<(), ::core::fmt::Error> { + use ::prometheus_client::encoding::EncodeLabel; + use ::prometheus_client::encoding::EncodeLabelKey; + use ::prometheus_client::encoding::EncodeLabelValue; #body - Ok(()) + ::core::result::Result::Ok(()) } } }; @@ -118,13 +118,13 @@ pub fn derive_encode_label_value(input: TokenStream) -> TokenStream { }; let gen = quote! { - impl prometheus_client::encoding::EncodeLabelValue for #name { - fn encode(&self, encoder: &mut prometheus_client::encoding::LabelValueEncoder) -> std::result::Result<(), std::fmt::Error> { - use std::fmt::Write; + impl ::prometheus_client::encoding::EncodeLabelValue for #name { + fn encode(&self, encoder: &mut ::prometheus_client::encoding::LabelValueEncoder) -> ::core::result::Result<(), ::core::fmt::Error> { + use ::core::fmt::Write; #body - Ok(()) + ::core::result::Result::Ok(()) } } }; diff --git a/derive-encode/tests/build/redefine-prelude-symbols.rs b/derive-encode/tests/build/redefine-prelude-symbols.rs new file mode 100644 index 00000000..ce48ec56 --- /dev/null +++ b/derive-encode/tests/build/redefine-prelude-symbols.rs @@ -0,0 +1,36 @@ +#![allow(unused_imports)] + +// Empty module has nothing and can be used to redefine symbols. +mod empty {} + +// redefine the prelude `::std` +use empty as std; + +// redefine the dependency `::prometheus_client` +use empty as prometheus_client; + +// redefine the prelude `::core::result::Result`. +type Result = (); + +enum TResult { + Ok, + Err, +} + +// redefine the prelude `::core::result::Result::Ok/Err`. +use TResult::Ok; +use TResult::Err; + +#[derive(Debug, Clone, PartialEq, Eq, Hash, ::prometheus_client::encoding::EncodeLabelSet)] +struct LableSet { + a: String, + b: LabelEnum, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, ::prometheus_client::encoding::EncodeLabelValue)] +enum LabelEnum { + A, + B, +} + +fn main() {} diff --git a/derive-encode/tests/lib.rs b/derive-encode/tests/lib.rs index 5c7eb54d..5d0910f3 100644 --- a/derive-encode/tests/lib.rs +++ b/derive-encode/tests/lib.rs @@ -205,3 +205,9 @@ fn flatten() { + "# EOF\n"; assert_eq!(expected, buffer); } + +#[test] +fn build() { + let t = trybuild::TestCases::new(); + t.pass("tests/build/redefine-prelude-symbols.rs") +}