From de572db0bc3333c6faacd0e39f059170df720293 Mon Sep 17 00:00:00 2001 From: rusefi Date: Thu, 10 Sep 2020 21:36:37 -0400 Subject: [PATCH] sync with reality? --- firmware/controllers/system_fsio.txt | 2 +- .../com/fathzer/soft/javaluator/AbstractEvaluator.java | 10 +++++++++- .../com/fathzer/soft/javaluator/DoubleEvaluator.java | 5 +++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/firmware/controllers/system_fsio.txt b/firmware/controllers/system_fsio.txt index 87a15b164f..a8ed1259f5 100644 --- a/firmware/controllers/system_fsio.txt +++ b/firmware/controllers/system_fsio.txt @@ -53,4 +53,4 @@ STARTER_RELAY_LOGIC=rpm < cranking_rpm BOOST_CONTROLLER=fsio_table (3, rpm, map) / 100 -ANALOG_CONDITION=if(fsio_input (0) > 20, 0, 10) +ANALOG_CONDITION=if(fsio_analog_input (0) > 20, 0, 10) diff --git a/java_console/models/src/main/java/com/fathzer/soft/javaluator/AbstractEvaluator.java b/java_console/models/src/main/java/com/fathzer/soft/javaluator/AbstractEvaluator.java index 91453c3ffa..b95c038086 100644 --- a/java_console/models/src/main/java/com/fathzer/soft/javaluator/AbstractEvaluator.java +++ b/java_console/models/src/main/java/com/fathzer/soft/javaluator/AbstractEvaluator.java @@ -1,6 +1,8 @@ package com.fathzer.soft.javaluator; import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; /** An abstract evaluator, able to evaluate infix expressions. *
Some standard evaluators are included in the library, you can define your own by subclassing this class. @@ -184,7 +186,13 @@ public abstract class AbstractEvaluator { System.out.println("doFunction " + function + " " + argCount); if (function.getMinimumArgumentCount()>argCount || function.getMaximumArgumentCount() a = getArguments(values, argCount); + Iterable iterable = () -> a; + + List actualList = (List) StreamSupport + .stream(iterable.spliterator(), false) + .collect(Collectors.toList()); + throw new IllegalArgumentException("Invalid argument count for "+function.getName() + " while " + argCount + ": " + actualList); } values.push(evaluate(function, getArguments(values, argCount), evaluationContext)); } diff --git a/java_console/models/src/main/java/com/fathzer/soft/javaluator/DoubleEvaluator.java b/java_console/models/src/main/java/com/fathzer/soft/javaluator/DoubleEvaluator.java index f5df2a1f1a..173f57898a 100644 --- a/java_console/models/src/main/java/com/fathzer/soft/javaluator/DoubleEvaluator.java +++ b/java_console/models/src/main/java/com/fathzer/soft/javaluator/DoubleEvaluator.java @@ -245,6 +245,11 @@ public class DoubleEvaluator extends AbstractEvaluator { ParsePosition p = new ParsePosition(0); Number result = FORMATTER.get().parse(literal, p); if (p.getIndex() == 0 || p.getIndex() != literal.length()) { + /** + * We are here if function is not know + * TODO: shall we throw exception? + */ + System.err.println("Not known " + literal); return 6666666.0; // let's return this magic in case of any function call // throw new IllegalArgumentException(literal + " is not a number"); }