@@ -31,8 +31,9 @@ use proc_macro::bridge::client::ProcMacro;
3131use std:: error:: Error ;
3232use std:: ops:: Fn ;
3333use std:: path:: Path ;
34+ use std:: str:: FromStr ;
3435use std:: time:: Duration ;
35- use std:: { cmp, iter} ;
36+ use std:: { cmp, env , iter} ;
3637
3738pub struct CStore {
3839 metadata_loader : Box < MetadataLoaderDyn > ,
@@ -979,13 +980,53 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> {
979980 }
980981 }
981982
983+ fn report_future_incompatible_deps ( & self , krate : & ast:: Crate ) {
984+ let name = self . tcx . crate_name ( LOCAL_CRATE ) ;
985+
986+ if name. as_str ( ) == "wasm_bindgen" {
987+ if !env:: var ( "CARGO_PKG_VERSION_MAJOR" )
988+ . ok ( )
989+ . and_then ( |major| u64:: from_str ( & major) . ok ( ) )
990+ . is_some_and ( |major| major == 0 )
991+ {
992+ return ;
993+ }
994+ if !env:: var ( "CARGO_PKG_VERSION_MINOR" )
995+ . ok ( )
996+ . and_then ( |minor| u64:: from_str ( & minor) . ok ( ) )
997+ . is_some_and ( |minor| minor <= 2 )
998+ {
999+ return ;
1000+ }
1001+ if !env:: var ( "CARGO_PKG_VERSION_PATCH" )
1002+ . ok ( )
1003+ . and_then ( |patch| u64:: from_str ( & patch) . ok ( ) )
1004+ . is_some_and ( |minor| minor <= 87 )
1005+ {
1006+ return ;
1007+ }
1008+
1009+ // Make a point span rather than covering the whole file
1010+ let span = krate. spans . inner_span . shrink_to_lo ( ) ;
1011+
1012+ self . sess . parse_sess . buffer_lint (
1013+ lint:: builtin:: WASM_C_ABI ,
1014+ span,
1015+ ast:: CRATE_NODE_ID ,
1016+ "older versions of the `wasm-bindgen` crate will be incompatible with future versions of Rust; \
1017+ please update to `wasm-bindgen` v0.2.88". to_string ( ) ,
1018+ ) ;
1019+ }
1020+ }
1021+
9821022 pub fn postprocess ( & mut self , krate : & ast:: Crate ) {
9831023 self . inject_forced_externs ( ) ;
9841024 self . inject_profiler_runtime ( krate) ;
9851025 self . inject_allocator_crate ( krate) ;
9861026 self . inject_panic_runtime ( krate) ;
9871027
9881028 self . report_unused_deps ( krate) ;
1029+ self . report_future_incompatible_deps ( krate) ;
9891030
9901031 info ! ( "{:?}" , CrateDump ( & self . cstore) ) ;
9911032 }
0 commit comments