diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-02-18 10:46:13 +0100 |
---|---|---|
committer | Andreas Stöckel <andreas@somweyr.de> | 2015-02-18 10:46:13 +0100 |
commit | d76cf800ea9a61ff3860636707558802c00da401 (patch) | |
tree | 482514c1f801347ad2267551f9fe3e50aad8678d /src/core/parser/ParserScope.cpp | |
parent | 493acd119d730207524cd69fa25868c978bdf0f9 (diff) |
Implemented automatic validation of RootNode instances in ParserScope
Diffstat (limited to 'src/core/parser/ParserScope.cpp')
-rw-r--r-- | src/core/parser/ParserScope.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/core/parser/ParserScope.cpp b/src/core/parser/ParserScope.cpp index b0a4945..dabb03c 100644 --- a/src/core/parser/ParserScope.cpp +++ b/src/core/parser/ParserScope.cpp @@ -216,7 +216,7 @@ void ParserScope::push(Handle<Node> node) nodes.push_back(node); } -void ParserScope::pop() +void ParserScope::pop(Logger &logger) { // Make sure pop is not called without an element on the stack const size_t currentDepth = nodes.size(); @@ -235,10 +235,14 @@ void ParserScope::pop() flags.resize(newLen); // Whenever a RootNode is popped from the stack, we have to perform deferred - // resolution -- however, postpone issuing error messages - if (nodes.back()->isa(&RttiTypes::RootNode)) { - Logger logger; + // resolution and validate the subtree + Rooted<Node> node = nodes.back(); + if (node->isa(&RttiTypes::RootNode)) { + // Perform pending resolutions -- do not issue errors now performDeferredResolution(logger, true); + + // Perform validation of the subtree. + node->validate(logger); } // Remove the element from the stack |