summaryrefslogtreecommitdiff
path: root/odb/semantics
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-07-17 12:53:58 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-07-17 12:53:58 +0200
commitfa8b674ef4cb32cb92bcc4f3d42bf24b8cf3b7fb (patch)
treefee686936eb4150208e58ee81164931199c79e0e /odb/semantics
parent8f6a9c51bc64226d7c296e4b0172f9e56a7eea3b (diff)
Diagnose "composite type used before definition" situations
Diffstat (limited to 'odb/semantics')
-rw-r--r--odb/semantics/elements.cxx17
-rw-r--r--odb/semantics/elements.hxx3
2 files changed, 20 insertions, 0 deletions
diff --git a/odb/semantics/elements.cxx b/odb/semantics/elements.cxx
index 21e3260..43fb379 100644
--- a/odb/semantics/elements.cxx
+++ b/odb/semantics/elements.cxx
@@ -48,6 +48,23 @@ namespace semantics
//
bool nameable::
+ in_scope (scope_type& s)
+ {
+ for (scope_type* p (&scope ());; p = &p->scope_ ())
+ {
+ //@@ Need to handle namespace extensions.
+ //
+ if (p == &s)
+ return true;
+
+ if (p->global_scope ())
+ break;
+ }
+
+ return false;
+ }
+
+ bool nameable::
anonymous_ () const
{
tree n (tree_node ());
diff --git a/odb/semantics/elements.hxx b/odb/semantics/elements.hxx
index d0156dd..615bb93 100644
--- a/odb/semantics/elements.hxx
+++ b/odb/semantics/elements.hxx
@@ -433,6 +433,9 @@ namespace semantics
return defined_ != 0 ? *defined_ : *named_[0];
}
+ bool
+ in_scope (scope_type&);
+
public:
nameable ()
: defined_ (0)