Skip to content

Commit 299f173

Browse files
authored
Merge pull request #83761 from egorzhdan/egorzhdan/tilde-operator
[cxx-interop] Import tilde operators
2 parents a5649a1 + 582357b commit 299f173

File tree

4 files changed

+14
-0
lines changed

4 files changed

+14
-0
lines changed

lib/ClangImporter/ImportName.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1964,6 +1964,7 @@ ImportedName NameImporter::importNameImpl(const clang::NamedDecl *D,
19641964
case clang::OverloadedOperatorKind::OO_Caret:
19651965
case clang::OverloadedOperatorKind::OO_Amp:
19661966
case clang::OverloadedOperatorKind::OO_Pipe:
1967+
case clang::OverloadedOperatorKind::OO_Tilde:
19671968
case clang::OverloadedOperatorKind::OO_Exclaim:
19681969
case clang::OverloadedOperatorKind::OO_Less:
19691970
case clang::OverloadedOperatorKind::OO_Greater:

test/Interop/Cxx/operators/Inputs/non-member-inline.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ inline LoadableIntWrapper operator^(LoadableIntWrapper lhs, LoadableIntWrapper r
2929
return LoadableIntWrapper{.value = lhs.value ^ rhs.value};
3030
}
3131

32+
inline LoadableIntWrapper operator~(LoadableIntWrapper lhs) {
33+
return LoadableIntWrapper{.value = ~lhs.value};
34+
}
35+
3236
inline LoadableIntWrapper operator&(LoadableIntWrapper lhs, LoadableIntWrapper rhs) {
3337
return LoadableIntWrapper{.value = lhs.value & rhs.value};
3438
}

test/Interop/Cxx/operators/non-member-inline-module-interface.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
// CHECK-NEXT: func / (lhs: LoadableIntWrapper, rhs: LoadableIntWrapper) -> LoadableIntWrapper
77
// CHECK-NEXT: func % (lhs: LoadableIntWrapper, rhs: LoadableIntWrapper) -> LoadableIntWrapper
88
// CHECK-NEXT: func ^ (lhs: LoadableIntWrapper, rhs: LoadableIntWrapper) -> LoadableIntWrapper
9+
// CHECK-NEXT: func ~ (lhs: LoadableIntWrapper) -> LoadableIntWrapper
910
// CHECK-NEXT: func & (lhs: LoadableIntWrapper, rhs: LoadableIntWrapper) -> LoadableIntWrapper
1011
// CHECK-NEXT: func | (lhs: LoadableIntWrapper, rhs: LoadableIntWrapper) -> LoadableIntWrapper
1112
// CHECK-NEXT: func << (lhs: LoadableIntWrapper, rhs: LoadableIntWrapper) -> LoadableIntWrapper

test/Interop/Cxx/operators/non-member-inline.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,14 @@ OperatorsTestSuite.test("caret (^)") {
5252
expectEqual(61, result.value)
5353
}
5454

55+
OperatorsTestSuite.test("tilde (~)") {
56+
let lhs = LoadableIntWrapper(value: 42)
57+
58+
let result = ~lhs
59+
60+
expectEqual(-43, result.value)
61+
}
62+
5563
OperatorsTestSuite.test("percent (%)") {
5664
let lhs = LoadableIntWrapper(value: 11)
5765
let rhs = LoadableIntWrapper(value: 2)

0 commit comments

Comments
 (0)