Emit parentheses in suggestion for global paths
This commit is contained in:
parent
dd67fe1727
commit
0cb367266b
@ -914,7 +914,7 @@ impl<'a> LoweringContext<'a> {
|
||||
let qpath = self.lower_qpath(t.id, qself, path, ParamMode::Explicit, itctx);
|
||||
let ty = self.ty_path(id, t.span, qpath);
|
||||
if let hir::TyTraitObject(..) = ty.node {
|
||||
self.maybe_lint_bare_trait(t.span, t.id);
|
||||
self.maybe_lint_bare_trait(t.span, t.id, qself.is_none() && path.is_global());
|
||||
}
|
||||
return ty;
|
||||
}
|
||||
@ -955,7 +955,7 @@ impl<'a> LoweringContext<'a> {
|
||||
self.elided_lifetime(t.span)
|
||||
});
|
||||
if kind != TraitObjectSyntax::Dyn {
|
||||
self.maybe_lint_bare_trait(t.span, t.id);
|
||||
self.maybe_lint_bare_trait(t.span, t.id, false);
|
||||
}
|
||||
hir::TyTraitObject(bounds, lifetime_bound)
|
||||
}
|
||||
@ -3710,12 +3710,12 @@ impl<'a> LoweringContext<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
fn maybe_lint_bare_trait(&self, span: Span, id: NodeId) {
|
||||
fn maybe_lint_bare_trait(&self, span: Span, id: NodeId, is_global: bool) {
|
||||
if self.sess.features.borrow().dyn_trait {
|
||||
self.sess.buffer_lint_with_diagnostic(
|
||||
builtin::BARE_TRAIT_OBJECT, id, span,
|
||||
"trait objects without an explicit `dyn` are deprecated",
|
||||
builtin::BuiltinLintDiagnostics::BareTraitObject(span)
|
||||
builtin::BuiltinLintDiagnostics::BareTraitObject(span, is_global)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -320,15 +320,16 @@ impl LintPass for HardwiredLints {
|
||||
#[derive(PartialEq, RustcEncodable, RustcDecodable, Debug)]
|
||||
pub enum BuiltinLintDiagnostics {
|
||||
Normal,
|
||||
BareTraitObject(Span)
|
||||
BareTraitObject(Span, /* is_global */ bool)
|
||||
}
|
||||
|
||||
impl BuiltinLintDiagnostics {
|
||||
pub fn run(self, sess: &Session, db: &mut DiagnosticBuilder) {
|
||||
match self {
|
||||
BuiltinLintDiagnostics::Normal => (),
|
||||
BuiltinLintDiagnostics::BareTraitObject(span) => {
|
||||
BuiltinLintDiagnostics::BareTraitObject(span, is_global) => {
|
||||
let sugg = match sess.codemap().span_to_snippet(span) {
|
||||
Ok(ref s) if is_global => format!("dyn ({})", s),
|
||||
Ok(s) => format!("dyn {}", s),
|
||||
Err(_) => format!("dyn <type>")
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user