Files
zen/core/expression/tests/data/slots.csv
T

53 KiB

1roleunaryscopeexpectedtextstateexpected_tagoptionsoperatorsreplace_spanauto_open
2# Standard start
3conditionfalsebool|startbool0..0true
4conditionfalseboolag|startbool0..2false
5valuefalsestatus|valuestatusopen=Open case,closed=Closed0..0true
6valuefalsenumber|valuenumber0..0true
7valuefalse|start0..0true
8valuefalsebool|valuebool0..0true
9# Value after comparison operators
10conditionfalseboolage == |valuenumber7..7true
11conditionfalseboolage != |valuenumber7..7true
12conditionfalseboolage > |valuenumber6..6true
13conditionfalseboolage >= |valuenumber7..7true
14conditionfalseboolage < |valuenumber6..6true
15conditionfalseboolage <= |valuenumber7..7true
16conditionfalseboolsince < |valuedate8..8true
17conditionfalseboolstatus == |valuestatusopen=Open case,closed=Closed10..10true
18conditionfalseboolstatus != |valuestatusopen=Open case,closed=Closed10..10true
19conditionfalseboolactive == |valuebool10..10true
20conditionfalseboolstatus in |valuestatus[]open=Open case,closed=Closed10..10true
21conditionfalseboolstatus not in |valuestatus[]open=Open case,closed=Closed14..14true
22conditionfalseboolage == 1|valuenumber7..8true
23conditionfalseboolage > -|valuenumber7..7true
24conditionfalseboolage > -5|valuenumber7..8true
25conditionfalsebool(age > 1 and (status == |valuestatusopen=Open case,closed=Closed24..24true
26# Inside string literals
27conditionfalseboolstatus in ['op|inStringstatusopen=Open case11..14true
28valuefalsestring`Hel|lo`inStringstring0..7true
29valuefalsestring`Hello ${name}|inStringstring0..14true
30# List elements and ranges
31conditionfalseboolstatus in [|listElementstatusopen=Open case,closed=Closed11..11true
32conditionfalseboolage in [|listElementnumber8..8true
33conditionfalseboolage in [1..|rangenumber11..11false
34conditionfalseboolage in (1..|rangenumber11..11false
35conditionfalseboolage in [|..5]rangenumber8..8false
36conditionfalseboolsince in [d()..|rangedate15..15false
37conditionfalseboolsince in [|listElementdate10..10true
38conditionfalseboolitems[|startnumber6..6true
39# Operator and logical after a finished operand
40conditionfalseboolage |operator==,!=,<,<=,>,>=,in,not in4..4true
41# Operator menu opens after a complete operand (field path, literal, closed call)
42conditionfalseboolgrounding.status |operator==,!=,in,not in17..17true
43valuefalsestatusgrounding.status |operator==,!=,in,not in17..17true
44conditionfalseboolcustomer.age |operator==,!=,<,<=,>,>=,in,not in13..13true
45conditionfalseboollen(x) |operator==,!=,<,<=,>,>=,in,not in7..7true
46conditionfalseboolname |operator==,!=,in,not in5..5true
47conditionfalseboolstatus |operator==,!=,in,not in7..7true
48conditionfalsebooltags |operatorin,not in5..5true
49conditionfalseboolcustomer.name |operator==,!=,in,not in14..14true
50conditionfalseboolamount |operator==,!=,<,<=,>,>=,in,not in,??7..7true
51conditionfalseboold() |operator==,!=,<,<=,>,>=,in,not in4..4true
52conditionfalseboollen(name) |operator==,!=,<,<=,>,>=,in,not in10..10true
53conditionfalseboolage + 1 |operator==,!=,<,<=,>,>=,in,not in8..8true
54conditionfalseboolactive |logicalbooland,or,==,!=7..7true
55conditionfalseboolnot active |logicalbooland,or11..11true
56conditionfalsebool(age > 1) |logicalbooland,or10..10true
57conditionfalseboolage > 1 |logicalbooland,or8..8true
58conditionfalseboolage > 1|valuenumber6..7true
59conditionfalseboolage > 1 + 2 |logicalbooland,or12..12true
60conditionfalseboolage in [1..5] |logicalbooland,or14..14true
61conditionfalseboolsince > d() |logicalbooland,or12..12true
62conditionfalseboolage > 1 an|logicalbooland,or8..10true
63conditionfalseboolage > 1 and|logicalbooland,or8..11true
64conditionfalseboolage > 1 and age |operator==,!=,<,<=,>,>=,in,not in16..16true
65# Logical connectives, not, ternary, coalesce, arithmetic
66conditionfalseboolage > 1 and |startbool12..12true
67conditionfalseboolage > 1 or |startbool11..11true
68conditionfalsebool((age > 1) and |startbool15..15true
69conditionfalseboolage > 1 and (|startbool13..13true
70conditionfalseboolnot |startbool4..4true
71valuefalsestatusage > 18 ? |valuestatusopen=Open case,closed=Closed11..11true
72valuefalsenumberamount ?? |valuenumber10..10true
73valuefalsenumberage + |startnumber6..6true
74valuefalsenumber{ a: |start5..5true
75valuefalsestring`Hello ${|start9..9true
76# Member access
77conditionfalseboolcustomer.|member9..9false
78conditionfalseboolcustomer.na|member9..11false
79conditionfalseboold().|member4..4false
80conditionfalseboolsome(items, #.|member14..14false
81# Function arguments and closures
82conditionfalseboold(|argumentdate2..2true
83conditionfalseboollen(|argumentany4..4true
84conditionfalseboolcontains(name, |argumentany15..15true
85conditionfalseboolstartsWith(name, |argumentstring17..17true
86conditionfalseboolsince.isAfter(|argumentdate14..14true
87conditionfalseboolsince.diff(d(), |argumentDurationUnitseconds,second,secs,sec,s,minutes,minute,min,mins,m,hours,hour,hr,hrs,h,days,day,d,weeks,week,w,months,month,mo,M,quarters,quarter,qtr,q,years,year,y16..16true
88conditionfalseboolsome(|argumentany[]5..5true
89conditionfalseboolsome(items, |closureobject12..12true
90conditionfalseboolfilter(items, |closureobject14..14true
91conditionfalseboolsome(statuses, |closurestatusopen=Open case,closed=Closed15..15true
92conditionfalseboolsome(items, #.status == |valuestatusopen=Open case,closed=Closed24..24true
93conditionfalseboolsome(statuses, # == |valuestatusopen=Open case,closed=Closed20..20true
94conditionfalseboolsome(items, #.price > 1 |logicalbooland,or24..24true
95conditionfalseboolsome(items, #.price |operator==,!=,<,<=,>,>=,in,not in20..20true
96conditionfalseboolsome(items, #.price > 1 and |closureobject28..28true
97conditionfalseboolsome(items, (#.price > 1 and |closureobject29..29true
98conditionfalseboolsome(items as x, |closureobject17..17true
99conditionfalseboolsome(items as x, x|closureobject17..18false
100conditionfalseboolsome(statuses as s, |closurestatusopen=Open case,closed=Closed20..20true
101conditionfalseboolsome(statuses as s, s == |valuestatusopen=Open case,closed=Closed25..25true
102conditionfalseboolsome(items as x, some(statuses as s, |closurestatusopen=Open case,closed=Closed37..37true
103conditionfalseboollen(name |operator==,!=,in,not in9..9true
104conditionfalseboollen(age |operator==,!=,<,<=,>,>=,in,not in8..8true
105# Unary cells
106unarytrue$status|unaryStartstatusopen=Open case,closed=Closed!=,in,not in0..0true
107unarytrue$status!= |valuestatusopen=Open case,closed=Closed3..3true
108unarytrue$status[|listElementstatusopen=Open case,closed=Closed1..1true
109unarytrue$statusnot in [|listElementstatusopen=Open case,closed=Closed8..8true
110unarytrue$status$ |operator==,!=,in,not in2..2true
111unarytrue$status$ == |valuestatusopen=Open case,closed=Closed5..5true
112unarytrue$number|unaryStartnumber>,>=,<,<=,==,!=,in,not in0..0true
113unarytrue$number> |valuenumber2..2true
114unarytrue$number> 5 |logicalbooland,or4..4true
115unarytrue$number5, |unaryStartnumber>,>=,<,<=,==,!=,in,not in3..3true
116unarytrue$number-5 |logicalbooland,or3..3true
117unarytrue$number[1..|rangenumber4..4false
118unarytrue$number[1..5] |logicalbooland,or7..7true
119unarytrue$number(1..5) or |unaryStartnumber>,>=,<,<=,==,!=,in,not in10..10true
120unarytrue$stringlen($) |operator==,!=,<,<=,>,>=,in,not in7..7true
121unarytrue$date|unaryStartdate>,>=,<,<=,==,!=,in,not in0..0true
122unarytrue$date> d(|argumentdate4..4true
123unarytrue$date[d()..|rangedate6..6false
124unarytrue$date> d() |logicalbooland,or6..6true
125unarytrue$bool|unaryStartbool==,!=0..0true
126unarytrue$bool== |valuebool3..3true
127unarytrue$any|unaryStartany>,>=,<,<=,==,!=,in,not in0..0true
128# Path replace span covers only the last segment
129pathfalsegrounding.stat|path10..14false
130pathfalsegrounding.|path10..10false
131pathfalsegrou|path0..4false
132# Path role and lexer fallback
133pathfalse|path0..0true
134pathfalsecustomer.na|path9..11false
135pathfalsecustomer.na|mepath9..13false
136# Adversarial: unary cells
137unarytrue$number>= 5 and < |valuenumber11..11true
138unarytrue$number$ > 5 and $ < |valuenumber14..14true
139unarytrue$number>|operator>,>=0..1true
140unarytrue$number> |valuenumber4..4true
141unarytrue$number> 5 and|logicalbooland,or4..7true
142unarytrue$number> 5 |)logicalbooland,or4..4true
143unarytrue$number5|unaryStartnumber>,>=,<,<=,==,!=,in,not in0..1true
144unarytrue$number(|rangenumber1..1false
145unarytrue$number[1..5], (|rangenumber9..9false
146unarytrue$number1_000, |unaryStartnumber>,>=,<,<=,==,!=,in,not in7..7true
147unarytrue$statusnot |startbool4..4true
148unarytrue$status== |valuestatusopen=Open case,closed=Closed3..3true
149unarytrue$stringlen($) > |valuenumber9..9true
150unarytrue$date> d().|memberdate6..6false
151unarytrue$booltrue |logicalbooland,or5..5true
152unarytrue$booltr|unaryStartbool==,!=0..2true
153unarytrue$any> |valueany2..2true
154unarytrue$number> 5 and < 10 or |unaryStartnumber>,>=,<,<=,==,!=,in,not in16..16true
155# Adversarial: standard conditions
156conditionfalseboolnot (customer.age > 18 and |startbool27..27true
157conditionfalseboollen(items) > |valuenumber13..13true
158conditionfalseboolage not in (|rangenumber12..12false
159conditionfalseboolage in (|rangenumber8..8false
160conditionfalseboolage not in [|listElementnumber12..12true
161valuefalsestring`hello ${customer.|member18..18false
162conditionfalseboolcustomer.age == -|valuenumber17..17true
163conditionfalsebool1_000 > |valuenumber8..8true
164conditionfalseboolcustomer.address.|member17..17false
165conditionfalseboolorders[0].|member10..10false
166conditionfalsebool(age > 1) == |valuebool13..13true
167conditionfalsebool(name).|member7..7false
168conditionfalseboolstatuses[1:|startnumber11..11true
169conditionfalseboolsum(items, #.|member13..13false
170conditionfalseboolmap(items, #.price) |operatorin,not in20..20true
171conditionfalseboolname == `|inStringstring8..9true
172conditionfalseboolname == `a ${age}` |logicalbooland,or19..19true
173# Adversarial: output values
174valuefalsenumberamount ?? |valuenumber10..10true
175valuefalsenumberage > 18 ? 1 : |valuenumber15..15true
176valuefalsenumber(|startnumber1..1true
177conditionfalseboolcustomer.| == 5member9..9false
178conditionfalseboolage |> 5operator==,!=,<,<=,>,>=,in,not in4..4true
179conditionfalseboolage > 5 |and activelogicalbooland,or8..8true
180conditionfalseboolage > | and activevaluenumber6..6true
181conditionfalseboolage > |5 and activevaluenumber6..6true
182conditionfalsebool|age > 5startbool0..0true
183# Adversarial: nasty input
184conditionfalseboolage > 1))) |logicalbooland,or11..11true
185conditionfalsebool== |value3..3true
186conditionfalseboolstatus == 'op|inStringstatusopen=Open case10..13true
187conditionfalseboolinbound > |valuenumber10..10true
188conditionfalseboolnothing |logicalbooland,or,==,!=8..8true
189conditionfalsebooltrue_value == |valuenumber14..14true
190conditionfalseboolin_progress |logicalbooland,or,==,!=12..12true
191conditionfalseboolcustomer.in|member9..11false
192conditionfalseboolin|startbool0..2false
193conditionfalseboolnot|startbool0..3false
194conditionfalseboolage > 1 and or |startbool15..15true
195conditionfalseboolage > 1 and $root.|member18..18false
196# Adversarial: second batch
197unarytrue$status$ in [|listElementstatusopen=Open case,closed=Closed6..6true
198unarytrue$number>= 5 and <= |valuenumber12..12true
199unarytrue$number> 5 or (|rangenumber8..8false
200unarytrue$number($ > 5 and |startbool11..11true
201unarytrue$number($ > 5 and $ < 10) or |unaryStartnumber>,>=,<,<=,==,!=,in,not in22..22true
202unarytrue$number[1..5], [|listElementnumber9..9true
203unarytrue$number[1, 2, |listElementnumber7..7true
204unarytrue$numberin [1, |listElementnumber7..7true
205unarytrue$numbernot in [1..|rangenumber11..11false
206unarytrue$number-|valuenumber1..1true
207unarytrue$number- |valuenumber2..2true
208unarytrue$number5 |logicalbooland,or2..2true
209unarytrue$number5, 6 |logicalbooland,or5..5true
210unarytrue$number5 - |startnumber4..4true
211unarytrue$number> 5 an|logicalbooland,or4..6true
212unarytrue$number> 5 andrew|logicalbooland,or4..10true
213unarytrue$numberlen(|argumentany4..4true
214unarytrue$numberabs($) > |valuenumber9..9true
215unarytrue$numbertrue |logicalbooland,or5..5true
216unarytrue$string$ == upper(|argumentstring11..11true
217unarytrue$stringlen($) in [|listElementnumber11..11true
218unarytrue$date$.isAfter(|argumentdate10..10true
219unarytrue$date$.isAfter(d(|argumentdate12..12true
220unarytrue$bool== tr|valuebool3..5true
221unarytrue$booltrue or |unaryStartbool==,!=8..8true
222unarytrue$boolnot |startbool4..4true
223unarytrue$any$.|member2..2false
224# Adversarial: standard conditions, second batch
225conditionfalseboolsome(statuses, # in [|listElementstatusopen=Open case,closed=Closed21..21true
226conditionfalseboolsome(statuses, # not in [|listElementstatusopen=Open case,closed=Closed25..25true
227conditionfalseboolsome(items, #.status in [|listElementstatusopen=Open case,closed=Closed25..25true
228conditionfalseboolall(items, #.price > |valuenumber21..21true
229conditionfalseboolnone(items, #.price in [1..|rangenumber27..27false
230conditionfalseboolfilter(items, #.price > 1)[0].|member30..30false
231conditionfalseboollen(filter(items, #.price > 1)) > |valuenumber34..34true
232conditionfalseboolsince.isSame(|argumentdate13..13true
233conditionfalseboolsince.year() == |valuenumber16..16true
234conditionfalseboolsince.year() |operator==,!=,<,<=,>,>=,in,not in13..13true
235conditionfalseboold(since).|member9..9false
236conditionfalseboolage + 1 > |valuenumber10..10true
237conditionfalseboolage * 2 |operator==,!=,<,<=,>,>=,in,not in8..8true
238conditionfalseboolage > age * |startnumber12..12true
239conditionfalseboolnumber(name) > |valuenumber15..15true
240conditionfalseboolage in [18, |listElementnumber12..12true
241conditionfalseboolage in [18, 21] |logicalbooland,or16..16true
242conditionfalseboolage in [18..|rangenumber12..12false
243conditionfalseboolage in (18..|rangenumber12..12false
244conditionfalseboolage not in [1..5] and |startbool22..22true
245conditionfalseboolnot active and |startbool15..15true
246conditionfalseboolnot (active) |logicalbooland,or13..13true
247conditionfalseboolactive == true and |startbool19..19true
248conditionfalseboolactive == |valuebool10..10true
249conditionfalseboolamount > |valuenumber?9..9true
250conditionfalseboolamount ?? 0 > |valuenumber14..14true
251conditionfalsebool(amount ?? 0) > |valuenumber16..16true
252conditionfalsebool$root.customer.status in [|listElementstatusopen=Open case,closed=Closed26..26true
253conditionfalseboolage == 1 + |startnumber11..11true
254conditionfalseboolage == (|startnumber8..8true
255conditionfalseboolage == -(|startnumber9..9true
256conditionfalsebool`${|start3..3true
257conditionfalsebool`${age} |inStringbool0..8false
258# Adversarial: output values, second batch
259valuefalsestatus`|inStringstatusopen=Open case,closed=Closed0..1true
260valuefalsestatuscustomer.status ?? |valuestatusopen=Open case,closed=Closed19..19true
261valuefalsestatuscustomer.|memberstatus9..9false
262valuefalsestatuscustomer.status |operator==,!=,in,not in16..16true
263valuefalsestatusupper(|argumentstring6..6true
264valuefalseboolage > 18 ? |valuebool11..11true
265valuefalseboolage > 18 |logicalbooland,or9..9true
266valuefalseboolage > |valuenumber6..6true
267valuefalseboolage |operator==,!=,<,<=,>,>=,in,not in4..4true
268valuefalseboolactive and |startbool11..11true
269valuefalsenumberage > 18 ? 1 : (|startnumber16..16true
270valuefalsenumber-|valuenumber1..1true
271valuefalsenumber1_000 + |startnumber8..8true
272valuefalsenumbersum(map(items, #.|member17..17false
273valuefalsenumbersum(map(items, #.price)) + |startnumber27..27true
274valuefalsenumberround(amount ?? 0, |argumentnumber19..19true
275valuefalsenumberlen(|argumentany4..4true
276valuefalsenumberage ?? |valuenumber7..7true
277valuefalsedated().add(|argumentany8..8true
278valuefalsedateactive ? since : |valuedate17..17true
279valuefalsedatesince ?? |valuedate9..9true
280valuefalsestring`Hello ${name}, you are ${|start26..26true
281# Adversarial: caret mid-text, second batch
282conditionfalseboold(|) > sinceargumentdate2..2true
283conditionfalseboolsome(items, |#.price > 1)closureobject12..12true
284conditionfalseboolsome(items, #.price > |1)valuenumber22..22true
285conditionfalseboolage in [1..|5]rangenumber11..11false
286conditionfalseboolage in [|1..5]rangenumber8..8false
287unarytrue$number> 5 and |< 10unaryStartnumber>,>=,<,<=,==,!=,in,not in8..8true
288unarytrue$number>| 5operator>,>=0..1true
289# Adversarial: nasty input, second batch
290conditionfalsebool)|startbool1..1true
291conditionfalseboolage > 1) and |startbool13..13true
292conditionfalsebool((age > 1 |logicalbooland,or10..10true
293conditionfalseboolage > > |value8..8true
294conditionfalsebooland |startbool4..4true
295conditionfalsebool, |start2..2true
296conditionfalseboolinbound |operator==,!=,<,<=,>,>=,in,not in8..8true
297conditionfalseboolinbound in [|listElementnumber12..12true
298conditionfalseboolandrew |operator==,!=,in,not in7..7true
299conditionfalseboolnothing == |valuebool11..11true
300conditionfalsebooltrue_value |operator==,!=,<,<=,>,>=,in,not in11..11true
301conditionfalseboolin_progress == |valuebool15..15true
302conditionfalseboolcustomer.in_progress |operator==,!=,<,<=,>,>=,in,not in21..21true
303conditionfalseboolnotin |operator==,!=,<,<=,>,>=,in,not in6..6true
304conditionfalseboolage not in|operator==,!=,<,<=,>,>=,in,not in4..10true
305conditionfalseboolage not |startbool8..8true
306conditionfalseboolage in|operator==,!=,<,<=,>,>=,in,not in4..6true
307conditionfalseboolage i|operator==,!=,<,<=,>,>=,in,not in4..5true
308conditionfalseboolage >= 18 and status i|operator==,!=,in,not in21..22true
309conditionfalseboolnull == |valuenull8..8true
310conditionfalseboolstatus == null |logicalbooland,or15..15true
311conditionfalseboolstatus == |nullvaluestatusopen=Open case,closed=Closed10..10true
312conditionfalseboolage > 1 and (|)startbool13..13true
313# Adversarial: third batch
314unarytrue$status|unaryStartstatusopen=Open case,closed=Closed!=,in,not in3..3true
315unarytrue$statuscustomer.|memberstatus9..9false
316unarytrue$number< |valuenumber2..2true
317unarytrue$number!= |valuenumber3..3true
318unarytrue$number1.|unaryStartnumber>,>=,<,<=,==,!=,in,not in0..2true
319unarytrue$number> 1.5 |logicalbooland,or6..6true
320unarytrue$number> len(|argumentany6..6true
321unarytrue$number> customer.|membernumber11..11false
322unarytrue$number== customer.age |logicalbooland,or16..16true
323unarytrue$number[1..5] or [|listElementnumber11..11true
324unarytrue$number[1, 2] or (|rangenumber11..11false
325unarytrue$number> 5 and < 10 and |unaryStartnumber>,>=,<,<=,==,!=,in,not in17..17true
326unarytrue$number[1..5]|logicalbooland,or6..6false
327unarytrue$date== d(|argumentdate5..5true
328unarytrue$dated(|argumentdate2..2true
329unarytrue$boolfalse |logicalbooland,or6..6true
330unarytrue$bool!= |valuebool3..3true
331unarytrue$any== |valueany3..3true
332conditionfalseboolage > 1.|valuenumber6..8true
333conditionfalsebooltags[0] |operator==,!=,in,not in8..8true
334conditionfalseboolitems[0].|member9..9false
335conditionfalseboolitems[-1].|member10..10false
336conditionfalseboolitems[0].price > |valuenumber17..17true
337conditionfalseboolabs(age - 18) < |valuenumber16..16true
338conditionfalseboolcustomer.address.city |operator==,!=,in,not in22..22true
339conditionfalsebooltr|startbool0..2false
340conditionfalsebooltrue|startbool0..4false
341conditionfalsebooltrue |logicalbooland,or5..5true
342conditionfalseboolnull|startbool0..4false
343conditionfalseboolage == null|valuenumber7..11true
344conditionfalseboolage in [1..5]|logicalbooland,or13..13false
345conditionfalseboolage in [1..5] and age not in (|rangenumber30..30false
346conditionfalseboolage > | garbage herevaluenumber6..6true
347conditionfalsebool(((|startbool3..3true
348conditionfalseboolage <> |value7..7true
349conditionfalseboolage > 1 && |startbool11..11true
350conditionfalseboolstatus == “|startbool13..13true
351valuefalsenumberage > 18 ? age : |valuenumber17..17true
352valuefalseboolnot |startbool4..4true
353valuefalsenumbersum(map(items, #.price)) |operator==,!=,<,<=,>,>=,in,not in25..25true
354valuefalsenumbermax(|argumentany[]4..4true
355pathfalsecustomer.address.|path17..17false
356pathfalsecust|path0..4false
357pathfalse|customerpath0..8false
358pathfalsein|path0..2false
359pathfalsecustomer.|addresspath9..16false
360# Path role: only a bare identifier chain is a path, anything else classifies as a value expression
361pathfalsed(|argumentdate2..2true
362pathfalsecustomer.since.|path15..15false
363pathfalsecustomer.since.isAfter(|argumentdate23..23true
364pathfalsecustomer.name |operator==,!=,in,not in14..14true
365pathfalselen(|argumentany4..4true
366pathfalsecustomer.age + |startnumber15..15true
367# Closure membership: the collection literal takes the enum of the field it is tested against
368conditionfalseboolsome([|], # in statuses)listElementstatusopen=Open case,closed=Closed6..6true
369conditionfalseboolsome([|] as s, s in statuses)listElementstatusopen=Open case,closed=Closed6..6true
370conditionfalseboolsome([|], # in tags)listElement6..6true
371# Auto-open: an operand due (empty editor or after something) opens the menua word under the caret or a member/path prefix does not
372conditionfalseboolactive and |startbool11..11true
373conditionfalseboola > 1 or |startbool9..9true
374valuefalsenumberage + |startnumber6..6true
375conditionfalseboolage > |valuenumber6..6true
376conditionfalseboollen(|argumentany4..4true
377valuefalsenumberx ? |valuenumber4..4true
378valuefalsenumberx ?? |valueany5..5true
379valuefalse[|listElement1..1true
380conditionfalsebool(|startbool1..1true
381conditionfalsebool|startbool0..0true
382conditionfalseboolcust|startbool0..4false
383conditionfalseboolcustomer.|member9..9false
384pathfalse|path0..0true
385pathfalse|path1..1true
386pathfalsecust|path0..4false
387pathfalsecustomer.|path9..9false
388# Const-typed fields offer their literal like a one-member enuma bare literal on the left still widens
389# Nullable operands: inner operators plus ==, != and ??equality values offer null
390conditionfalseboolamount > |valuenumber?9..9true
391conditionfalseboolamount == |valuenumber?null10..10true
392unarytrue$number<|operator<,<=0..1true
393unarytrue$number>=|valuenumber2..2true
394conditionfalseboolage >|operator>,>=4..5true
395conditionfalseboolage ==|valuenumber6..6true
396unarytrue$number=|operator==0..1true
397unarytrue$number!|operator!=0..1true
398conditionfalseboolclaim.amount =|operator==13..14true
399conditionfalseboolname !|operator!=5..6true
400# Glued operator prefixes: the typed operator stays replaceable while longer ones begin with it
401conditionfalseboolage > 1 ?|startbool9..9true
402unarytrue$number>= 1 and >|operator>,>=9..10true
403unarytrue$number>= 1 and >| 2operator>,>=9..10true
404unarytrue$string>|valuestring1..1true
405unarytrue$bool=|operator==0..1true
406unarytrue$bool!|operator!=0..1true
407conditionfalseboolage <|operator<,<=4..5true
408conditionfalseboolage <=|valuenumber6..6true
409conditionfalseboolage ==|valuenumber6..6true
410conditionfalseboolage !=|valuenumber6..6true
411conditionfalseboolage >|operator>,>=4..5true
412conditionfalseboolage >=|valuenumber6..6true
413unarytrue$status=|operator==0..1true
414unarytrue$string=|operator==0..1true
415# Bare bool fields also compareliterals, calls, groups and negations only connect