]> git.lizzy.rs Git - rust.git/commitdiff
only try to suggest for try trait_ref
authorcsmoe <csmoe@msn.com>
Fri, 22 May 2020 02:11:52 +0000 (10:11 +0800)
committercsmoe <csmoe@msn.com>
Fri, 22 May 2020 02:11:52 +0000 (10:11 +0800)
src/libcore/ops/try.rs
src/librustc_hir/lang_items.rs
src/librustc_trait_selection/traits/error_reporting/mod.rs

index 996a01d413cbc1f03c0867cc7b32ac2e611171bb..e15ea11569f346172d4816abf43039364c3a3cfc 100644 (file)
@@ -25,6 +25,7 @@
     )
 )]
 #[doc(alias = "?")]
     )
 )]
 #[doc(alias = "?")]
+#[cfg_attr(not(bootstrap), lang = "try")]
 pub trait Try {
     /// The type of this value when viewed as successful.
     #[unstable(feature = "try_trait", issue = "42327")]
 pub trait Try {
     /// The type of this value when viewed as successful.
     #[unstable(feature = "try_trait", issue = "42327")]
index 53f72804a848d551b5227d4bfe49f70bdb7bf653..8921cc0c99dcad466f136e449e470616309ee3d0 100644 (file)
@@ -256,4 +256,6 @@ pub fn extract(attrs: &[ast::Attribute]) -> Option<(Symbol, Span)> {
     AlignOffsetLangItem,         "align_offset",       align_offset_fn,         Target::Fn;
 
     TerminationTraitLangItem,    "termination",        termination,             Target::Trait;
     AlignOffsetLangItem,         "align_offset",       align_offset_fn,         Target::Fn;
 
     TerminationTraitLangItem,    "termination",        termination,             Target::Trait;
+
+    TryTraitLangItem,            "try",                try_trait,               Target::Trait;
 }
 }
index 139b86007222447b02bc49be1fee5fe3a289021a..f18a417cccd058de2d6e7af3c13a8cd564cd4d0b 100644 (file)
@@ -402,7 +402,11 @@ fn report_selection_error(
                         self.suggest_remove_reference(&obligation, &mut err, &trait_ref);
                         self.suggest_semicolon_removal(&obligation, &mut err, span, &trait_ref);
                         self.note_version_mismatch(&mut err, &trait_ref);
                         self.suggest_remove_reference(&obligation, &mut err, &trait_ref);
                         self.suggest_semicolon_removal(&obligation, &mut err, span, &trait_ref);
                         self.note_version_mismatch(&mut err, &trait_ref);
-                        self.suggest_await_before_try(&mut err, &obligation, &trait_ref, span);
+
+                        if Some(trait_ref.def_id()) == tcx.lang_items().try_trait() {
+                            self.suggest_await_before_try(&mut err, &obligation, &trait_ref, span);
+                        }
+
                         if self.suggest_impl_trait(&mut err, span, &obligation, &trait_ref) {
                             err.emit();
                             return;
                         if self.suggest_impl_trait(&mut err, span, &obligation, &trait_ref) {
                             err.emit();
                             return;