Skip to content

Commit 1ba0d51

Browse files
Merge pull request #3193 from adrian-prantl/79462915-5.5
Add a test for accessing private properties of resilient objects.
2 parents 0f6e045 + 66eaa2d commit 1ba0d51

File tree

4 files changed

+34
-1
lines changed

4 files changed

+34
-1
lines changed

lldb/source/Plugins/TypeSystem/Swift/SwiftASTContext.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3429,7 +3429,8 @@ swift::ASTContext *SwiftASTContext::GetASTContext() {
34293429
// 1. Create and install the memory buffer serialized module loader.
34303430
std::unique_ptr<swift::ModuleLoader> memory_buffer_loader_ap(
34313431
swift::MemoryBufferSerializedModuleLoader::create(
3432-
*m_ast_context_ap, m_dependency_tracker.get(), loading_mode));
3432+
*m_ast_context_ap, m_dependency_tracker.get(), loading_mode,
3433+
/*IgnoreSwiftSourceInfo*/ false, /*BypassResilience*/ true));
34333434
if (memory_buffer_loader_ap) {
34343435
m_memory_buffer_module_loader =
34353436
static_cast<swift::MemoryBufferSerializedModuleLoader *>(
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
SWIFT_SOURCES := main.swift
2+
SWIFTFLAGS_EXTRAS := -enable-library-evolution
3+
4+
include Makefile.rules
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import lldb
2+
from lldbsuite.test.decorators import *
3+
import lldbsuite.test.lldbtest as lldbtest
4+
import lldbsuite.test.lldbutil as lldbutil
5+
import unittest2
6+
7+
8+
class TestSwiftResiliencePrivateField(lldbtest.TestBase):
9+
10+
mydir = lldbtest.TestBase.compute_mydir(__file__)
11+
12+
@swiftTest
13+
def test(self):
14+
self.build()
15+
target, process, thread, bkpt = lldbutil.run_to_source_breakpoint(
16+
self, 'break here', lldb.SBFileSpec('main.swift'))
17+
18+
self.expect("frame variable -- self.m", substrs=['42'])
19+
self.expect("expression -- m", substrs=['42'])
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
public class C {
2+
private var m: Int
3+
public func use_m() {
4+
print(m) // break here
5+
}
6+
public init() { m = 42 }
7+
}
8+
9+
C().use_m()

0 commit comments

Comments
 (0)