summaryrefslogtreecommitdiff
path: root/src/core/parser/Scope.cpp
diff options
context:
space:
mode:
authorBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2015-01-20 01:24:17 +0100
committerBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2015-01-20 01:24:17 +0100
commit57a1ea659ae125934c541951113c0c3a38b10971 (patch)
tree8bf6f93a1c4b56cd48777b2f2f80c77466ef61ee /src/core/parser/Scope.cpp
parent20d3e71f26ca884271ed5d372a8459394554c147 (diff)
parent533e1a93c8f636b78f5687dd9c343a81563081a1 (diff)
Merge branch 'master' of somweyr.de:ousia
Diffstat (limited to 'src/core/parser/Scope.cpp')
-rw-r--r--src/core/parser/Scope.cpp29
1 files changed, 14 insertions, 15 deletions
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<Node> Scope::getLeaf() { return nodes.back(); }
bool Scope::resolve(const std::vector<std::string> &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(); }
}
}