forked from OSchip/llvm-project
New testcases, all of which work with llvmg++!
This tests exception specifications, and also adds an "easy" rethrow test. llvm-svn: 8183
This commit is contained in:
parent
49e96777bb
commit
44cf3163a5
|
@ -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);
|
||||
}
|
|
@ -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…
Reference in New Issue