Chris Smowton
6b3080ae92
Allow case null, default to be the first switch case
...
This is consistent with existing treatment of `case null: default:`
2023-11-30 11:24:04 +00:00
Chris Smowton
0b08507033
Document testedBranch
2023-11-30 11:24:04 +00:00
Chris Smowton
ba0a05c804
Add pretty-printing for patterns
2023-11-30 11:24:04 +00:00
Chris Smowton
668f445fb4
Fix switchCaseControls and hasBranchEdge to account for mixed patterns and constant cases
2023-11-30 11:24:04 +00:00
Chris Smowton
c1814408f0
Fix guard basic block for switch cases
2023-11-30 11:24:04 +00:00
Chris Smowton
6583c72c5d
Restrict pattern type guards to account for nested record matching failures
2023-11-30 11:24:03 +00:00
Chris Smowton
d40311efe9
Spelling
2023-11-30 11:24:03 +00:00
Chris Smowton
6e868d21bd
Make DefaultCase include NullDefaultCase
2023-11-30 11:24:03 +00:00
Chris Smowton
d2ff1baff0
Replace getDefaultOrNullDefaultCase with getDefaultCase
2023-11-30 11:24:03 +00:00
Chris Smowton
0bb051e08c
First stab at implementing negative type-test logic for pattern-case
2023-11-30 11:24:03 +00:00
Chris Smowton
b11a17db21
Improve change note
2023-11-30 11:24:03 +00:00
Chris Smowton
ab9f2a77e4
Move comments
2023-11-30 11:24:03 +00:00
Chris Smowton
cc373e322f
Engineer join order for getLexicallyOrderedRecordField
2023-11-30 11:24:03 +00:00
Chris Smowton
6fb33e0bde
Re-re-factor instanceOfGuarded et al
2023-11-30 11:24:03 +00:00
Chris Smowton
06d5233523
Use SwitchCase.getSelectorExpr
2023-11-30 11:24:03 +00:00
Chris Smowton
b731b8d30a
Simplify PatternExpr definition
2023-11-30 11:24:02 +00:00
Chris Smowton
3d980b1684
Switch to using VariableAssign for instanceof and switch dataflow
2023-11-30 11:24:02 +00:00
Chris Smowton
176adf4376
Move PatternExpr to correct file
2023-11-30 11:24:02 +00:00
Chris Smowton
8f10d29f68
Typo
2023-11-30 11:24:02 +00:00
Chris Smowton
de2b98f4a1
Fix hasNullCase
2023-11-30 11:24:02 +00:00
Chris Smowton
158f4bff7a
Note specific switch bugfix
2023-11-30 11:24:02 +00:00
Chris Smowton
fa09be0459
Ensure pattern-case and binding-instanceof are covered in all of type, dispatch and object flow
2023-11-30 11:24:02 +00:00
Chris Smowton
0e3f6f7873
autoformat
2023-11-30 11:24:01 +00:00
Chris Smowton
9035ba1f30
Fix isImplicitInit; use it in empty-container query
2023-11-30 11:24:01 +00:00
Chris Smowton
7106ec77bc
Fix change note
2023-11-30 11:24:01 +00:00
Chris Smowton
2a6e86633d
Improve qldoc
2023-11-30 11:24:01 +00:00
Chris Smowton
a335109a20
Note that instanceof with a record pattern doesn't have a type access
2023-11-30 11:24:01 +00:00
Chris Smowton
11444a3ae7
Rename Pattern to PatternExpr to avoid clashing with Regex::Pattern
2023-11-30 11:24:01 +00:00
Chris Smowton
023615386b
Add change note
2023-11-30 11:24:01 +00:00
Chris Smowton
ded8deceaa
Add missing qldoc
2023-11-30 11:24:01 +00:00
Chris Smowton
db5979f1ac
Autoformat upgrade/downgrade scripts
2023-11-30 11:24:01 +00:00
Chris Smowton
04c9f60d96
Make up some stats for new expressions, setting canonical constructors as common as records and new expression kinds initially rare
2023-11-30 11:24:00 +00:00
Chris Smowton
3cdb1d29f1
Add upgrade and downgrade scripts for latest dbscheme
2023-11-30 11:24:00 +00:00
Chris Smowton
330a5b8c6c
autoformat ql
2023-11-30 11:24:00 +00:00
Chris Smowton
5b734fe937
Pretty-print AST: handle instanceof with record pattern
2023-11-30 11:24:00 +00:00
Chris Smowton
f037030c26
Adapt instanceof CFG and DFG to general patterns
2023-11-30 11:24:00 +00:00
Chris Smowton
20b97af02f
Implement dataflow for record patterns
...
Strategy: there is now a regular flow step from an instance-of LHS / switch expr to the pattern, 0 or more read steps corresponding to record pattern destructors, and then finally a normal SSA def/use step connecting the binding patterns to their first uses.
2023-11-30 11:24:00 +00:00
Chris Smowton
05addde957
Adapt control-flow graph to record patterns
2023-11-30 11:24:00 +00:00
Chris Smowton
556feb31f0
Autoformat
2023-11-30 11:24:00 +00:00
Chris Smowton
936c0206ea
Adapt ancillary analyses to record patterns
2023-11-30 11:23:59 +00:00
Chris Smowton
daccd04087
Basic extraction of record patterns
2023-11-30 11:23:59 +00:00
Chris Smowton
293cc67494
Fix stringifying record fields
2023-11-30 11:23:59 +00:00
Chris Smowton
144218e2f7
Implement switch CFG when there are mixed constant and pattern cases
2023-11-30 11:23:59 +00:00
Chris Smowton
54a89d6fef
Handle 'case null, default:'
2023-11-30 11:23:59 +00:00
Chris Smowton
9a450b09be
Account for pattern-cases in more places
2023-11-30 11:23:59 +00:00
Chris Smowton
2b16121638
CFG: Support guarded patterns
2023-11-30 11:23:59 +00:00
Chris Smowton
ba0f3cf718
Add basic support for case guards
2023-11-30 11:23:59 +00:00
Chris Smowton
6b9aed21df
Nullness library: recognise switches with null checks
2023-11-30 11:23:58 +00:00
Chris Smowton
30c5885966
Fix constant cases relating to enum types
2023-11-30 11:23:58 +00:00
Chris Smowton
b21aaa75bc
Type-flow: treat pattern-switch on an array index similar to instanceof
2023-11-30 11:23:58 +00:00