Rollup merge of #133951 - bjorn3:wasm_c_abi_lint_hard_error, r=workingjubilee
Make the wasm_c_abi future compat warning a hard error This is the next step in getting rid of the broken C abi for wasm32-unknown-unknown. The lint was made deny-by-default in https://github.com/rust-lang/rust/pull/129534 3 months ago. This still keeps the `-Zwasm-c-abi` flag set to `legacy` by default. It will be flipped in a future PR. cc https://github.com/rust-lang/rust/issues/122532
This commit is contained in:
commit
dc202df0ed
11 changed files with 55 additions and 54 deletions
|
@ -974,6 +974,3 @@ lint_uses_power_alignment = repr(C) does not follow the power alignment rule. Th
|
|||
|
||||
lint_variant_size_differences =
|
||||
enum variant is more than three times larger ({$largest} bytes) than the next largest
|
||||
|
||||
lint_wasm_c_abi =
|
||||
older versions of the `wasm-bindgen` crate will be incompatible with future versions of Rust; please update to `wasm-bindgen` v0.2.88
|
||||
|
|
|
@ -430,7 +430,6 @@ pub(super) fn decorate_lint(
|
|||
BuiltinLintDiag::UnusedCrateDependency { extern_crate, local_crate } => {
|
||||
lints::UnusedCrateDependency { extern_crate, local_crate }.decorate_lint(diag)
|
||||
}
|
||||
BuiltinLintDiag::WasmCAbi => lints::WasmCAbi.decorate_lint(diag),
|
||||
BuiltinLintDiag::IllFormedAttributeInput { suggestions } => {
|
||||
lints::IllFormedAttributeInput {
|
||||
num_suggestions: suggestions.len(),
|
||||
|
|
|
@ -2553,10 +2553,6 @@ pub(crate) struct UnusedCrateDependency {
|
|||
pub local_crate: Symbol,
|
||||
}
|
||||
|
||||
#[derive(LintDiagnostic)]
|
||||
#[diag(lint_wasm_c_abi)]
|
||||
pub(crate) struct WasmCAbi;
|
||||
|
||||
#[derive(LintDiagnostic)]
|
||||
#[diag(lint_ill_formed_attribute_input)]
|
||||
pub(crate) struct IllFormedAttributeInput {
|
||||
|
|
|
@ -144,7 +144,6 @@ declare_lint_pass! {
|
|||
UNUSED_VARIABLES,
|
||||
USELESS_DEPRECATED,
|
||||
WARNINGS,
|
||||
WASM_C_ABI,
|
||||
// tidy-alphabetical-end
|
||||
]
|
||||
}
|
||||
|
@ -4681,44 +4680,6 @@ declare_lint! {
|
|||
};
|
||||
}
|
||||
|
||||
declare_lint! {
|
||||
/// The `wasm_c_abi` lint detects crate dependencies that are incompatible
|
||||
/// with future versions of Rust that will emit spec-compliant C ABI.
|
||||
///
|
||||
/// ### Example
|
||||
///
|
||||
/// ```rust,ignore (needs extern crate)
|
||||
/// #![deny(wasm_c_abi)]
|
||||
/// ```
|
||||
///
|
||||
/// This will produce:
|
||||
///
|
||||
/// ```text
|
||||
/// error: the following packages contain code that will be rejected by a future version of Rust: wasm-bindgen v0.2.87
|
||||
/// |
|
||||
/// note: the lint level is defined here
|
||||
/// --> src/lib.rs:1:9
|
||||
/// |
|
||||
/// 1 | #![deny(wasm_c_abi)]
|
||||
/// | ^^^^^^^^^^
|
||||
/// ```
|
||||
///
|
||||
/// ### Explanation
|
||||
///
|
||||
/// Rust has historically emitted non-spec-compliant C ABI. This has caused
|
||||
/// incompatibilities between other compilers and Wasm targets. In a future
|
||||
/// version of Rust this will be fixed and therefore dependencies relying
|
||||
/// on the non-spec-compliant C ABI will stop functioning.
|
||||
pub WASM_C_ABI,
|
||||
Deny,
|
||||
"detects dependencies that are incompatible with the Wasm C ABI",
|
||||
@future_incompatible = FutureIncompatibleInfo {
|
||||
reason: FutureIncompatibilityReason::FutureReleaseErrorReportInDeps,
|
||||
reference: "issue #71871 <https://github.com/rust-lang/rust/issues/71871>",
|
||||
};
|
||||
crate_level_only
|
||||
}
|
||||
|
||||
declare_lint! {
|
||||
/// The `uncovered_param_in_projection` lint detects a violation of one of Rust's orphan rules for
|
||||
/// foreign trait implementations that concerns the use of type parameters inside trait associated
|
||||
|
|
|
@ -795,7 +795,6 @@ pub enum BuiltinLintDiag {
|
|||
extern_crate: Symbol,
|
||||
local_crate: Symbol,
|
||||
},
|
||||
WasmCAbi,
|
||||
IllFormedAttributeInput {
|
||||
suggestions: Vec<String>,
|
||||
},
|
||||
|
|
|
@ -290,6 +290,9 @@ metadata_unsupported_abi =
|
|||
metadata_unsupported_abi_i686 =
|
||||
ABI not supported by `#[link(kind = "raw-dylib")]` on i686
|
||||
|
||||
metadata_wasm_c_abi =
|
||||
older versions of the `wasm-bindgen` crate are incompatible with current versions of Rust; please update to `wasm-bindgen` v0.2.88
|
||||
|
||||
metadata_wasm_import_form =
|
||||
wasm import module must be of the form `wasm_import_module = "string"`
|
||||
|
||||
|
|
|
@ -1076,12 +1076,7 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> {
|
|||
// Make a point span rather than covering the whole file
|
||||
let span = krate.spans.inner_span.shrink_to_lo();
|
||||
|
||||
self.sess.psess.buffer_lint(
|
||||
lint::builtin::WASM_C_ABI,
|
||||
span,
|
||||
ast::CRATE_NODE_ID,
|
||||
BuiltinLintDiag::WasmCAbi,
|
||||
);
|
||||
self.sess.dcx().emit_err(errors::WasmCAbi { span });
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -732,3 +732,10 @@ pub struct ImportNameTypeRaw {
|
|||
#[primary_span]
|
||||
pub span: Span,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(metadata_wasm_c_abi)]
|
||||
pub(crate) struct WasmCAbi {
|
||||
#[primary_span]
|
||||
pub span: Span,
|
||||
}
|
||||
|
|
28
tests/ui/wasm/wasm-bindgen-broken-error.rs
Normal file
28
tests/ui/wasm/wasm-bindgen-broken-error.rs
Normal file
|
@ -0,0 +1,28 @@
|
|||
//@ only-wasm32
|
||||
//@ revisions: v0_1_0 v0_2_87 v0_2_88 v0_3_0 v1_0_0
|
||||
//@[v0_1_0] check-fail
|
||||
//@[v0_1_0] rustc-env:CARGO_PKG_VERSION_MAJOR=0
|
||||
//@[v0_1_0] rustc-env:CARGO_PKG_VERSION_MINOR=1
|
||||
//@[v0_1_0] rustc-env:CARGO_PKG_VERSION_PATCH=0
|
||||
//@[v0_2_87] check-fail
|
||||
//@[v0_2_87] rustc-env:CARGO_PKG_VERSION_MAJOR=0
|
||||
//@[v0_2_87] rustc-env:CARGO_PKG_VERSION_MINOR=2
|
||||
//@[v0_2_87] rustc-env:CARGO_PKG_VERSION_PATCH=87
|
||||
//@[v0_2_88] check-pass
|
||||
//@[v0_2_88] rustc-env:CARGO_PKG_VERSION_MAJOR=0
|
||||
//@[v0_2_88] rustc-env:CARGO_PKG_VERSION_MINOR=2
|
||||
//@[v0_2_88] rustc-env:CARGO_PKG_VERSION_PATCH=88
|
||||
//@[v0_3_0] check-pass
|
||||
//@[v0_3_0] rustc-env:CARGO_PKG_VERSION_MAJOR=0
|
||||
//@[v0_3_0] rustc-env:CARGO_PKG_VERSION_MINOR=3
|
||||
//@[v0_3_0] rustc-env:CARGO_PKG_VERSION_PATCH=0
|
||||
//@[v1_0_0] check-pass
|
||||
//@[v1_0_0] rustc-env:CARGO_PKG_VERSION_MAJOR=1
|
||||
//@[v1_0_0] rustc-env:CARGO_PKG_VERSION_MINOR=0
|
||||
//@[v1_0_0] rustc-env:CARGO_PKG_VERSION_PATCH=0
|
||||
|
||||
#![crate_name = "wasm_bindgen"]
|
||||
//[v0_1_0]~^ ERROR: older versions of the `wasm-bindgen` crate
|
||||
//[v0_2_87]~^^ ERROR: older versions of the `wasm-bindgen` crate
|
||||
|
||||
fn main() {}
|
8
tests/ui/wasm/wasm-bindgen-broken-error.v0_1_0.stderr
Normal file
8
tests/ui/wasm/wasm-bindgen-broken-error.v0_1_0.stderr
Normal file
|
@ -0,0 +1,8 @@
|
|||
error: older versions of the `wasm-bindgen` crate are incompatible with current versions of Rust; please update to `wasm-bindgen` v0.2.88
|
||||
--> $DIR/wasm-bindgen-broken-error.rs:24:1
|
||||
|
|
||||
LL | #![crate_name = "wasm_bindgen"]
|
||||
| ^
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
8
tests/ui/wasm/wasm-bindgen-broken-error.v0_2_87.stderr
Normal file
8
tests/ui/wasm/wasm-bindgen-broken-error.v0_2_87.stderr
Normal file
|
@ -0,0 +1,8 @@
|
|||
error: older versions of the `wasm-bindgen` crate are incompatible with current versions of Rust; please update to `wasm-bindgen` v0.2.88
|
||||
--> $DIR/wasm-bindgen-broken-error.rs:24:1
|
||||
|
|
||||
LL | #![crate_name = "wasm_bindgen"]
|
||||
| ^
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue