diff --git a/packages/squiggle-lang/__tests__/Reducer/Reducer_test.res b/packages/squiggle-lang/__tests__/Reducer/Reducer_test.res index 0697d239..2743b51d 100644 --- a/packages/squiggle-lang/__tests__/Reducer/Reducer_test.res +++ b/packages/squiggle-lang/__tests__/Reducer/Reducer_test.res @@ -78,3 +78,33 @@ describe("test exceptions", () => { // "Error(TODO: unhandled rescript exception)", // ) }) + +describe("stacktraces", () => { + test("nested calls", () => { + open Expect + + let error = + Expression.BackCompatible.evaluateString(` + f(x) = { + y = "a" + x + y + } + g = {|x| f(x)} + h(x) = g(x) + h(5) +`) + ->E.R.getError + ->E.O2.toExn("oops") + ->SqError.toStringWithStackTrace + + expect( + error, + )->toBe(`Error: There are function matches for add(), but with different arguments: [add(number, number)]; [add(distribution, number)]; [add(number, distribution)]; [add(distribution, distribution)]; [add(date, duration)]; [add(duration, duration)] +Stack trace: + f at line 4, column 5 + at line 6, column 12 + h at line 7, column 10 + at line 8, column 3 +`) + }) +})