Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 5 pull requests #98925

Merged
merged 65 commits into from
Jul 5, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
b96d1e4
change ptr::swap methods to do untyped copies
RalfJung Jun 3, 2022
cb7cd97
promise that ptr::copy and ptr::swap are doing untyped copies
RalfJung Jun 3, 2022
7d2eba6
middle: translation in `LintDiagnosticBuilder`
davidtwco Jun 27, 2022
0f4c4c5
lint: port array-into-iter diagnostics
davidtwco Jun 27, 2022
2a69640
lint: port enum intrinsics diagnostics
davidtwco Jun 27, 2022
a0624eb
lint: port expectation diagnostics
davidtwco Jun 27, 2022
fd57269
lint: port hidden unicode codepoints diagnostics
davidtwco Jun 27, 2022
e88916c
lint: port default hash types diagnostics
davidtwco Jun 27, 2022
8139542
lint: port query instability diagnostics
davidtwco Jun 27, 2022
0996a7a
lint: port ty diagnostics
davidtwco Jun 27, 2022
1c3a3e0
lint: port impl `LintPass` by hand diagnostics
davidtwco Jun 27, 2022
674ac60
lint: port non-existant doc keyword diagnostics
davidtwco Jun 27, 2022
4f35c79
lint: port translation migration diagnostics
davidtwco Jun 27, 2022
c29e05e
lint: port `CString` ptr diagnostics
davidtwco Jun 27, 2022
48e4bf1
lint: port non-ascii-idents diagnostics
davidtwco Jun 27, 2022
7ee4aa7
lint: port non-fmt-panic diagnostics
davidtwco Jun 27, 2022
096a69d
lint: port non-standard style diagnostics
davidtwco Jun 27, 2022
855f237
lint: port no-op method call diagnostics
davidtwco Jun 27, 2022
37588d6
lint: port pass-by-value diagnostics
davidtwco Jun 27, 2022
8e83656
lint: port redundant semicolons diagnostics
davidtwco Jun 27, 2022
7ef610c
lint: port drop trait/glue diagnostics
davidtwco Jun 27, 2022
7a9bef4
lint: port overflowing literals diagnostics
davidtwco Jun 27, 2022
e5f2e0e
lint: port improper ctypes diagnostics
davidtwco Jun 28, 2022
14c3016
lint: port variant size difference diagnostics
davidtwco Jun 28, 2022
0602729
lint: port atomic ordering diagnostics
davidtwco Jun 28, 2022
1999a4c
lint: port unused diagnostics
davidtwco Jun 28, 2022
2829f51
lint: port path statement diagnostics
davidtwco Jun 28, 2022
fc4f8d9
lint: port unused delimiter diagnostics
davidtwco Jun 28, 2022
e248338
lint: port unused import braces diagnostics
davidtwco Jun 28, 2022
4f7b10f
lint: port unused allocation diagnostics
davidtwco Jun 28, 2022
588977b
lint: port while true diagnostics
davidtwco Jun 28, 2022
d433c9a
lint: port box pointers diagnostics
davidtwco Jun 28, 2022
4c63a21
lint: port non-shorthand pattern diagnostics
davidtwco Jun 28, 2022
7dffd14
lint: port unsafe diagnostics
davidtwco Jun 28, 2022
82bd2c2
lint: port missing documentation diagnostics
davidtwco Jun 28, 2022
28655bc
lint: port missing copy impl diagnostics
davidtwco Jun 28, 2022
284ec37
lint: port missing debug impl diagnostics
davidtwco Jun 28, 2022
18a48c1
lint: port anonymous parameter diagnostics
davidtwco Jun 28, 2022
e151d66
lint: port deprecated attr diagnostics
davidtwco Jun 28, 2022
a13b70e
lint: port unused doc comment diagnostics
davidtwco Jun 28, 2022
dbdbdb6
lint: port no-mangle diagnostics
davidtwco Jun 28, 2022
d071f50
lint: port mutable transmutes diagnostic
davidtwco Jun 28, 2022
23ee3e0
lint: port unstable feature diagnostics
davidtwco Jun 28, 2022
dbced10
lint: port unreachable `pub` diagnostic
davidtwco Jun 28, 2022
01a64af
lint: port type alias bounds diagnostics
davidtwco Jun 28, 2022
3c9bda5
lint: port trivial bounds diagnostics
davidtwco Jun 28, 2022
3a498a7
lint: port `...` range pattern diagnostics
davidtwco Jun 28, 2022
10f2d3f
lint: port test items diagnostics
davidtwco Jun 28, 2022
1067641
lint: port keyword idents diagnostics
davidtwco Jun 28, 2022
acea23e
lint: port explicit outlives diagnostics
davidtwco Jun 28, 2022
bd8fe82
lint: port incomplete features diagnostics
davidtwco Jun 28, 2022
157cbbc
lint: add todo for invalid value diagnostics
davidtwco Jun 28, 2022
2e563a4
lint: port clashing extern diagnostics
davidtwco Jun 28, 2022
5524ca1
lint: port deref nullptr diagnostics
davidtwco Jun 28, 2022
fedd4c6
lint: port asm labels diagnostics
davidtwco Jun 28, 2022
9ff6c77
tests: avoid inadvertent diffs in diag derive test
davidtwco Jun 29, 2022
83f2288
Improve click behavior of the source code mobile full-screen "sidebar"
notriddle Jul 1, 2022
6e2c49f
rustdoc: add gui test case ensuring source sidebar doesn't spontaneou…
notriddle Jul 2, 2022
ce9e834
Remove FIXME from rustdoc intra-doc test
GuillaumeGomez Jul 3, 2022
170b173
:arrow_up: rust-analyzer
lnicola Jul 5, 2022
8fa1ed8
Rollup merge of #97712 - RalfJung:untyped, r=scottmcm
Dylan-DPC Jul 5, 2022
291df97
Rollup merge of #98624 - davidtwco:translation-on-lints, r=compiler-e…
Dylan-DPC Jul 5, 2022
c2613a5
Rollup merge of #98776 - notriddle:notriddle/mobile-sidebar-auto-clos…
Dylan-DPC Jul 5, 2022
6a61e18
Rollup merge of #98856 - GuillaumeGomez:rustdoc-test-rm-fixme, r=Dyla…
Dylan-DPC Jul 5, 2022
1036a38
Rollup merge of #98913 - lnicola:rust-analyzer-2022-07-05, r=lnicola
Dylan-DPC Jul 5, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
400 changes: 400 additions & 0 deletions compiler/rustc_error_messages/locales/en-US/lint.ftl

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions compiler/rustc_error_messages/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,12 @@ pub use unic_langid::{langid, LanguageIdentifier};

// Generates `DEFAULT_LOCALE_RESOURCES` static and `fluent_generated` module.
fluent_messages! {
borrowck => "../locales/en-US/borrowck.ftl",
builtin_macros => "../locales/en-US/builtin_macros.ftl",
lint => "../locales/en-US/lint.ftl",
parser => "../locales/en-US/parser.ftl",
privacy => "../locales/en-US/privacy.ftl",
typeck => "../locales/en-US/typeck.ftl",
builtin_macros => "../locales/en-US/builtin_macros.ftl",
borrowck => "../locales/en-US/borrowck.ftl",
}

pub use fluent_generated::{self as fluent, DEFAULT_LOCALE_RESOURCES};
Expand Down
84 changes: 83 additions & 1 deletion compiler/rustc_errors/src/diagnostic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use rustc_error_messages::FluentValue;
use rustc_lint_defs::{Applicability, LintExpectationId};
use rustc_span::edition::LATEST_STABLE_EDITION;
use rustc_span::symbol::{Ident, Symbol};
use rustc_span::{Span, DUMMY_SP};
use rustc_span::{edition::Edition, Span, DUMMY_SP};
use std::borrow::Cow;
use std::fmt;
use std::hash::{Hash, Hasher};
Expand Down Expand Up @@ -39,12 +39,94 @@ pub trait IntoDiagnosticArg {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static>;
}

impl IntoDiagnosticArg for bool {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
if self {
DiagnosticArgValue::Str(Cow::Borrowed("true"))
} else {
DiagnosticArgValue::Str(Cow::Borrowed("false"))
}
}
}

impl IntoDiagnosticArg for i8 {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Owned(self.to_string()))
}
}

impl IntoDiagnosticArg for u8 {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Owned(self.to_string()))
}
}

impl IntoDiagnosticArg for i16 {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Owned(self.to_string()))
}
}

impl IntoDiagnosticArg for u16 {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Owned(self.to_string()))
}
}

impl IntoDiagnosticArg for i32 {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Owned(self.to_string()))
}
}

impl IntoDiagnosticArg for u32 {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Owned(self.to_string()))
}
}

impl IntoDiagnosticArg for i64 {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Owned(self.to_string()))
}
}

impl IntoDiagnosticArg for u64 {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Owned(self.to_string()))
}
}

impl IntoDiagnosticArg for i128 {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Owned(self.to_string()))
}
}

impl IntoDiagnosticArg for u128 {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Owned(self.to_string()))
}
}

impl IntoDiagnosticArg for String {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Owned(self))
}
}

impl IntoDiagnosticArg for std::num::NonZeroU32 {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Owned(self.to_string()))
}
}

impl IntoDiagnosticArg for Edition {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Owned(self.to_string()))
}
}

impl IntoDiagnosticArg for Symbol {
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
self.to_ident_string().into_diagnostic_arg()
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_errors/src/diagnostic_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,7 @@ impl<'a, G: EmissionGuarantee> DiagnosticBuilder<'a, G> {
applicability: Applicability,
) -> &mut Self);

forward!(pub fn set_primary_message(&mut self, msg: impl Into<String>) -> &mut Self);
forward!(pub fn set_primary_message(&mut self, msg: impl Into<DiagnosticMessage>) -> &mut Self);
forward!(pub fn set_span(&mut self, sp: impl Into<MultiSpan>) -> &mut Self);
forward!(pub fn code(&mut self, s: DiagnosticId) -> &mut Self);
forward!(pub fn set_arg(
Expand Down
21 changes: 10 additions & 11 deletions compiler/rustc_lint/src/array_into_iter.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use crate::{LateContext, LateLintPass, LintContext};
use rustc_errors::Applicability;
use rustc_errors::{fluent, Applicability};
use rustc_hir as hir;
use rustc_middle::ty;
use rustc_middle::ty::adjustment::{Adjust, Adjustment};
Expand Down Expand Up @@ -120,31 +120,30 @@ impl<'tcx> LateLintPass<'tcx> for ArrayIntoIter {
_ => bug!("array type coerced to something other than array or slice"),
};
cx.struct_span_lint(ARRAY_INTO_ITER, call.ident.span, |lint| {
let mut diag = lint.build(&format!(
"this method call resolves to `<&{} as IntoIterator>::into_iter` \
(due to backwards compatibility), \
but will resolve to <{} as IntoIterator>::into_iter in Rust 2021",
target, target,
));
let mut diag = lint.build(fluent::lint::array_into_iter);
diag.set_arg("target", target);
diag.span_suggestion(
call.ident.span,
"use `.iter()` instead of `.into_iter()` to avoid ambiguity",
fluent::lint::use_iter_suggestion,
"iter",
Applicability::MachineApplicable,
);
if self.for_expr_span == expr.span {
diag.span_suggestion(
receiver_arg.span.shrink_to_hi().to(expr.span.shrink_to_hi()),
"or remove `.into_iter()` to iterate by value",
fluent::lint::remove_into_iter_suggestion,
"",
Applicability::MaybeIncorrect,
);
} else if receiver_ty.is_array() {
diag.multipart_suggestion(
"or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value",
fluent::lint::use_explicit_into_iter_suggestion,
vec![
(expr.span.shrink_to_lo(), "IntoIterator::into_iter(".into()),
(receiver_arg.span.shrink_to_hi().to(expr.span.shrink_to_hi()), ")".into()),
(
receiver_arg.span.shrink_to_hi().to(expr.span.shrink_to_hi()),
")".into(),
),
],
Applicability::MaybeIncorrect,
);
Expand Down
Loading