Added chicken and egg recursion detection
This commit is contained in:
@@ -4,7 +4,6 @@ import logging
|
||||
import core.ast.nodes
|
||||
from core.ast.nodes import CallNodeConcept, GenericNodeConcept
|
||||
from core.ast.visitors import UnreferencedNamesVisitor
|
||||
|
||||
from core.builtin_concepts import BuiltinConcepts
|
||||
|
||||
|
||||
@@ -100,11 +99,22 @@ def expect_one(context, return_values, logger=None):
|
||||
return_values[0],
|
||||
parents=return_values)
|
||||
else:
|
||||
return sheerka.ret(
|
||||
context.who,
|
||||
False,
|
||||
sheerka.new(BuiltinConcepts.TOO_MANY_ERRORS, body=return_values),
|
||||
parents=return_values)
|
||||
# test if only one evaluator in error
|
||||
from evaluators.OneErrorEvaluator import OneErrorEvaluator
|
||||
one_error_evaluator = OneErrorEvaluator()
|
||||
reduce_requested = sheerka.ret(context.who, True, sheerka.new(BuiltinConcepts.REDUCE_REQUESTED))
|
||||
if one_error_evaluator.matches(context, return_values + [reduce_requested]):
|
||||
return sheerka.ret(
|
||||
context.who,
|
||||
False,
|
||||
one_error_evaluator.eval(context, return_values).body,
|
||||
parents=return_values)
|
||||
else:
|
||||
return sheerka.ret(
|
||||
context.who,
|
||||
False,
|
||||
sheerka.new(BuiltinConcepts.TOO_MANY_ERRORS, body=return_values),
|
||||
parents=return_values)
|
||||
|
||||
|
||||
def get_names(sheerka, concept_node):
|
||||
@@ -210,5 +220,3 @@ def _extract_predicates(sheerka, node, variables_to_include, variables_to_exclud
|
||||
predicates.append(res)
|
||||
|
||||
return predicates
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user