summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/resource/ResourceManager.cpp8
-rw-r--r--src/plugins/xml/XmlParser.cpp3
2 files changed, 8 insertions, 3 deletions
diff --git a/src/core/resource/ResourceManager.cpp b/src/core/resource/ResourceManager.cpp
index 11d01a7..c7a4104 100644
--- a/src/core/resource/ResourceManager.cpp
+++ b/src/core/resource/ResourceManager.cpp
@@ -103,6 +103,14 @@ Rooted<Node> ResourceManager::parse(Registry &registry, ParserContext &ctx,
ParserScope scope; // New empty parser scope instance
ParserContext childCtx = ctx.clone(scope, sourceId);
node = req.getParser()->parse(reader, childCtx);
+
+ // Perform all deferred resolutions
+ scope.performDeferredResolution(ctx.getLogger());
+
+ // Validate the parsed node
+ if (node != nullptr) {
+ node->validate(ctx.getLogger());
+ }
break;
}
case ParseMode::INCLUDE: {
diff --git a/src/plugins/xml/XmlParser.cpp b/src/plugins/xml/XmlParser.cpp
index 5ab0c90..3831b3d 100644
--- a/src/plugins/xml/XmlParser.cpp
+++ b/src/plugins/xml/XmlParser.cpp
@@ -62,9 +62,6 @@ public:
void end() override
{
- scope().performDeferredResolution(logger());
- // TODO: Automatically call validate in "pop"?
- scope().getLeaf()->validate(logger());
scope().pop();
}