mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 02:57:37 +00:00
Auto merge of #29109 - nxnfufunezn:master, r=Manishearth
Fixes : #19668 r? @Manishearth
This commit is contained in:
commit
cd79acf21e
@ -435,6 +435,28 @@ pub trait LintContext: Sized {
|
||||
self.lookup_and_emit(lint, Some(span), msg);
|
||||
}
|
||||
|
||||
/// Emit a lint and note at the appropriate level, for a particular span.
|
||||
fn span_lint_note(&self, lint: &'static Lint, span: Span, msg: &str,
|
||||
note_span: Span, note: &str) {
|
||||
self.span_lint(lint, span, msg);
|
||||
if self.current_level(lint) != Level::Allow {
|
||||
if note_span == span {
|
||||
self.sess().fileline_note(note_span, note)
|
||||
} else {
|
||||
self.sess().span_note(note_span, note)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Emit a lint and help at the appropriate level, for a particular span.
|
||||
fn span_lint_help(&self, lint: &'static Lint, span: Span,
|
||||
msg: &str, help: &str) {
|
||||
self.span_lint(lint, span, msg);
|
||||
if self.current_level(lint) != Level::Allow {
|
||||
self.sess().span_help(span, help)
|
||||
}
|
||||
}
|
||||
|
||||
/// Emit a lint at the appropriate level, with no associated span.
|
||||
fn lint(&self, lint: &'static Lint, msg: &str) {
|
||||
self.lookup_and_emit(lint, None, msg);
|
||||
|
@ -1236,15 +1236,12 @@ impl LateLintPass for DropWithReprExtern {
|
||||
codemap::DUMMY_SP);
|
||||
let self_defn_span = ctx.tcx.map.def_id_span(self_type_did,
|
||||
codemap::DUMMY_SP);
|
||||
ctx.span_lint(DROP_WITH_REPR_EXTERN,
|
||||
drop_impl_span,
|
||||
"implementing Drop adds hidden state to types, \
|
||||
possibly conflicting with `#[repr(C)]`");
|
||||
// FIXME #19668: could be span_lint_note instead of manual guard.
|
||||
if ctx.current_level(DROP_WITH_REPR_EXTERN) != Level::Allow {
|
||||
ctx.sess().span_note(self_defn_span,
|
||||
"the `#[repr(C)]` attribute is attached here");
|
||||
}
|
||||
ctx.span_lint_note(DROP_WITH_REPR_EXTERN,
|
||||
drop_impl_span,
|
||||
"implementing Drop adds hidden state to types, \
|
||||
possibly conflicting with `#[repr(C)]`",
|
||||
self_defn_span,
|
||||
"the `#[repr(C)]` attribute is attached here");
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
|
Loading…
Reference in New Issue
Block a user