diff options
Diffstat (limited to 'test/example/cpp-unit.cpp')
-rw-r--r-- | test/example/cpp-unit.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/test/example/cpp-unit.cpp b/test/example/cpp-unit.cpp index 9c95bb31c..41096a43a 100644 --- a/test/example/cpp-unit.cpp +++ b/test/example/cpp-unit.cpp @@ -599,12 +599,26 @@ void test_cost() { void test_effects() { PassOptions options; Module module; + // Unreachables trap. Unreachable unreachable; assert_equal(EffectAnalyzer(options, module, &unreachable).trap, true); + // Nops... do not. Nop nop; assert_equal(EffectAnalyzer(options, module, &nop).trap, false); + + // ArrayCopy can trap, reads arrays, and writes arrays (but not structs). + { + ArrayCopy arrayCopy(module.allocator); + EffectAnalyzer effects(options, module); + effects.visit(&arrayCopy); + assert_equal(effects.trap, true); + assert_equal(effects.readsArray, true); + assert_equal(effects.writesArray, true); + assert_equal(effects.readsStruct, false); + assert_equal(effects.writesStruct, false); + } } void test_literals() { |