Skip to content

Commit 03ab718

Browse files
paldepindCopilot
andcommitted
Unified: Expand conditional compilation constructor tests
Cover unequal branch lengths, nested conditionals, and conditional fields without an else branch. Record the existing constructor parameter behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a9225dea-8342-448b-88ec-ba9587d93816
1 parent ec3a837 commit 03ab718

2 files changed

Lines changed: 84 additions & 8 deletions

File tree

‎unified/ql/test/library-tests/constructors/constructors.swift‎

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ class ConditionalConstructor {
7070
#endif
7171
}
7272

73+
// A struct with conditional fields
7374
struct ConditionalFields {
7475
#if DEBUG
7576
var first: Int
@@ -78,3 +79,40 @@ struct ConditionalFields {
7879
#endif
7980
var third: Bool
8081
}
82+
83+
// A struct with conditional fields with a different number of fields in
84+
// different compilation branches
85+
struct UnequalConditionalFields {
86+
#if DEBUG
87+
var alpha: Int
88+
#else
89+
var alpha: String
90+
var beta: String
91+
var gamma: String
92+
#endif
93+
var omega: Bool
94+
}
95+
96+
struct NestedConditionalFields {
97+
var before: Int
98+
#if DEBUG
99+
#if FEATURE
100+
var selected: String
101+
#else
102+
var selected: Double
103+
#endif
104+
var afterNested: Bool
105+
#elseif RELEASE
106+
var ignoredElseIf: Float
107+
#else
108+
var ignoredElse: Double
109+
#endif
110+
var after: Bool
111+
}
112+
113+
struct OptionalConditionalFields {
114+
#if FEATURE
115+
var first: Int
116+
#endif
117+
var last: Bool
118+
}

‎unified/ql/test/library-tests/constructors/test.expected‎

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ generatedConstructor
44
| constructors.swift:19:1:19:0 | C5.init |
55
| constructors.swift:31:1:31:0 | C7.init |
66
| constructors.swift:39:1:39:0 | S1.init |
7-
| constructors.swift:73:1:73:0 | ConditionalFields.init |
7+
| constructors.swift:74:1:74:0 | ConditionalFields.init |
8+
| constructors.swift:85:1:85:0 | UnequalConditionalFields.init |
9+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init |
10+
| constructors.swift:113:1:113:0 | OptionalConditionalFields.init |
811
implicitReceiverParameter
912
| constructors.swift:1:1:1:0 | self | constructors.swift:1:1:1:0 | C1.init |
1013
| constructors.swift:3:1:3:0 | self | constructors.swift:3:1:3:0 | C2.init |
@@ -24,21 +27,56 @@ implicitReceiverParameter
2427
| constructors.swift:57:9:59:9 | self | constructors.swift:57:9:59:9 | AccessorDeclaration |
2528
| constructors.swift:67:9:67:25 | self | constructors.swift:67:9:67:25 | ConditionalConstructor.init |
2629
| constructors.swift:69:9:69:28 | self | constructors.swift:69:9:69:28 | ConditionalConstructor.init |
27-
| constructors.swift:73:1:73:0 | self | constructors.swift:73:1:73:0 | ConditionalFields.init |
30+
| constructors.swift:74:1:74:0 | self | constructors.swift:74:1:74:0 | ConditionalFields.init |
31+
| constructors.swift:85:1:85:0 | self | constructors.swift:85:1:85:0 | UnequalConditionalFields.init |
32+
| constructors.swift:96:1:96:0 | self | constructors.swift:96:1:96:0 | NestedConditionalFields.init |
33+
| constructors.swift:113:1:113:0 | self | constructors.swift:113:1:113:0 | OptionalConditionalFields.init |
2834
defaultConstructorParameter
2935
| constructors.swift:39:1:39:0 | S1.init | 1 | constructors.swift:39:1:39:0 | f1 [init default constructor] | f1 | true |
3036
| constructors.swift:39:1:39:0 | S1.init | 2 | constructors.swift:39:1:39:0 | f2 [init default constructor] | f2 | false |
3137
| constructors.swift:39:1:39:0 | S1.init | 3 | constructors.swift:39:1:39:0 | f4 [init default constructor] | f4 | false |
3238
| constructors.swift:39:1:39:0 | S1.init | 4 | constructors.swift:39:1:39:0 | f7 [init default constructor] | f7 | true |
3339
| constructors.swift:39:1:39:0 | S1.init | 5 | constructors.swift:39:1:39:0 | f8 [init default constructor] | f8 | true |
34-
| constructors.swift:73:1:73:0 | ConditionalFields.init | 1 | constructors.swift:73:1:73:0 | first [init default constructor] | first | false |
35-
| constructors.swift:73:1:73:0 | ConditionalFields.init | 2 | constructors.swift:73:1:73:0 | second [init default constructor] | second | false |
36-
| constructors.swift:73:1:73:0 | ConditionalFields.init | 3 | constructors.swift:73:1:73:0 | third [init default constructor] | third | false |
40+
| constructors.swift:74:1:74:0 | ConditionalFields.init | 1 | constructors.swift:74:1:74:0 | first [init default constructor] | first | false |
41+
| constructors.swift:74:1:74:0 | ConditionalFields.init | 2 | constructors.swift:74:1:74:0 | second [init default constructor] | second | false |
42+
| constructors.swift:74:1:74:0 | ConditionalFields.init | 3 | constructors.swift:74:1:74:0 | third [init default constructor] | third | false |
43+
| constructors.swift:85:1:85:0 | UnequalConditionalFields.init | 1 | constructors.swift:85:1:85:0 | alpha [init default constructor] | alpha | false |
44+
| constructors.swift:85:1:85:0 | UnequalConditionalFields.init | 2 | constructors.swift:85:1:85:0 | alpha [init default constructor] | alpha | false |
45+
| constructors.swift:85:1:85:0 | UnequalConditionalFields.init | 3 | constructors.swift:85:1:85:0 | beta [init default constructor] | beta | false |
46+
| constructors.swift:85:1:85:0 | UnequalConditionalFields.init | 4 | constructors.swift:85:1:85:0 | gamma [init default constructor] | gamma | false |
47+
| constructors.swift:85:1:85:0 | UnequalConditionalFields.init | 5 | constructors.swift:85:1:85:0 | omega [init default constructor] | omega | false |
48+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 1 | constructors.swift:96:1:96:0 | before [init default constructor] | before | false |
49+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 2 | constructors.swift:96:1:96:0 | selected [init default constructor] | selected | false |
50+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 3 | constructors.swift:96:1:96:0 | selected [init default constructor] | selected | false |
51+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 4 | constructors.swift:96:1:96:0 | afterNested [init default constructor] | afterNested | false |
52+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 5 | constructors.swift:96:1:96:0 | ignoredElseIf [init default constructor] | ignoredElseIf | false |
53+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 6 | constructors.swift:96:1:96:0 | ignoredElse [init default constructor] | ignoredElse | false |
54+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 7 | constructors.swift:96:1:96:0 | after [init default constructor] | after | false |
55+
| constructors.swift:113:1:113:0 | OptionalConditionalFields.init | 1 | constructors.swift:113:1:113:0 | first [init default constructor] | first | false |
56+
| constructors.swift:113:1:113:0 | OptionalConditionalFields.init | 2 | constructors.swift:113:1:113:0 | last [init default constructor] | last | false |
3757
defaultConstructorParameterType
3858
| constructors.swift:39:1:39:0 | S1.init | 2 | constructors.swift:39:1:39:0 | f2 [init default constructor] | f2 | constructors.swift:41:13:41:18 | String |
3959
| constructors.swift:39:1:39:0 | S1.init | 3 | constructors.swift:39:1:39:0 | f4 [init default constructor] | f4 | constructors.swift:43:13:43:18 | Double |
4060
| constructors.swift:39:1:39:0 | S1.init | 4 | constructors.swift:39:1:39:0 | f7 [init default constructor] | f7 | constructors.swift:53:13:53:18 | Double |
4161
| constructors.swift:39:1:39:0 | S1.init | 5 | constructors.swift:39:1:39:0 | f8 [init default constructor] | f8 | constructors.swift:61:13:61:16 | GenericTypeExpr |
42-
| constructors.swift:73:1:73:0 | ConditionalFields.init | 1 | constructors.swift:73:1:73:0 | first [init default constructor] | first | constructors.swift:75:20:75:22 | Int |
43-
| constructors.swift:73:1:73:0 | ConditionalFields.init | 2 | constructors.swift:73:1:73:0 | second [init default constructor] | second | constructors.swift:77:21:77:26 | String |
44-
| constructors.swift:73:1:73:0 | ConditionalFields.init | 3 | constructors.swift:73:1:73:0 | third [init default constructor] | third | constructors.swift:79:16:79:19 | Bool |
62+
| constructors.swift:74:1:74:0 | ConditionalFields.init | 1 | constructors.swift:74:1:74:0 | first [init default constructor] | first | constructors.swift:76:20:76:22 | Int |
63+
| constructors.swift:74:1:74:0 | ConditionalFields.init | 2 | constructors.swift:74:1:74:0 | second [init default constructor] | second | constructors.swift:78:21:78:26 | String |
64+
| constructors.swift:74:1:74:0 | ConditionalFields.init | 3 | constructors.swift:74:1:74:0 | third [init default constructor] | third | constructors.swift:80:16:80:19 | Bool |
65+
| constructors.swift:85:1:85:0 | UnequalConditionalFields.init | 1 | constructors.swift:85:1:85:0 | alpha [init default constructor] | alpha | constructors.swift:87:20:87:22 | Int |
66+
| constructors.swift:85:1:85:0 | UnequalConditionalFields.init | 1 | constructors.swift:85:1:85:0 | alpha [init default constructor] | alpha | constructors.swift:89:20:89:25 | String |
67+
| constructors.swift:85:1:85:0 | UnequalConditionalFields.init | 2 | constructors.swift:85:1:85:0 | alpha [init default constructor] | alpha | constructors.swift:87:20:87:22 | Int |
68+
| constructors.swift:85:1:85:0 | UnequalConditionalFields.init | 2 | constructors.swift:85:1:85:0 | alpha [init default constructor] | alpha | constructors.swift:89:20:89:25 | String |
69+
| constructors.swift:85:1:85:0 | UnequalConditionalFields.init | 3 | constructors.swift:85:1:85:0 | beta [init default constructor] | beta | constructors.swift:90:19:90:24 | String |
70+
| constructors.swift:85:1:85:0 | UnequalConditionalFields.init | 4 | constructors.swift:85:1:85:0 | gamma [init default constructor] | gamma | constructors.swift:91:20:91:25 | String |
71+
| constructors.swift:85:1:85:0 | UnequalConditionalFields.init | 5 | constructors.swift:85:1:85:0 | omega [init default constructor] | omega | constructors.swift:93:16:93:19 | Bool |
72+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 1 | constructors.swift:96:1:96:0 | before [init default constructor] | before | constructors.swift:97:17:97:19 | Int |
73+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 2 | constructors.swift:96:1:96:0 | selected [init default constructor] | selected | constructors.swift:100:27:100:32 | String |
74+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 2 | constructors.swift:96:1:96:0 | selected [init default constructor] | selected | constructors.swift:102:27:102:32 | Double |
75+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 3 | constructors.swift:96:1:96:0 | selected [init default constructor] | selected | constructors.swift:100:27:100:32 | String |
76+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 3 | constructors.swift:96:1:96:0 | selected [init default constructor] | selected | constructors.swift:102:27:102:32 | Double |
77+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 4 | constructors.swift:96:1:96:0 | afterNested [init default constructor] | afterNested | constructors.swift:104:26:104:29 | Bool |
78+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 5 | constructors.swift:96:1:96:0 | ignoredElseIf [init default constructor] | ignoredElseIf | constructors.swift:106:28:106:32 | Float |
79+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 6 | constructors.swift:96:1:96:0 | ignoredElse [init default constructor] | ignoredElse | constructors.swift:108:26:108:31 | Double |
80+
| constructors.swift:96:1:96:0 | NestedConditionalFields.init | 7 | constructors.swift:96:1:96:0 | after [init default constructor] | after | constructors.swift:110:16:110:19 | Bool |
81+
| constructors.swift:113:1:113:0 | OptionalConditionalFields.init | 1 | constructors.swift:113:1:113:0 | first [init default constructor] | first | constructors.swift:115:20:115:22 | Int |
82+
| constructors.swift:113:1:113:0 | OptionalConditionalFields.init | 2 | constructors.swift:113:1:113:0 | last [init default constructor] | last | constructors.swift:117:15:117:18 | Bool |

0 commit comments

Comments
 (0)