summaryrefslogtreecommitdiff
path: root/src/core/parser
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/parser')
-rw-r--r--src/core/parser/ParserScope.cpp9
-rw-r--r--src/core/parser/ParserScope.hpp7
2 files changed, 11 insertions, 5 deletions
diff --git a/src/core/parser/ParserScope.cpp b/src/core/parser/ParserScope.cpp
index 4f44a96..1937697 100644
--- a/src/core/parser/ParserScope.cpp
+++ b/src/core/parser/ParserScope.cpp
@@ -90,7 +90,10 @@ Rooted<Node> ParserScopeBase::select(RttiSet types, int maxDepth)
return nodes[i];
}
}
- return nullptr;
+ throw LoggableException{
+ std::string(
+ "Expected be inside an element of one of the internal types ") +
+ Utils::join(types, "\", \"", "\"", "\"")};
}
/* Class DeferredResolution */
@@ -352,9 +355,9 @@ bool ParserScope::resolveValue(Variant &data, Handle<Type> type,
return Type::MagicCallbackResult::NOT_FOUND;
}
-
// Check whether the inner type of the constant is correct
- Type::MagicCallbackResult res = Type::MagicCallbackResult::FOUND_VALID;
+ Type::MagicCallbackResult res =
+ Type::MagicCallbackResult::FOUND_VALID;
Rooted<Type> constantType = constant->getType();
if (!constantType->checkIsa(innerType)) {
logger.error(std::string("Expected value of type \"") +
diff --git a/src/core/parser/ParserScope.hpp b/src/core/parser/ParserScope.hpp
index 057d918..dc1b1bf 100644
--- a/src/core/parser/ParserScope.hpp
+++ b/src/core/parser/ParserScope.hpp
@@ -145,22 +145,25 @@ public:
/**
* Ascends in the stack starting with the leaf node, returns the first node
- * that matches the type given in the RttiSet or nullptr if none matches.
+ * that matches the type given in the RttiSet. Throws an exception if no
+ * node matches.
*
* @param types is a set of Rtti types for which should be searched in the
* stack.
* @param maxDepth is the maximum number of stack entries the selection
* function may ascend. A negative value indicates no limitation.
+ * @return the matching node.
*/
Rooted<Node> select(RttiSet types, int maxDepth = -1);
/**
* Ascends in the stack starting with the leaf node, returns the first node
- * that matches the given type or nullptr if none matches.
+ * that matches the given type. Throws an exception if no node matches.
*
* @tparam T is the type that should be searched in the stack.
* @param maxDepth is the maximum number of stack entries the selection
* function may ascend. A negative value indicates no limitation.
+ * @return the matching node.
*/
template <class T>
Rooted<T> select(int maxDepth = -1)