Skip to content

Commit 6eb4797

Browse files
Where clause can contain primitive types #49
Co-Authored-By: calixteman <[email protected]>
1 parent 527b3b6 commit 6eb4797

File tree

5 files changed

+40243
-40117
lines changed

5 files changed

+40243
-40117
lines changed

corpus/declarations.txt

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,6 +1022,10 @@ pub trait A<B> where B: C,
10221022
{
10231023
}
10241024

1025+
fn foo<A>() where A: B + As<f64>, f64: As<A>
1026+
{
1027+
}
1028+
10251029
---
10261030

10271031
(source_file
@@ -1133,11 +1137,28 @@ pub trait A<B> where B: C,
11331137
(visibility_modifier)
11341138
name: (type_identifier)
11351139
type_parameters: (type_parameters (type_identifier))
1140+
(where_clause (where_predicate
1141+
left: (type_identifier)
1142+
bounds: (trait_bounds (type_identifier))))
1143+
body: (declaration_list))
1144+
(function_item
1145+
name: (identifier)
1146+
type_parameters: (type_parameters (type_identifier))
1147+
parameters: (parameters)
11361148
(where_clause
11371149
(where_predicate
11381150
left: (type_identifier)
1139-
bounds: (trait_bounds (type_identifier))))
1140-
body: (declaration_list)))
1151+
bounds: (trait_bounds
1152+
(type_identifier)
1153+
(generic_type
1154+
type: (type_identifier)
1155+
type_arguments: (type_arguments (primitive_type)))))
1156+
(where_predicate
1157+
left: (primitive_type)
1158+
bounds: (trait_bounds (generic_type
1159+
type: (type_identifier)
1160+
type_arguments: (type_arguments (type_identifier))))))
1161+
body: (block)))
11411162

11421163
===================================
11431164
External Modules

grammar.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,7 @@ module.exports = grammar({
441441
$.reference_type,
442442
$.tuple_type,
443443
$.higher_ranked_trait_bound,
444+
alias(choice(...primitive_types), $.primitive_type)
444445
)),
445446
field('bounds', $.trait_bounds)
446447
),

src/grammar.json

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2388,6 +2388,84 @@
23882388
{
23892389
"type": "SYMBOL",
23902390
"name": "higher_ranked_trait_bound"
2391+
},
2392+
{
2393+
"type": "ALIAS",
2394+
"content": {
2395+
"type": "CHOICE",
2396+
"members": [
2397+
{
2398+
"type": "STRING",
2399+
"value": "u8"
2400+
},
2401+
{
2402+
"type": "STRING",
2403+
"value": "i8"
2404+
},
2405+
{
2406+
"type": "STRING",
2407+
"value": "u16"
2408+
},
2409+
{
2410+
"type": "STRING",
2411+
"value": "i16"
2412+
},
2413+
{
2414+
"type": "STRING",
2415+
"value": "u32"
2416+
},
2417+
{
2418+
"type": "STRING",
2419+
"value": "i32"
2420+
},
2421+
{
2422+
"type": "STRING",
2423+
"value": "u64"
2424+
},
2425+
{
2426+
"type": "STRING",
2427+
"value": "i64"
2428+
},
2429+
{
2430+
"type": "STRING",
2431+
"value": "u128"
2432+
},
2433+
{
2434+
"type": "STRING",
2435+
"value": "i128"
2436+
},
2437+
{
2438+
"type": "STRING",
2439+
"value": "isize"
2440+
},
2441+
{
2442+
"type": "STRING",
2443+
"value": "usize"
2444+
},
2445+
{
2446+
"type": "STRING",
2447+
"value": "f32"
2448+
},
2449+
{
2450+
"type": "STRING",
2451+
"value": "f64"
2452+
},
2453+
{
2454+
"type": "STRING",
2455+
"value": "bool"
2456+
},
2457+
{
2458+
"type": "STRING",
2459+
"value": "str"
2460+
},
2461+
{
2462+
"type": "STRING",
2463+
"value": "char"
2464+
}
2465+
]
2466+
},
2467+
"named": true,
2468+
"value": "primitive_type"
23912469
}
23922470
]
23932471
}

src/node-types.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4348,6 +4348,10 @@
43484348
"type": "lifetime",
43494349
"named": true
43504350
},
4351+
{
4352+
"type": "primitive_type",
4353+
"named": true
4354+
},
43514355
{
43524356
"type": "reference_type",
43534357
"named": true

0 commit comments

Comments
 (0)