diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2015-06-16 08:19:25 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2015-06-16 08:19:25 +0200 |
commit | 521216e0a696fa698c88fc1e18958c82626873cc (patch) | |
tree | dd95f00470fc1f9bbc3d1ec2f0bf3c9314f8e166 /odb/validator.cxx | |
parent | e269daa6cd5e88bc7ada0e148b052aabd65044d8 (diff) |
Implement support for nested members in inverse pragma
Diffstat (limited to 'odb/validator.cxx')
-rw-r--r-- | odb/validator.cxx | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/odb/validator.cxx b/odb/validator.cxx index 071da16..561d348 100644 --- a/odb/validator.cxx +++ b/odb/validator.cxx @@ -1192,8 +1192,8 @@ namespace // Inverse pointer must be deleted before the direct side. // - if (semantics::data_member* im = inverse (m)) - check_strict (m, *im, "inverse object pointer", "direct pointer"); + if (data_member_path* imp = inverse (m)) + check_strict (m, *imp, "inverse object pointer", "direct pointer"); } virtual void @@ -1209,8 +1209,8 @@ namespace // Inverse pointer must be deleted before the direct side. // - if (semantics::data_member* im = inverse (m, "value")) - check_strict (m, *im, "inverse object pointer", "direct pointer"); + if (data_member_path* imp = inverse (m, "value")) + check_strict (m, *imp, "inverse object pointer", "direct pointer"); } } @@ -1246,14 +1246,13 @@ namespace void check_strict (D& dep, P& pre, char const* dname, char const* pname) { - unsigned long long dv (deleted (dep)); - unsigned long long pv (deleted (pre)); + location_t dl, pl; + unsigned long long dv (deleted (dep, &dl)); + unsigned long long pv (deleted (pre, &pl)); if (pv == 0) // Prerequisite never deleted. return; - location_t pl (pre.template get<location_t> ("deleted-location")); - if (dv == 0) // Dependent never deleted. { location dl (dep.location ()); @@ -1265,8 +1264,6 @@ namespace } else if (pv > dv) // Prerequisite deleted before dependent. { - location_t dl (dep.template get<location_t> ("deleted-location")); - error (dl) << dname << " is deleted after " << pname << endl; info (pl) << pname << " deletion version is specified here" << endl; |