Skip to content

Commit f0afd5a

Browse files
authored
Merge pull request #6421 from augusto2112/test-nested-interop
[lldb] Add test for nested C++ classes displayed in Swift via interop
2 parents 4662e28 + 012c045 commit f0afd5a

File tree

5 files changed

+59
-0
lines changed

5 files changed

+59
-0
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
SWIFT_SOURCES := main.swift
2+
SWIFT_CXX_INTEROP := 1
3+
SWIFTFLAGS_EXTRAS = -Xcc -I$(SRCDIR)
4+
include Makefile.rules
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
"""
3+
Test that a C++ class is visible in Swift.
4+
"""
5+
from lldbsuite.test.lldbtest import *
6+
from lldbsuite.test.decorators import *
7+
8+
9+
class TestNestedClasses(TestBase):
10+
11+
@skipIf(setting=('symbols.use-swift-clangimporter', 'false'))
12+
@swiftTest
13+
def test(self):
14+
self.build()
15+
self.runCmd('setting set target.experimental.swift-enable-cxx-interop true')
16+
_, _, _, _= lldbutil.run_to_source_breakpoint(
17+
self, 'Set breakpoint here', lldb.SBFileSpec('main.swift'))
18+
19+
self.expect('v nested', substrs=['CxxClass::NestedClass', 'b = 20'])
20+
self.expect('expr nested', substrs=['CxxClass::NestedClass', 'b = 20'])
21+
22+
self.expect('v nestedSubclass', substrs=['CxxClass::NestedSubclass',
23+
'SuperClass = (a = 10)', 'c = 30'])
24+
self.expect('expr nestedSubclass', substrs=['CxxClass::NestedSubclass',
25+
'SuperClass = (a = 10)', 'c = 30'])
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import ReturnsClass
2+
3+
func main() {
4+
let nested = CxxClass.NestedClass()
5+
let nestedSubclass = CxxClass.NestedSubclass()
6+
print(1) // Set breakpoint here
7+
}
8+
main()
9+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module ReturnsClass {
2+
header "returns-class.h"
3+
requires cplusplus
4+
}
5+
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
2+
struct SuperClass {
3+
long long a = 10;
4+
};
5+
6+
struct CxxClass {
7+
struct NestedClass {
8+
long long b = 20;
9+
};
10+
11+
struct NestedSubclass: SuperClass {
12+
long long c = 30;
13+
};
14+
15+
};
16+

0 commit comments

Comments
 (0)