diff --git a/src/som/compiler/NumeralParser.java b/src/som/compiler/NumeralParser.java index 48d922296..0dce74692 100644 --- a/src/som/compiler/NumeralParser.java +++ b/src/som/compiler/NumeralParser.java @@ -5,6 +5,8 @@ import java.math.BigInteger; +import som.VM; + public class NumeralParser { @@ -88,7 +90,13 @@ private long calculateNumberWithRadixLong() { v = c - 'A' + 10 /* A has value 10 */; } - result = Math.addExact(result, (long) (Math.pow(r, length - i - 1) * v)); + try { + result = Math.addExact(result, (long) (Math.pow(r, length - i - 1) * v)); + } catch (ArithmeticException e) { + // TODO: need to overflow into BigInteger + VM.errorPrintln("Warning: Parsed Integer literal which did not fit into long. " + lexer.getCurrentLineNumber() + ":" + lexer.getCurrentColumn()); + return result; + } } return result; }