From ba3469bf364cf7c8ba3b067349b6219a1d9eb8a6 Mon Sep 17 00:00:00 2001 From: Joachim Klein Date: Fri, 13 Oct 2017 15:41:18 +0200 Subject: [PATCH] ExpressionConstant.evaluate(): cast BigRational constants to type If we evaluate() a BigRational constant, convert to corresponding Java data type (might lose precision) --- prism/src/parser/ast/ExpressionConstant.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/prism/src/parser/ast/ExpressionConstant.java b/prism/src/parser/ast/ExpressionConstant.java index db8d0be8..8a05a5c4 100644 --- a/prism/src/parser/ast/ExpressionConstant.java +++ b/prism/src/parser/ast/ExpressionConstant.java @@ -82,6 +82,13 @@ public class ExpressionConstant extends Expression Object res = ec.getConstantValue(name); if (res == null) throw new PrismLangException("Could not evaluate constant", this); + + if (res instanceof BigRational) { + // Constants can also be BigRational, cast to appropriate type + // This might lose precision + BigRational r = (BigRational) res; + return getType().castFromBigRational(r); + } return res; }