@@ -122,7 +122,7 @@ template CLI(Config config, COMMAND)
122
122
}
123
123
124
124
static int parseArgs (alias newMain)(string [] args, COMMAND initialValue = COMMAND .init)
125
- if (__traits(compiles, { newMain(COMMAND .init ); }))
125
+ if (__traits(compiles, { newMain(initialValue ); }))
126
126
{
127
127
alias value = initialValue;
128
128
@@ -140,7 +140,7 @@ template CLI(Config config, COMMAND)
140
140
}
141
141
142
142
static int parseArgs (alias newMain)(string [] args, COMMAND initialValue = COMMAND .init)
143
- if (__traits(compiles, { newMain(COMMAND .init , string [].init); }))
143
+ if (__traits(compiles, { newMain(initialValue , string [].init); }))
144
144
{
145
145
alias value = initialValue;
146
146
@@ -205,11 +205,20 @@ alias CLI(COMMANDS...) = CLI!(Config.init, COMMANDS);
205
205
206
206
unittest
207
207
{
208
+ // Ensure that CLI.main is compilable
208
209
struct Args {}
209
210
210
- mixin CLI ! ({
211
- Config cfg;
212
- cfg.errorHandler = (string s) {};
213
- return cfg;
214
- }(), Args).main! ((_){});
211
+ enum Config cfg = { errorHandler: (string s) {} };
212
+
213
+ mixin CLI ! (cfg, Args).main! ((_){});
214
+ }
215
+
216
+ unittest
217
+ {
218
+ // Ensure that CLI.main is compilable with reference parameter in callback
219
+ struct Args {}
220
+
221
+ enum Config cfg = { errorHandler: (string s) {} };
222
+
223
+ mixin CLI ! (cfg, Args).main! ((ref _){});
215
224
}
0 commit comments