From 21da8c641d02e07eae2b86cda38e24b5ea22828e Mon Sep 17 00:00:00 2001 From: hjk <hjk121@nokiamail.com> Date: Fri, 5 Apr 2013 14:14:44 +0200 Subject: [PATCH] Debugger: Add dumper test for inheritance edge cases Change-Id: Ia4db7dfc0a0182126255393730d15d12abaf369b Reviewed-by: hjk <hjk121@nokiamail.com> --- tests/auto/debugger/tst_dumpers.cpp | 25 ++++++++++++ .../debugger/simple/simple_test_app.cpp | 39 +++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 2268ab54956..b689e1538fa 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -4281,6 +4281,31 @@ void tst_Dumpers::dumper_data() % Check("f", "2", "double"); + QByteArray inheritanceData = + "struct Empty {};\n" + "struct Data { Data() : a(42) {} int a; };\n" + "struct VEmpty {};\n" + "struct VData { VData() : v(42) {} int v; };\n" + "struct S1 : Empty, Data, virtual VEmpty, virtual VData\n" + " { S1() : i1(1) {} int i1; };\n" + "struct S2 : Empty, Data, virtual VEmpty, virtual VData\n" + " { S2() : i2(1) {} int i2; };\n" + "struct Combined : S1, S2 { Combined() : c(1) {} int c; };\n"; + + QTest::newRow("inheritance") + << Data(inheritanceData, + "Combined c;\n" + "c.S1::a = 42;\n" + "c.S2::a = 43;\n" + "c.S1::v = 44;\n" + "c.S2::v = 45;\n") + % Check("c.c", "1", "int") + % Check("c.@1.@2.a", "42", "int") + % Check("c.@1.@4.v", "45", "int") + % Check("c.@2.@2.a", "43", "int") + % Check("c.@2.@4.v", "45", "int"); + + QTest::newRow("gdb13393") << Data( "struct Base {\n" diff --git a/tests/manual/debugger/simple/simple_test_app.cpp b/tests/manual/debugger/simple/simple_test_app.cpp index 9fd0b4fa904..9259ff27f03 100644 --- a/tests/manual/debugger/simple/simple_test_app.cpp +++ b/tests/manual/debugger/simple/simple_test_app.cpp @@ -4600,6 +4600,44 @@ QString fooxx() namespace basic { + + struct Empty {}; + struct Data { Data() : a(42) {} int a; }; + struct VEmpty {}; + struct VData { VData() : v(42) {} int v; }; + + struct S1 : Empty, Data, virtual VEmpty, virtual VData + { + S1() : i1(1) {} + int i1; + }; + + struct S2 : Empty, Data, virtual VEmpty, virtual VData + { + S2() : i2(1) {} + int i2; + }; + + struct Combined : S1, S2 + { + Combined() : c(1) {} int c; + }; + + + void testInheritance() + { + Combined combined; + combined.S1::a = 42; + combined.S2::a = 43; + combined.S1::v = 44; + combined.S2::v = 45; + + BREAK_HERE; + // Continue. + + dummyStatement(&combined); + } + // This tests display of basic types. void testInt() @@ -5393,6 +5431,7 @@ namespace basic { void testBasic() { + testInheritance(); testInt(); testReference1(); testReference2(); -- GitLab