Files
clang-p2996/lldb/test/API/commands/expression/formatters/main.cpp
Raphael Isemann 2bab1738f3 [lldb] Make TestFormatters.py not rely on working constructor calls
All calls to operator new in this test fail for me with:
```
expression --show-types -- *(new foo(47))`
Error output:
error: Execution was interrupted, reason: internal c++ exception breakpoint(-6)..
The process has been returned to the state before expression evaluation.
```

As calling operator new isn't the idea of this test, this patch moves that
logic to the binary with some new_* utility functions and explicitly tests
this logic in the constructor test (where we can isolate the failures and
skip them on Linux).
2020-02-19 10:21:36 +01:00

59 lines
790 B
C++

#include <iostream>
#include <string>
int *new_int(int val) {
return new int(val);
}
struct baz
{
int h;
int k;
baz(int a, int b) : h(a), k(b) {}
};
struct bar
{
int i;
int* i_ptr;
baz b;
baz& b_ref;
bar(int x) : i(x),i_ptr(new int(x+1)),b(i+3,i+5),b_ref(b) {}
};
struct foo
{
int a;
int* a_ptr;
bar b;
foo(int x) : a(x),
a_ptr(new_int(x+1)),
b(2*x) {}
};
foo *new_foo(int x) {
return new foo(x);
}
int main(int argc, char** argv)
{
foo foo1(12);
foo foo2(121);
foo * newd_foo = new_foo(1);
delete newd_foo;
foo2.a = 7777; // Stop here
*(foo2.b.i_ptr) = 8888;
foo2.b.b.h = 9999;
*(foo1.a_ptr) = 9999;
foo1.b.i = 9999;
int numbers[5] = {1,2,3,4,5};
return 0; // Done initializing
}