diff --git a/unittests/compiled_tests.cpp b/unittests/compiled_tests.cpp index c856e9a..9e344cc 100644 --- a/unittests/compiled_tests.cpp +++ b/unittests/compiled_tests.cpp @@ -743,3 +743,37 @@ TEST_CASE("Test Derived->Base with non-polymorphic classes") chai.add(chaiscript::fun(&myfunction), "myfunction"); CHECK(chai.eval("myfunction(d)") == 2); } + + +struct TestCppVariableScope +{ + void print() + { + std::cout << "Printed" << std::endl; + } +}; + +TEST_CASE("Variable Scope When Calling From C++") +{ + chaiscript::ChaiScript chai; + chai.add(chaiscript::user_type(), "Test"); + chai.add(chaiscript::constructor(), "Test"); + chai.add(chaiscript::fun(&TestCppVariableScope::print), "print"); + chai.eval(R"(var t := Test(); + + def func() + { + t.print(); + } + + )"); + + CHECK_THROWS(chai.eval("func()")); + + chai.eval("dump_object(t)"); + + auto func = chai.eval>("func"); + CHECK_THROWS(func()); +} + +