aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-03-16 17:30:38 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-03-16 17:30:38 +0200
commit82eff8250e7e0692fddb0a60d16332039b10a5a2 (patch)
tree39d80087e77f8c2838962b02f6918d36d3c1cf57
parent5029f8665190879285787a9dcdaf5f997cadd2e2 (diff)
Use resolve_element() instead of _member()
Since the element may itself derive the type from its substitution group root.
-rw-r--r--xsd-frontend/parser.cxx2
-rw-r--r--xsd-frontend/semantic-graph/elements.hxx7
2 files changed, 8 insertions, 1 deletions
diff --git a/xsd-frontend/parser.cxx b/xsd-frontend/parser.cxx
index 6a37475..32e6cb1 100644
--- a/xsd-frontend/parser.cxx
+++ b/xsd-frontend/parser.cxx
@@ -421,7 +421,7 @@ namespace XSDFrontend
//
if (!e.typed_p ())
{
- resolve_member (root); // Make sure the type is resolved.
+ resolve_element (root); // Make sure the type is resolved.
s_.new_edge<Belongs> (e, root.type ());
}
}
diff --git a/xsd-frontend/semantic-graph/elements.hxx b/xsd-frontend/semantic-graph/elements.hxx
index 98fb180..d295a17 100644
--- a/xsd-frontend/semantic-graph/elements.hxx
+++ b/xsd-frontend/semantic-graph/elements.hxx
@@ -10,6 +10,7 @@
#include <list>
#include <vector>
#include <iosfwd>
+#include <cstddef> // std::size_t
#include <utility> // std::pair
#include <cstdlib> // abort
#include <cassert>
@@ -342,6 +343,12 @@ namespace XSDFrontend
return names_.end ();
}
+ std::size_t
+ names_size () const
+ {
+ return names_.size ();
+ }
+
virtual NamesIteratorPair
find (Name const& name) const
{