Skip to content

Commit

Permalink
Merge pull request #1229 from sdroege/version-heuristics
Browse files Browse the repository at this point in the history
Remove type version heuristics
  • Loading branch information
sdroege committed Sep 28, 2021
2 parents 2e986b5 + ae88921 commit 4aa58cf
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 62 deletions.
43 changes: 2 additions & 41 deletions src/analysis/info_base.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
use super::{functions::Visibility, imports::Imports, *};
use crate::{config::gobjects::GObject, env::Env, library, version::Version};
use std::cmp;
use super::{imports::Imports, *};
use crate::{library, version::Version};

#[derive(Debug, Default)]
pub struct InfoBase {
Expand Down Expand Up @@ -39,41 +38,3 @@ impl InfoBase {
.collect()
}
}

pub fn versions(
env: &Env,
obj: &GObject,
functions: &[functions::Info],
version: Option<Version>,
deprecated_version: Option<Version>,
) -> (Option<Version>, Option<Version>) {
let version = if obj.version.is_some() {
obj.version
} else {
let fn_version = functions
.iter()
.filter(|f| f.visibility == Visibility::Public)
.map(|f| f.version)
.min()
.unwrap_or(None);
cmp::max(version, fn_version)
};
let version = env.config.filter_version(version);

let fn_deprecated_max = functions
.iter()
.filter(|f| f.visibility == Visibility::Public)
.map(|f| f.deprecated_version)
.max()
.unwrap_or(None);
let fn_deprecated_min = functions
.iter()
.filter(|f| f.visibility == Visibility::Public)
.map(|f| f.deprecated_version)
.min()
.unwrap_or(None);
let deprecated_version =
deprecated_version.or_else(|| fn_deprecated_min.and(fn_deprecated_max));

(version, deprecated_version)
}
18 changes: 4 additions & 14 deletions src/analysis/object.rs
Original file line number Diff line number Diff line change
Expand Up @@ -177,13 +177,8 @@ pub fn class(env: &Env, obj: &GObject, deps: &[library::TypeId]) -> Option<Info>
let builder_properties =
class_builder::analyze(env, &klass.properties, class_tid, obj, &mut imports);

let (version, deprecated_version) = info_base::versions(
env,
obj,
&functions,
klass.version,
klass.deprecated_version,
);
let version = obj.version.or(klass.version);
let deprecated_version = klass.deprecated_version;

let child_properties =
child_properties::analyze(env, obj.child_properties.as_ref(), class_tid, &mut imports);
Expand Down Expand Up @@ -317,13 +312,8 @@ pub fn interface(env: &Env, obj: &GObject, deps: &[library::TypeId]) -> Option<I
deps,
);

let (version, deprecated_version) = info_base::versions(
env,
obj,
&functions,
iface.version,
iface.deprecated_version,
);
let version = obj.version.or(iface.version);
let deprecated_version = iface.deprecated_version;

if obj.concurrency == library::Concurrency::SendUnique {
imports.add("glib::ObjectExt");
Expand Down
9 changes: 2 additions & 7 deletions src/analysis/record.rs
Original file line number Diff line number Diff line change
Expand Up @@ -94,13 +94,8 @@ pub fn new(env: &Env, obj: &GObject) -> Option<Info> {
);
let specials = special_functions::extract(&mut functions, type_, obj);

let (version, deprecated_version) = info_base::versions(
env,
obj,
&functions,
record.version,
record.deprecated_version,
);
let version = obj.version.or(record.version);
let deprecated_version = record.deprecated_version;

let is_shared = specials.has_trait(special_functions::Type::Ref)
&& specials.has_trait(special_functions::Type::Unref);
Expand Down

0 comments on commit 4aa58cf

Please sign in to comment.