@@ -31,8 +31,9 @@ use proc_macro::bridge::client::ProcMacro;
31
31
use std:: error:: Error ;
32
32
use std:: ops:: Fn ;
33
33
use std:: path:: Path ;
34
+ use std:: str:: FromStr ;
34
35
use std:: time:: Duration ;
35
- use std:: { cmp, iter} ;
36
+ use std:: { cmp, env , iter} ;
36
37
37
38
pub struct CStore {
38
39
metadata_loader : Box < MetadataLoaderDyn > ,
@@ -979,13 +980,53 @@ impl<'a, 'tcx> CrateLoader<'a, 'tcx> {
979
980
}
980
981
}
981
982
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
+
982
1022
pub fn postprocess ( & mut self , krate : & ast:: Crate ) {
983
1023
self . inject_forced_externs ( ) ;
984
1024
self . inject_profiler_runtime ( krate) ;
985
1025
self . inject_allocator_crate ( krate) ;
986
1026
self . inject_panic_runtime ( krate) ;
987
1027
988
1028
self . report_unused_deps ( krate) ;
1029
+ self . report_future_incompatible_deps ( krate) ;
989
1030
990
1031
info ! ( "{:?}" , CrateDump ( & self . cstore) ) ;
991
1032
}
0 commit comments