mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-05 14:34:55 +00:00
New testcases, all of which work with llvmg++!
This tests exception specifications, and also adds an "easy" rethrow test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8183 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8df6bddd01
commit
902d580bd9
51
test/C++Frontend/EH/exception_spec_test.cpp
Normal file
51
test/C++Frontend/EH/exception_spec_test.cpp
Normal file
@ -0,0 +1,51 @@
|
||||
// This tests that exception specifications interact properly with unexpected
|
||||
// handlers.
|
||||
|
||||
#include <exception>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
static void TerminateHandler() {
|
||||
printf("std::terminate called\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
static void UnexpectedHandler1() {
|
||||
printf("std::unexpected called: throwing a double\n");
|
||||
throw 1.0;
|
||||
}
|
||||
|
||||
static void UnexpectedHandler2() {
|
||||
printf("std::unexpected called: throwing an int!\n");
|
||||
throw 1;
|
||||
}
|
||||
|
||||
void test(bool Int) throw (double) {
|
||||
if (Int) {
|
||||
printf("Throwing an int from a function which only allows doubles!\n");
|
||||
throw 1;
|
||||
} else {
|
||||
printf("Throwing a double from a function which allows doubles!\n");
|
||||
throw 1.0;
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
try {
|
||||
test(false);
|
||||
} catch (double D) {
|
||||
printf("Double successfully caught!\n");
|
||||
}
|
||||
|
||||
std::set_terminate(TerminateHandler);
|
||||
std::set_unexpected(UnexpectedHandler1);
|
||||
|
||||
try {
|
||||
test(true);
|
||||
} catch (double D) {
|
||||
printf("Double successfully caught!\n");
|
||||
}
|
||||
|
||||
std::set_unexpected(UnexpectedHandler2);
|
||||
test(true);
|
||||
}
|
25
test/C++Frontend/EH/simple_rethrow.cpp
Normal file
25
test/C++Frontend/EH/simple_rethrow.cpp
Normal file
@ -0,0 +1,25 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int throws() {
|
||||
printf("Throwing int\n");
|
||||
throw 16;
|
||||
};
|
||||
|
||||
int callsthrows() {
|
||||
try {
|
||||
throws();
|
||||
} catch (...) {
|
||||
printf("Caught something, rethrowing...\n");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
try {
|
||||
callsthrows();
|
||||
} catch (int i) {
|
||||
printf("Caught int: %d\n", i);
|
||||
return i-16;
|
||||
}
|
||||
return 1;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user