Add wasm_c_abi
future-incompat
lint
This commit is contained in:
parent
c5b571310d
commit
873a0f264e
3 changed files with 82 additions and 1 deletions
|
@ -281,6 +281,8 @@ 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 will be incompatible with future 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"`
|
||||
|
||||
|
|
|
@ -31,8 +31,9 @@ use proc_macro::bridge::client::ProcMacro;
|
|||
use std::error::Error;
|
||||
use std::ops::Fn;
|
||||
use std::path::Path;
|
||||
use std::str::FromStr;
|
||||
use std::time::Duration;
|
||||
use std::{cmp, iter};
|
||||
use std::{cmp, env, iter};
|
||||
|
||||
/// The backend's way to give the crate store access to the metadata in a library.
|
||||
/// Note that it returns the raw metadata bytes stored in the library file, whether
|
||||
|
@ -985,6 +986,44 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> {
|
|||
}
|
||||
}
|
||||
|
||||
fn report_future_incompatible_deps(&self, krate: &ast::Crate) {
|
||||
let name = self.tcx.crate_name(LOCAL_CRATE);
|
||||
|
||||
if name.as_str() == "wasm_bindgen" {
|
||||
let major = env::var("CARGO_PKG_VERSION_MAJOR")
|
||||
.ok()
|
||||
.and_then(|major| u64::from_str(&major).ok());
|
||||
let minor = env::var("CARGO_PKG_VERSION_MINOR")
|
||||
.ok()
|
||||
.and_then(|minor| u64::from_str(&minor).ok());
|
||||
let patch = env::var("CARGO_PKG_VERSION_PATCH")
|
||||
.ok()
|
||||
.and_then(|patch| u64::from_str(&patch).ok());
|
||||
|
||||
match (major, minor, patch) {
|
||||
// v1 or bigger is valid.
|
||||
(Some(1..), _, _) => return,
|
||||
// v0.3 or bigger is valid.
|
||||
(Some(0), Some(3..), _) => return,
|
||||
// v0.2.88 or bigger is valid.
|
||||
(Some(0), Some(2), Some(88..)) => return,
|
||||
// Not using Cargo.
|
||||
(None, None, None) => return,
|
||||
_ => (),
|
||||
}
|
||||
|
||||
// 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,
|
||||
crate::fluent_generated::metadata_wasm_c_abi,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn postprocess(&mut self, krate: &ast::Crate) {
|
||||
self.inject_forced_externs();
|
||||
self.inject_profiler_runtime(krate);
|
||||
|
@ -992,6 +1031,7 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> {
|
|||
self.inject_panic_runtime(krate);
|
||||
|
||||
self.report_unused_deps(krate);
|
||||
self.report_future_incompatible_deps(krate);
|
||||
|
||||
info!("{:?}", CrateDump(self.cstore));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue