Skip to content

Commit 49d67fd

Browse files
authored
Merge pull request #71179 from apple/egorzhdan/symbolic-default-arg
[cxx-interop] Emit default expressions in symbolic interfaces
2 parents cc47851 + 7103d27 commit 49d67fd

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

lib/ClangImporter/ImportDecl.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3580,6 +3580,10 @@ namespace {
35803580
bodyName, Impl.ImportedHeaderUnit);
35813581
paramInfo->setSpecifier(ParamSpecifier::Default);
35823582
paramInfo->setInterfaceType(Impl.SwiftContext.TheAnyType);
3583+
if (param->hasDefaultArg()) {
3584+
paramInfo->setDefaultArgumentKind(DefaultArgumentKind::Normal);
3585+
paramInfo->setDefaultValueStringRepresentation("cxxDefaultArg");
3586+
}
35833587
params.push_back(paramInfo);
35843588
}
35853589
bodyParams = ParameterList::create(Impl.SwiftContext, params);

test/Interop/Cxx/symbolic-imports/print-symbolic-module-interface.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ namespace ns {
3737
template<class T2>
3838
struct InnerTemplate {
3939
void innerTemplateMethod();
40+
void innerTemplateMethodWithDefaultArg(T2 x = 123);
4041
};
4142

4243
InnerTemplate<int> returnsTemplateMethod();
@@ -78,6 +79,7 @@ public:
7879
// CHECK-NEXT: @available(*, deprecated, message:
7980
// CHECK-NEXT: init()
8081
// CHECK-NEXT: mutating func innerTemplateMethod()
82+
// CHECK-NEXT: mutating func innerTemplateMethodWithDefaultArg(_ x: Any = cxxDefaultArg)
8183
// CHECK-NEXT: }
8284
// CHECK-NEXT: mutating func returnsTemplateMethod()
8385
// CHECK-NEXT: }

0 commit comments

Comments
 (0)