diff --git a/testdata/scad/features/function-recursion-tests.scad b/testdata/scad/features/function-recursion-tests.scad new file mode 100644 index 00000000..7fc7c2b1 --- /dev/null +++ b/testdata/scad/features/function-recursion-tests.scad @@ -0,0 +1,12 @@ +function f() = f() + f(); +function g() = g(g()); + +module m(x) { + cube(x); +} + +echo(f()); + +m(g()); + +translate([20, 20, 0]) m(10); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7a14a989..bfe15300 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -805,6 +805,7 @@ file(GLOB EXAMPLE_FILES ${CMAKE_SOURCE_DIR}/../examples/*.scad) list(APPEND ECHO_FILES ${FUNCTION_FILES} ${CMAKE_SOURCE_DIR}/../testdata/scad/features/for-tests.scad + ${CMAKE_SOURCE_DIR}/../testdata/scad/features/function-recursion-tests.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/echo-tests.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/escape-test.scad ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/parser-tests.scad diff --git a/tests/regression/cgalpngtest/function-recursion-tests-expected.png b/tests/regression/cgalpngtest/function-recursion-tests-expected.png new file mode 100644 index 00000000..4da66bc6 Binary files /dev/null and b/tests/regression/cgalpngtest/function-recursion-tests-expected.png differ diff --git a/tests/regression/dumptest/function-recursion-tests-expected.csg b/tests/regression/dumptest/function-recursion-tests-expected.csg new file mode 100644 index 00000000..bb218417 --- /dev/null +++ b/tests/regression/dumptest/function-recursion-tests-expected.csg @@ -0,0 +1,7 @@ +group() { + multmatrix([[1, 0, 0, 20], [0, 1, 0, 20], [0, 0, 1, 0], [0, 0, 0, 1]]) { + group() { + cube(size = [10, 10, 10], center = false); + } + } +} diff --git a/tests/regression/echotest/function-recursion-tests-expected.echo b/tests/regression/echotest/function-recursion-tests-expected.echo new file mode 100644 index 00000000..0c81f8e3 --- /dev/null +++ b/tests/regression/echotest/function-recursion-tests-expected.echo @@ -0,0 +1,4 @@ +ERROR: Recursion detected calling function 'f' +ERROR: Function recursion caught while instantiating module 'echo' +ERROR: Recursion detected calling function 'g' +ERROR: Function recursion caught while instantiating module 'm' diff --git a/tests/regression/echotest/recursion-tests-expected.echo b/tests/regression/echotest/recursion-tests-expected.echo index e5c99b1e..c3bce9c0 100644 --- a/tests/regression/echotest/recursion-tests-expected.echo +++ b/tests/regression/echotest/recursion-tests-expected.echo @@ -1,2 +1,2 @@ ERROR: Recursion detected calling function 'crash' -ECHO: undef +ERROR: Function recursion caught while instantiating module 'echo' diff --git a/tests/regression/opencsgtest/function-recursion-tests-expected.png b/tests/regression/opencsgtest/function-recursion-tests-expected.png new file mode 100644 index 00000000..11be4adc Binary files /dev/null and b/tests/regression/opencsgtest/function-recursion-tests-expected.png differ diff --git a/tests/regression/throwntogethertest/function-recursion-tests-expected.png b/tests/regression/throwntogethertest/function-recursion-tests-expected.png new file mode 100644 index 00000000..11be4adc Binary files /dev/null and b/tests/regression/throwntogethertest/function-recursion-tests-expected.png differ