From 0cef3914c5b98b4a53b9c0d8a08ce4807ae7f66c Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Tue, 11 Apr 2023 14:26:37 -0700 Subject: [PATCH 1/3] Revert "Revert "[lldb] Fix lldb build after swift ASTContext change"" This reverts commit 35e4364439bc24248792b405d38b128a4c236383. --- lldb/source/Plugins/TypeSystem/Swift/SwiftASTContext.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lldb/source/Plugins/TypeSystem/Swift/SwiftASTContext.cpp b/lldb/source/Plugins/TypeSystem/Swift/SwiftASTContext.cpp index bb34b1491fd88..2c8adbe85a6a4 100644 --- a/lldb/source/Plugins/TypeSystem/Swift/SwiftASTContext.cpp +++ b/lldb/source/Plugins/TypeSystem/Swift/SwiftASTContext.cpp @@ -2908,7 +2908,7 @@ swift::ASTContext *SwiftASTContext::GetASTContext() { GetLanguageOptions(), GetTypeCheckerOptions(), GetSILOptions(), GetSearchPathOptions(), GetClangImporterOptions(), GetSymbolGraphOptions(), GetSourceManager(), GetDiagnosticEngine(), - ReportModuleLoadingProgress)); + /*OutputBackend=*/nullptr, ReportModuleLoadingProgress)); m_diagnostic_consumer_ap.reset(new StoringDiagnosticConsumer(*this)); if (getenv("LLDB_SWIFT_DUMP_DIAGS")) { From c73e1efa3b01cecab534c3aab1eaa1bdb0121717 Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Tue, 11 Apr 2023 14:26:40 -0700 Subject: [PATCH 2/3] Revert "Revert "[lldb] Add Swift/C++ backward interop expression evaluation tests"" This reverts commit d707f3245890ae38096ec9d88971af155c0ba649. --- .../cxx_interop/backward/expressions/Makefile | 7 ++++ .../TestSwiftBackwardInteropExpressions.py | 21 ++++++++++ .../cxx_interop/backward/expressions/main.cpp | 16 ++++++++ .../backward/expressions/swift-types.swift | 39 +++++++++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 lldb/test/API/lang/swift/cxx_interop/backward/expressions/Makefile create mode 100644 lldb/test/API/lang/swift/cxx_interop/backward/expressions/TestSwiftBackwardInteropExpressions.py create mode 100644 lldb/test/API/lang/swift/cxx_interop/backward/expressions/main.cpp create mode 100644 lldb/test/API/lang/swift/cxx_interop/backward/expressions/swift-types.swift diff --git a/lldb/test/API/lang/swift/cxx_interop/backward/expressions/Makefile b/lldb/test/API/lang/swift/cxx_interop/backward/expressions/Makefile new file mode 100644 index 0000000000000..947094ab0c28f --- /dev/null +++ b/lldb/test/API/lang/swift/cxx_interop/backward/expressions/Makefile @@ -0,0 +1,7 @@ +SWIFT_CXX_HEADER := swift-types.h +SWIFT_SOURCES := swift-types.swift +CXX_SOURCES := main.cpp +SWIFT_CXX_INTEROP := 1 +SWIFTFLAGS_EXTRAS = -Xcc -I$(SRCDIR) -parse-as-library +CFLAGS = -I. -g +include Makefile.rules diff --git a/lldb/test/API/lang/swift/cxx_interop/backward/expressions/TestSwiftBackwardInteropExpressions.py b/lldb/test/API/lang/swift/cxx_interop/backward/expressions/TestSwiftBackwardInteropExpressions.py new file mode 100644 index 0000000000000..4a9f2e630f732 --- /dev/null +++ b/lldb/test/API/lang/swift/cxx_interop/backward/expressions/TestSwiftBackwardInteropExpressions.py @@ -0,0 +1,21 @@ + +""" +Test that evaluating expressions works on backward interop mode. +""" +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * + + +class TestSwiftBackwardInteropExpressions(TestBase): + + @swiftTest + def test_func_step_in(self): + self.build() + self.runCmd('setting set target.experimental.swift-enable-cxx-interop true') + _, _, _, _ = lldbutil.run_to_source_breakpoint( + self, 'Break here', lldb.SBFileSpec('main.cpp')) + self.expect('expr swiftFunc()', substrs=["Inside a Swift function"]) + self.expect('expr swiftClass.swiftMethod()', substrs=["Inside a Swift method"]) + self.expect('expr a::SwiftClass::swiftStaticMethod()', substrs=["In a Swift static method"]) + self.expect('expr swiftClass.getSwiftProperty()', substrs=["This is a class with properties"]) + self.expect('expr swiftSubclassAsClass.overrideableMethod()', substrs=["In subclass"]) diff --git a/lldb/test/API/lang/swift/cxx_interop/backward/expressions/main.cpp b/lldb/test/API/lang/swift/cxx_interop/backward/expressions/main.cpp new file mode 100644 index 0000000000000..17431c746188a --- /dev/null +++ b/lldb/test/API/lang/swift/cxx_interop/backward/expressions/main.cpp @@ -0,0 +1,16 @@ +#include "swift-types.h" + +using namespace a; + +int main() { + swiftFunc(); + auto swiftClass = SwiftClass::init(); + swiftClass.swiftMethod(); + SwiftClass::swiftStaticMethod(); + swiftClass.getSwiftProperty(); + auto swiftSubclass = SwiftSubclass::init(); + SwiftClass swiftSubclassAsClass = swiftSubclass; + swiftSubclassAsClass.overrideableMethod(); + return 0; // Break here +} + diff --git a/lldb/test/API/lang/swift/cxx_interop/backward/expressions/swift-types.swift b/lldb/test/API/lang/swift/cxx_interop/backward/expressions/swift-types.swift new file mode 100644 index 0000000000000..8a74c3e4c28c6 --- /dev/null +++ b/lldb/test/API/lang/swift/cxx_interop/backward/expressions/swift-types.swift @@ -0,0 +1,39 @@ + +public func swiftFunc() -> String{ + return "Inside a Swift function!" +} + +public class SwiftClass { + var field: Int + var arr: [String] + public init() { + field = 42 + arr = ["An", "array", "of", "strings"] + } + + public func swiftMethod() -> String { + return "Inside a Swift method!" + } + + private var _desc = "This is a class with properties!" + public var swiftProperty: String { + get { + return _desc + } + } + + public static func swiftStaticMethod() -> String { + return "In a Swift static method!" + } + + public func overrideableMethod() -> String { + return "In the base class!" + } +} + +public class SwiftSubclass: SwiftClass { + public override func overrideableMethod() -> String { + return "In subclass!" + } +} + From 12414adaad0d7cdb61ce292106788a5354845e55 Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Tue, 11 Apr 2023 14:26:42 -0700 Subject: [PATCH 3/3] Revert "Revert "[lldb] Skip TestSwiftBackwardInteropExpressions in Linux"" This reverts commit 44c656aa85b0077348d203bee21d51a89020e5c4. --- .../backward/expressions/TestSwiftBackwardInteropExpressions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lldb/test/API/lang/swift/cxx_interop/backward/expressions/TestSwiftBackwardInteropExpressions.py b/lldb/test/API/lang/swift/cxx_interop/backward/expressions/TestSwiftBackwardInteropExpressions.py index 4a9f2e630f732..4ca2caeecc6eb 100644 --- a/lldb/test/API/lang/swift/cxx_interop/backward/expressions/TestSwiftBackwardInteropExpressions.py +++ b/lldb/test/API/lang/swift/cxx_interop/backward/expressions/TestSwiftBackwardInteropExpressions.py @@ -8,6 +8,7 @@ class TestSwiftBackwardInteropExpressions(TestBase): + @skipIfLinux @swiftTest def test_func_step_in(self): self.build()