@@ -16,68 +16,67 @@ class TestBuilder {
16
16
continue ;
17
17
}
18
18
switch (field .kind ) {
19
- case FFun (f ) if (field .meta .exists (m -> m .name == " :async" )):
20
- // Async is already manually handled, nothing to do
21
-
22
19
case FFun (f ):
20
+ var isProcessed = field .meta .exists (m -> m .name == " :async" );
23
21
var variants = field .meta .filter (m -> m .name == " :variant" );
24
22
if (variants .length == 0 ) {
25
- makeAsyncTest (f , field .pos );
26
- } else {
27
- // TODO: support functions that define their own async arg (not named `_` or `async`)
28
- var args = f .args .copy ();
29
- f .args = [];
30
- makeAsyncTest (f , field .pos );
23
+ if (! isProcessed ) makeAsyncTest (f , field .pos );
24
+ continue ;
25
+ }
31
26
32
- // Ignore original field; generate variants instead
33
- removedFields .push (field );
27
+ var args = f .args .copy ();
28
+ f .args = [];
29
+ if (! isProcessed ) makeAsyncTest (f , field .pos );
34
30
35
- for (variant in variants ) {
36
- if (variant .params .length == 0 ) {
37
- Context .error (' Unexpected amount of variant parameters.' , variant .pos );
38
- }
39
-
40
- var nameParam = variant .params .shift ();
41
- var name : String = try haxe.macro. ExprTools .getValue (nameParam ) catch (e ) {
42
- Context .error (' Variant first parameter should be a String (variant name)' , nameParam .pos );
43
- };
31
+ // Ignore original field; generate variants instead
32
+ removedFields .push (field );
44
33
45
- var inits = [for (arg in args ) {
46
- var name = arg .name ;
47
- var ct = arg .type ;
34
+ for (variant in variants ) {
35
+ if (variant .params .length == 0 ) {
36
+ Context .error (' Unexpected amount of variant parameters.' , variant .pos );
37
+ }
48
38
49
- if (variant .params .length == 0 ) {
50
- Context .error (' Unexpected amount of variant parameters.' , variant .pos );
51
- }
39
+ var nameParam = variant .params .shift ();
40
+ var name : String = try haxe.macro. ExprTools .getValue (nameParam ) catch (e ) {
41
+ Context .error (' Variant first parameter should be a String (variant name)' , nameParam .pos );
42
+ };
52
43
53
- var param = variant .params .shift ();
54
- macro @:pos (param .pos ) var $name : $ct = (($name : $ct ) -> $i {name })(${param });
55
- }];
44
+ var inits = [for (arg in args ) {
45
+ var name = arg .name ;
46
+ if (isProcessed && name == " async" ) continue ;
47
+ var ct = arg .type ;
56
48
57
- if (variant .params .length > 0 ) {
58
- Context .error (' Unexpected amount of variant parameters.' , variant .params [ 0 ]. pos );
49
+ if (variant .params .length == 0 ) {
50
+ Context .error (' Unexpected amount of variant parameters.' , variant .pos );
59
51
}
60
52
61
- switch (f .expr .expr ) {
62
- case EBlock (b ):
63
- var ff = {
64
- ret : f .ret ,
65
- params : f .params ,
66
- expr : {pos : variant .pos , expr : EBlock (inits .concat (b ))},
67
- args : [{name : " async" , type : macro :utest. Async }]
68
- };
69
-
70
- newFields .push ({
71
- pos : variant .pos ,
72
- name : field .name + name ,
73
- meta : field .meta .filter (m -> m .name != " :variant" ),
74
- kind : FFun (ff ),
75
- doc : field .doc ,
76
- access : field .access
77
- });
78
-
79
- case _ :
80
- }
53
+ var param = variant .params .shift ();
54
+ macro @:pos (param .pos ) var $name : $ct = (($name : $ct ) -> $i {name })(${param });
55
+ }];
56
+
57
+ if (variant .params .length > 0 ) {
58
+ Context .error (' Unexpected amount of variant parameters.' , variant .params [0 ].pos );
59
+ }
60
+
61
+ switch (f .expr .expr ) {
62
+ case EBlock (b ):
63
+ var ff = {
64
+ ret : f .ret ,
65
+ params : f .params ,
66
+ expr : {pos : variant .pos , expr : EBlock (inits .concat (b ))},
67
+ args : [{name : " async" , type : macro :utest. Async }]
68
+ };
69
+
70
+ newFields .push ({
71
+ pos : variant .pos ,
72
+ name : field .name + name ,
73
+ meta : field .meta .filter (m -> m .name != " :variant" ),
74
+ kind : FFun (ff ),
75
+ doc : field .doc ,
76
+ access : field .access
77
+ });
78
+
79
+ case _ :
81
80
}
82
81
}
83
82
case _ :
0 commit comments