diff --git a/src/codegen/constants.rs b/src/codegen/constants.rs index 133e51325..b38d12f19 100644 --- a/src/codegen/constants.rs +++ b/src/codegen/constants.rs @@ -21,7 +21,7 @@ pub fn generate(env: &Env, root_path: &Path, mod_rs: &mut Vec) { file_saver::save_to_file(path, env.config.make_backup, |w| { general::start_comments(w, &env.config)?; - general::uses(w, env, &imports)?; + general::uses(w, env, &imports, None)?; writeln!(w)?; mod_rs.push("\nmod constants;".into()); diff --git a/src/codegen/enums.rs b/src/codegen/enums.rs index 8dc884aad..b92429037 100644 --- a/src/codegen/enums.rs +++ b/src/codegen/enums.rs @@ -28,7 +28,7 @@ pub fn generate(env: &Env, root_path: &Path, mod_rs: &mut Vec) { let path = root_path.join("enums.rs"); file_saver::save_to_file(path, env.config.make_backup, |w| { general::start_comments(w, &env.config)?; - general::uses(w, env, &env.analysis.enum_imports)?; + general::uses(w, env, &env.analysis.enum_imports, None)?; writeln!(w)?; mod_rs.push("\nmod enums;".into()); diff --git a/src/codegen/flags.rs b/src/codegen/flags.rs index 3aad4b37e..6b7b73ef4 100644 --- a/src/codegen/flags.rs +++ b/src/codegen/flags.rs @@ -25,7 +25,7 @@ pub fn generate(env: &Env, root_path: &Path, mod_rs: &mut Vec) { let path = root_path.join("flags.rs"); file_saver::save_to_file(path, env.config.make_backup, |w| { general::start_comments(w, &env.config)?; - general::uses(w, env, &env.analysis.flags_imports)?; + general::uses(w, env, &env.analysis.flags_imports, None)?; writeln!(w)?; mod_rs.push("\nmod flags;".into()); diff --git a/src/codegen/functions.rs b/src/codegen/functions.rs index bc01b330d..fec4668bb 100644 --- a/src/codegen/functions.rs +++ b/src/codegen/functions.rs @@ -17,7 +17,7 @@ pub fn generate(env: &Env, root_path: &Path, mod_rs: &mut Vec) { let path = root_path.join("functions.rs"); file_saver::save_to_file(path, env.config.make_backup, |w| { general::start_comments(w, &env.config)?; - general::uses(w, env, &functions.imports)?; + general::uses(w, env, &functions.imports, None)?; writeln!(w)?; diff --git a/src/codegen/general.rs b/src/codegen/general.rs index d3db25bdd..274441ff5 100644 --- a/src/codegen/general.rs +++ b/src/codegen/general.rs @@ -65,7 +65,12 @@ pub fn single_version_file(w: &mut dyn Write, conf: &Config, prefix: &str) -> Re ) } -pub fn uses(w: &mut dyn Write, env: &Env, imports: &Imports) -> Result<()> { +pub fn uses( + w: &mut dyn Write, + env: &Env, + imports: &Imports, + outer_version: Option, +) -> Result<()> { writeln!(w)?; for (name, ref scope) in imports.iter() { if !scope.constraints.is_empty() { @@ -80,8 +85,9 @@ pub fn uses(w: &mut dyn Write, env: &Env, imports: &Imports) -> Result<()> { scope.constraints.join(", ") )?; } + let version = Version::if_stricter_than(scope.version, outer_version); - version_condition(w, env, scope.version, false, 0)?; + version_condition(w, env, version, false, 0)?; writeln!(w, "use {};", name)?; } diff --git a/src/codegen/object.rs b/src/codegen/object.rs index 55b3b1fb5..b3fb3353d 100644 --- a/src/codegen/object.rs +++ b/src/codegen/object.rs @@ -20,7 +20,7 @@ pub fn generate( generate_display_trait: bool, ) -> Result<()> { general::start_comments(w, &env.config)?; - general::uses(w, env, &analysis.imports)?; + general::uses(w, env, &analysis.imports, analysis.version)?; general::define_object_type( w, diff --git a/src/codegen/record.rs b/src/codegen/record.rs index e71f33a94..d00a5afdd 100644 --- a/src/codegen/record.rs +++ b/src/codegen/record.rs @@ -10,7 +10,7 @@ pub fn generate(w: &mut dyn Write, env: &Env, analysis: &analysis::record::Info) let type_ = analysis.type_(&env.library); general::start_comments(w, &env.config)?; - general::uses(w, env, &analysis.imports)?; + general::uses(w, env, &analysis.imports, type_.version)?; if analysis.is_boxed { if let Some((ref glib_get_type, _)) = analysis.glib_get_type {