File tree 3 files changed +145
-1
lines changed
3 files changed +145
-1
lines changed Original file line number Diff line number Diff line change @@ -44,7 +44,11 @@ fn generic_arg(p: &mut Parser) {
44
44
// type T = StreamingIterator<Item<'a> = &'a T>;
45
45
T ! [ =] => {
46
46
p. bump_any ( ) ;
47
- types:: type_ ( p) ;
47
+ if types:: TYPE_FIRST . contains ( p. current ( ) ) {
48
+ types:: type_ ( p) ;
49
+ } else {
50
+ const_arg ( p) ;
51
+ }
48
52
m. complete ( p, ASSOC_TYPE_ARG ) ;
49
53
}
50
54
// test assoc_type_bound
Original file line number Diff line number Diff line change
1
+ SOURCE_FILE
2
+ IMPL
3
+ IMPL_KW "impl"
4
+ GENERIC_PARAM_LIST
5
+ L_ANGLE "<"
6
+ TYPE_PARAM
7
+ NAME
8
+ IDENT "T"
9
+ COMMA ","
10
+ WHITESPACE " "
11
+ CONST_PARAM
12
+ CONST_KW "const"
13
+ WHITESPACE " "
14
+ NAME
15
+ IDENT "N"
16
+ COLON ":"
17
+ WHITESPACE " "
18
+ PATH_TYPE
19
+ PATH
20
+ PATH_SEGMENT
21
+ NAME_REF
22
+ IDENT "usize"
23
+ R_ANGLE ">"
24
+ WHITESPACE " "
25
+ PATH_TYPE
26
+ PATH
27
+ PATH_SEGMENT
28
+ NAME_REF
29
+ IDENT "Foo"
30
+ WHITESPACE " "
31
+ FOR_KW "for"
32
+ WHITESPACE " "
33
+ PATH_TYPE
34
+ PATH
35
+ PATH_SEGMENT
36
+ NAME_REF
37
+ IDENT "T"
38
+ WHITESPACE " "
39
+ WHERE_CLAUSE
40
+ WHERE_KW "where"
41
+ WHITESPACE " "
42
+ WHERE_PRED
43
+ PATH_TYPE
44
+ PATH
45
+ PATH_SEGMENT
46
+ NAME_REF
47
+ IDENT "T"
48
+ COLON ":"
49
+ WHITESPACE " "
50
+ TYPE_BOUND_LIST
51
+ TYPE_BOUND
52
+ PATH_TYPE
53
+ PATH
54
+ PATH_SEGMENT
55
+ NAME_REF
56
+ IDENT "HasCount"
57
+ GENERIC_ARG_LIST
58
+ L_ANGLE "<"
59
+ ASSOC_TYPE_ARG
60
+ NAME_REF
61
+ IDENT "COUNT"
62
+ WHITESPACE " "
63
+ EQ "="
64
+ WHITESPACE " "
65
+ CONST_ARG
66
+ BLOCK_EXPR
67
+ STMT_LIST
68
+ L_CURLY "{"
69
+ PATH_EXPR
70
+ PATH
71
+ PATH_SEGMENT
72
+ NAME_REF
73
+ IDENT "N"
74
+ R_CURLY "}"
75
+ R_ANGLE ">"
76
+ WHITESPACE " "
77
+ ASSOC_ITEM_LIST
78
+ L_CURLY "{"
79
+ R_CURLY "}"
80
+ WHITESPACE "\n\n"
81
+ IMPL
82
+ IMPL_KW "impl"
83
+ GENERIC_PARAM_LIST
84
+ L_ANGLE "<"
85
+ TYPE_PARAM
86
+ NAME
87
+ IDENT "T"
88
+ R_ANGLE ">"
89
+ WHITESPACE " "
90
+ PATH_TYPE
91
+ PATH
92
+ PATH_SEGMENT
93
+ NAME_REF
94
+ IDENT "Foo"
95
+ WHITESPACE " "
96
+ FOR_KW "for"
97
+ WHITESPACE " "
98
+ PATH_TYPE
99
+ PATH
100
+ PATH_SEGMENT
101
+ NAME_REF
102
+ IDENT "T"
103
+ WHITESPACE " "
104
+ WHERE_CLAUSE
105
+ WHERE_KW "where"
106
+ WHITESPACE " "
107
+ WHERE_PRED
108
+ PATH_TYPE
109
+ PATH
110
+ PATH_SEGMENT
111
+ NAME_REF
112
+ IDENT "T"
113
+ COLON ":"
114
+ WHITESPACE " "
115
+ TYPE_BOUND_LIST
116
+ TYPE_BOUND
117
+ PATH_TYPE
118
+ PATH
119
+ PATH_SEGMENT
120
+ NAME_REF
121
+ IDENT "HasCount"
122
+ GENERIC_ARG_LIST
123
+ L_ANGLE "<"
124
+ ASSOC_TYPE_ARG
125
+ NAME_REF
126
+ IDENT "COUNT"
127
+ WHITESPACE " "
128
+ EQ "="
129
+ WHITESPACE " "
130
+ CONST_ARG
131
+ LITERAL
132
+ INT_NUMBER "0"
133
+ R_ANGLE ">"
134
+ WHITESPACE " "
135
+ ASSOC_ITEM_LIST
136
+ L_CURLY "{"
137
+ R_CURLY "}"
Original file line number Diff line number Diff line change
1
+ impl < T , const N : usize > Foo for T where T : HasCount < COUNT = { N } > { }
2
+
3
+ impl < T > Foo for T where T : HasCount < COUNT = 0 > { }
You can’t perform that action at this time.
0 commit comments