From 7df42d9e82fe935f9941aa20e2d118188e888573 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Mon, 19 Jan 2015 01:25:55 +0100 Subject: XML-Parsing for Typesystem structs works so far --- src/core/parser/Scope.cpp | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) (limited to 'src/core/parser/Scope.cpp') diff --git a/src/core/parser/Scope.cpp b/src/core/parser/Scope.cpp index 6942b9a..01292df 100644 --- a/src/core/parser/Scope.cpp +++ b/src/core/parser/Scope.cpp @@ -119,7 +119,7 @@ Rooted Scope::getLeaf() { return nodes.back(); } bool Scope::resolve(const std::vector &path, const Rtti &type, Logger &logger, ResolutionImposterCallback imposterCallback, ResolutionResultCallback resultCallback, - const SourceLocation &location) + const SourceLocation &location) { if (!resolve(path, type, logger, resultCallback, location)) { resultCallback(imposterCallback(), logger); @@ -168,22 +168,21 @@ bool Scope::performDeferredResolution(Logger &logger) } } - // Output an error message if there are still deferred elements left that - // could not be resolved - if (!deferred.empty()) { - for (const auto &failed : deferred) { - logger.error( - std::string("Could not resolve a reference to \"") + - Utils::join(failed.path, ".") + - std::string("\" of type " + failed.type.name), - failed.location); - } + // We were successful if there are no more deferred resolutions + if (deferred.empty()) { + return true; } - // We were successful if there are no more deferred resolutions - return deferred.empty(); + // Output error messages for all elements for which resolution did not + // succeed. + for (const auto &failed : deferred) { + logger.error(std::string("Could not resolve ") + failed.type.name + std::string(" \"") + + Utils::join(failed.path, ".") + + std::string("\""), + failed.location); + } + deferred.clear(); + return false; } - -void Scope::purgeDeferredResolutions() { deferred.clear(); } } } -- cgit v1.2.3