diff --git a/src/plugins/eva/domains/apron/apron_domain.ml b/src/plugins/eva/domains/apron/apron_domain.ml index 691980d0ed5286e0fc9884f70bed6b267281cc28..ec320503fdf6537338066f6f4f02b6c7639838fc 100644 --- a/src/plugins/eva/domains/apron/apron_domain.ml +++ b/src/plugins/eva/domains/apron/apron_domain.ml @@ -428,7 +428,6 @@ module Make (Man : Input) = struct let s = Abstract1.meet man s1 s2 in if Abstract1.is_bottom man s then `Bottom else `Value s - include Domain_builder.No_context include Domain_builder.Complete (struct include D diff --git a/src/plugins/eva/domains/cvalue/cvalue_domain.ml b/src/plugins/eva/domains/cvalue/cvalue_domain.ml index 888a0d0cafe13bb0de1369bcab6b90df71035366..1fd21a94a0c1b556401469c22e177403f5a0e26d 100644 --- a/src/plugins/eva/domains/cvalue/cvalue_domain.ml +++ b/src/plugins/eva/domains/cvalue/cvalue_domain.ml @@ -32,7 +32,10 @@ module State = struct let value_dependencies = Main_values.cval let location_dependencies = Main_locations.ploc - include Domain_builder.No_context + + type context = unit + let context_dependencies = Abstract_context.Leaf (module Unit_context) + let return_context _ = `Value () let log_category = Self.dkey_cvalue_domain diff --git a/src/plugins/eva/domains/domain_builder.ml b/src/plugins/eva/domains/domain_builder.ml index c67308531fe0403624530bc9c2d4b6aa140ebe27..c7324a89dbc5d834c3699f5aeb287ce80a26c297 100644 --- a/src/plugins/eva/domains/domain_builder.ml +++ b/src/plugins/eva/domains/domain_builder.ml @@ -36,6 +36,10 @@ end module type LeafDomain = sig type t + type context = unit + val context_dependencies: context Abstract_context.dependencies + val return_context: t -> context or_bottom + val backward_location: t -> lval -> typ -> 'loc -> 'v -> ('loc * 'v) or_bottom val reduce_further: t -> exp -> 'v -> (exp * 'v) list @@ -66,16 +70,11 @@ module type LeafDomain = sig end +module Complete (Domain: InputDomain) = struct -module No_context = struct type context = unit let context_dependencies = Abstract_context.Leaf (module Unit_context) let return_context _ = `Value () -end - - - -module Complete (Domain: InputDomain) = struct let backward_location _state _lval _typ loc value = `Value (loc, value) let reduce_further _state _expr _value = [] @@ -119,7 +118,6 @@ let simplify_call call = module Make_Minimal - (Context : Abstract_context.Leaf) (Value: Abstract_value.Leaf) (Location: Abstract_location.Leaf) (Domain: Simpler_domains.Minimal) @@ -129,14 +127,11 @@ module Make_Minimal let log_category = Self.register_category ("d-" ^ name) - type context = Context.t type value = Value.t type location = Location.location type state = Domain.t type origin - let return_context _ = `Value Context.top - let context_dependencies = Abstract_context.Leaf (module Context) let value_dependencies = Abstract_value.Leaf (module Value) let location_dependencies = Abstract_location.Leaf (module Location) @@ -181,14 +176,13 @@ end module Complete_Minimal - (Context : Abstract_context.Leaf) (Value: Abstract_value.Leaf) (Location: Abstract_location.Leaf) (Domain: Simpler_domains.Minimal) = struct module D = struct - include Make_Minimal (Context) (Value) (Location) (Domain) + include Make_Minimal (Value) (Location) (Domain) include (Datatype.Make_with_collections @@ -213,7 +207,6 @@ end module Complete_Minimal_with_datatype - (Context : Abstract_context.Leaf) (Value: Abstract_value.Leaf) (Location: Abstract_location.Leaf) (Domain: Minimal_with_datatype) @@ -221,7 +214,7 @@ module Complete_Minimal_with_datatype module D = struct - include Make_Minimal (Context) (Value) (Location) (Domain) + include Make_Minimal (Value) (Location) (Domain) include (Datatype.With_collections @@ -254,8 +247,6 @@ module Complete_Simple_Cvalue (Domain: Simpler_domains.Simple_Cvalue) type state = Domain.t type origin - include No_context - let value_dependencies = Abstract_value.Leaf (module Main_values.CVal) let location_dependencies = Abstract_location.Leaf (module Main_locations.PLoc) diff --git a/src/plugins/eva/domains/domain_builder.mli b/src/plugins/eva/domains/domain_builder.mli index 568c5509ec260a8d0441588a6b234d36956e6b2b..7f24bb4a8c90a99eab5f99d03b6ccae3dac2c7c2 100644 --- a/src/plugins/eva/domains/domain_builder.mli +++ b/src/plugins/eva/domains/domain_builder.mli @@ -40,6 +40,10 @@ end module type LeafDomain = sig type t + type context = unit + val context_dependencies: context Abstract_context.dependencies + val return_context: t -> context or_bottom + val backward_location: t -> lval -> typ -> 'loc -> 'v -> ('loc * 'v) or_bottom val reduce_further: t -> exp -> 'v -> (exp * 'v) list @@ -69,31 +73,23 @@ module type LeafDomain = sig val key: t Abstract_domain.key end -module No_context : sig - type context = unit - val context_dependencies : context Abstract_context.dependencies - val return_context : 'a -> context Eval.or_bottom -end - (** Automatically builds some functions of an abstract domain. *) module Complete (Domain: InputDomain) : LeafDomain with type t := Domain.t module Complete_Minimal - (Context : Abstract_context.Leaf) (Value: Abstract_value.Leaf) (Location: Abstract_location.Leaf) (Domain: Simpler_domains.Minimal) - : Abstract_domain.Leaf with type context = Context.t + : Abstract_domain.Leaf with type context = unit and type value = Value.t and type location = Location.location and type state = Domain.t module Complete_Minimal_with_datatype - (Context : Abstract_context.Leaf) (Value: Abstract_value.Leaf) (Location: Abstract_location.Leaf) (Domain: Simpler_domains.Minimal_with_datatype) - : Abstract_domain.Leaf with type context = Context.t + : Abstract_domain.Leaf with type context = unit and type value = Value.t and type location = Location.location and type state = Domain.t diff --git a/src/plugins/eva/domains/gauges/gauges_domain.ml b/src/plugins/eva/domains/gauges/gauges_domain.ml index a1e82cd863a374c06b9f42183ddf3ce53785e2e3..4fc078eb9d22f2fe0b19235dae08aa01cae1daee 100644 --- a/src/plugins/eva/domains/gauges/gauges_domain.ml +++ b/src/plugins/eva/domains/gauges/gauges_domain.ml @@ -1125,7 +1125,6 @@ module D : Abstract_domain.Leaf include G include Domain_builder.Complete (struct include G let top = empty end) - include Domain_builder.No_context let log_category = dkey diff --git a/src/plugins/eva/domains/inout_domain.ml b/src/plugins/eva/domains/inout_domain.ml index 728c892b7d474eb4d8c457f6965bfaf815556468..db4680480a4b074883a7880ed930c2a71a9c64b7 100644 --- a/src/plugins/eva/domains/inout_domain.ml +++ b/src/plugins/eva/domains/inout_domain.ml @@ -220,7 +220,6 @@ module Domain = struct end) include Domain_builder.Complete (LatticeInout) - include Domain_builder.No_context let log_category = Self.register_category "d-inout" diff --git a/src/plugins/eva/domains/multidim/multidim_domain.ml b/src/plugins/eva/domains/multidim/multidim_domain.ml index 92f546a13bf524ac6ef70c9a341f7870fc3c3f24..c34c84acc994dd8348aba9af923a7058a7d03efb 100644 --- a/src/plugins/eva/domains/multidim/multidim_domain.ml +++ b/src/plugins/eva/domains/multidim/multidim_domain.ml @@ -664,7 +664,6 @@ module Domain = struct include DomainLattice include Domain_builder.Complete (DomainLattice) - include Domain_builder.No_context (* Eva Queries *) diff --git a/src/plugins/eva/domains/octagons.ml b/src/plugins/eva/domains/octagons.ml index eab6d98444aee65992d5eee311244f09d283ab68..33be2920a29172dabe0ebf5c32eec98d07df2b46 100644 --- a/src/plugins/eva/domains/octagons.ml +++ b/src/plugins/eva/domains/octagons.ml @@ -1600,7 +1600,6 @@ module Domain = struct include State include Domain_builder.Complete (State) - include Domain_builder.No_context type value = Cvalue.V.t type location = Precise_locs.precise_location diff --git a/src/plugins/eva/domains/offsm_domain.ml b/src/plugins/eva/domains/offsm_domain.ml index 652cca15035b342d3859c95857ec38aab88d87fb..806d306d6f70e73bae0f833f0f429fb9999f4e18 100644 --- a/src/plugins/eva/domains/offsm_domain.ml +++ b/src/plugins/eva/domains/offsm_domain.ml @@ -110,7 +110,6 @@ module D : Abstract_domain.Leaf end) include Domain_builder.Complete (Memory) - include Domain_builder.No_context let log_category = dkey diff --git a/src/plugins/eva/domains/simple_memory.ml b/src/plugins/eva/domains/simple_memory.ml index d0356313438ab57515f33950a74e0d50f9767ddc..d2c81be458b371f7f320c566d0d77ae53d6b2088 100644 --- a/src/plugins/eva/domains/simple_memory.ml +++ b/src/plugins/eva/domains/simple_memory.ml @@ -188,7 +188,6 @@ module Make_Domain (Info: sig val name: string end) (Value: Value) = struct include M include Domain_builder.Complete (M) - include Domain_builder.No_context type state = t type value = Value.t diff --git a/src/plugins/eva/domains/symbolic_locs.ml b/src/plugins/eva/domains/symbolic_locs.ml index 1a5ebf09887036734c48e56822c037a0cfe80b11..0719ce81c897066c3a6302ec334dc68d85ae911a 100644 --- a/src/plugins/eva/domains/symbolic_locs.ml +++ b/src/plugins/eva/domains/symbolic_locs.ml @@ -472,7 +472,6 @@ module D : Abstract_domain.Leaf end) include Domain_builder.Complete (Memory) - include Domain_builder.No_context let log_category = dkey diff --git a/src/plugins/eva/domains/taint_domain.ml b/src/plugins/eva/domains/taint_domain.ml index e0b0d4f3c07f1fd585db4313514983790a8ea1d4..d20a13adf8ab68cf6ef4181c5b0d7bfe835b93a0 100644 --- a/src/plugins/eva/domains/taint_domain.ml +++ b/src/plugins/eva/domains/taint_domain.ml @@ -310,7 +310,6 @@ module Domain = struct end) include Domain_builder.Complete (LatticeTaint) - include Domain_builder.No_context include QueriesTaint diff --git a/src/plugins/eva/domains/traces_domain.ml b/src/plugins/eva/domains/traces_domain.ml index d631c13e3585b5892a04cf0ca55c2284926884a9..53eb03a0032d1c1111ba34594b3f3ea6f61b3aaf 100644 --- a/src/plugins/eva/domains/traces_domain.ml +++ b/src/plugins/eva/domains/traces_domain.ml @@ -1089,7 +1089,6 @@ module D = struct type location = Precise_locs.precise_location type origin - include Domain_builder.No_context let value_dependencies = Main_values.cval let location_dependencies = Main_locations.ploc diff --git a/src/plugins/eva/domains/unit_domain.ml b/src/plugins/eva/domains/unit_domain.ml index 378f0437b3046ae3b56af1dd80f9fc757b15860b..0d05955f1901bb0085d5a7a72dff96f0ee10ca09 100644 --- a/src/plugins/eva/domains/unit_domain.ml +++ b/src/plugins/eva/domains/unit_domain.ml @@ -25,7 +25,6 @@ let log_key = Self.register_category "unit-domain" module Static = struct module D = struct include Datatype.Unit - include Domain_builder.No_context type state = t let name = "unit"