aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/test
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2018-12-06 10:09:44 +0100
committerGitHub <[email protected]>2018-12-06 10:09:44 +0100
commit32d28de92aea46967b7c0c4d805b453b3a4759e8 (patch)
treedd3c7bab42456c42404e9429c6c85b83a7c52aac /lib/compiler/test
parent8caf018e460ca1efbe0df41aa042cf1d25c62dd3 (diff)
parentb3bd35ccd0004d59e478308df3bc85c351557f3c (diff)
downloadotp-32d28de92aea46967b7c0c4d805b453b3a4759e8.tar.gz
otp-32d28de92aea46967b7c0c4d805b453b3a4759e8.tar.bz2
otp-32d28de92aea46967b7c0c4d805b453b3a4759e8.zip
Merge pull request #2042 from bjorng/bjorn/compiler/stacktrace/OTP-15481
Fix unsafe optimization of stack trace building
Diffstat (limited to 'lib/compiler/test')
-rw-r--r--lib/compiler/test/trycatch_SUITE.erl26
1 files changed, 25 insertions, 1 deletions
diff --git a/lib/compiler/test/trycatch_SUITE.erl b/lib/compiler/test/trycatch_SUITE.erl
index 1b7ef4ddb0..8f9cd9ab1e 100644
--- a/lib/compiler/test/trycatch_SUITE.erl
+++ b/lib/compiler/test/trycatch_SUITE.erl
@@ -1189,7 +1189,8 @@ bad_raise(Expr) ->
test_raise(Expr) ->
test_raise_1(Expr),
test_raise_2(Expr),
- test_raise_3(Expr).
+ test_raise_3(Expr),
+ test_raise_4(Expr).
test_raise_1(Expr) ->
erase(exception),
@@ -1263,5 +1264,28 @@ do_test_raise_3(Expr) ->
erlang:raise(exit, {exception,C,E}, Stk)
end.
+test_raise_4(Expr) ->
+ try
+ do_test_raise_4(Expr)
+ catch
+ exit:{exception,C,E,Stk}:Stk ->
+ try
+ Expr()
+ catch
+ C:E:S ->
+ [StkTop|_] = S,
+ [StkTop|_] = Stk
+ end
+ end.
+
+do_test_raise_4(Expr) ->
+ try
+ Expr()
+ catch
+ C:E:Stk ->
+ %% Here the stacktrace must be built.
+ erlang:raise(exit, {exception,C,E,Stk}, Stk)
+ end.
+
id(I) -> I.