File tree Expand file tree Collapse file tree 2 files changed +61
-2
lines changed
test/Interop/SwiftToCxx/enums Expand file tree Collapse file tree 2 files changed +61
-2
lines changed Original file line number Diff line number Diff line change @@ -392,8 +392,20 @@ class DeclAndTypePrinter::Implementation
392392 ClangValueTypePrinter printer (os, owningPrinter.prologueOS ,
393393 owningPrinter.typeMapping ,
394394 owningPrinter.interopContext );
395- printer.printValueTypeDecl (
396- ED, /* bodyPrinter=*/ [&]() {}); // TODO: (tongjie) print cases
395+ printer.printValueTypeDecl (ED, /* bodyPrinter=*/ [&]() {
396+ ClangSyntaxPrinter syntaxPrinter (os);
397+ os << " enum class cases {" ;
398+ llvm::interleaveComma (
399+ ED->getAllCases (), os, [&](const EnumCaseDecl *caseDecl) {
400+ llvm::interleaveComma (caseDecl->getElements (), os,
401+ [&](const EnumElementDecl *elementDecl) {
402+ os << " \n " ;
403+ syntaxPrinter.printIdentifier (
404+ elementDecl->getNameStr ());
405+ });
406+ });
407+ os << " \n };\n " ;
408+ });
397409 os << outOfLineDefinitions;
398410 outOfLineDefinitions.clear ();
399411 return ;
Original file line number Diff line number Diff line change 1+ // RUN: %empty-directory(%t)
2+ // RUN: %target-swift-frontend %s -typecheck -module-name Enums -clang-header-expose-public-decls -emit-clang-header-path %t/enums.h
3+ // RUN: %FileCheck %s < %t/enums.h
4+
5+ // RUN: %check-interop-cxx-header-in-clang(%t/enums.h -Wno-unused-private-field -Wno-unused-function)
6+
7+ public enum EnumMultipleElementsInSingleCase { case first, second }
8+
9+ public enum EnumSingleElementInSingleCase {
10+ case first
11+ case second
12+ }
13+
14+ public enum EnumCaseIsSwiftKeyword {
15+ case first( a: Int )
16+ case `protocol`( b: Double )
17+ }
18+
19+ public enum EnumCaseIsCxxKeyword {
20+ case first, second( x: Float )
21+ case const
22+ }
23+
24+ // CHECK: class EnumCaseIsCxxKeyword final {
25+ // CHECK: enum class cases {
26+ // CHECK-NEXT: first,
27+ // CHECK-NEXT: second,
28+ // CHECK-NEXT: const_
29+ // CHECK-NEXT: };
30+
31+ // CHECK: class EnumCaseIsSwiftKeyword final {
32+ // CHECK: enum class cases {
33+ // CHECK-NEXT: first,
34+ // CHECK-NEXT: protocol
35+ // CHECK-NEXT: };
36+
37+ // CHECK: class EnumMultipleElementsInSingleCase final {
38+ // CHECK: enum class cases {
39+ // CHECK-NEXT: first,
40+ // CHECK-NEXT: second
41+ // CHECK-NEXT: };
42+
43+ // CHECK: class EnumSingleElementInSingleCase final {
44+ // CHECK: enum class cases {
45+ // CHECK-NEXT: first,
46+ // CHECK-NEXT: second
47+ // CHECK-NEXT: };
You can’t perform that action at this time.
0 commit comments