Commit Graph

10873 Commits

Author SHA1 Message Date
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
3cb01002dc Add test for usage of qualified enum constants in switch 2023-11-30 11:23:59 +00:00
Chris Smowton
8406ee7ed5 Add test for a pattern-switch guard acting as a data-flow guard 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
e94c5a772c Check nullness pass knows pattern case variables can't be null 2023-11-30 11:23:59 +00:00
Chris Smowton
ca43b9603a Fixup typeflow test 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
79b77ae805 Add AST test for switch with null case 2023-11-30 11:23:58 +00:00
Chris Smowton
05caffc189 Update printast expectation 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
Chris Smowton
7dd4030f51 Pattern cases: support type-flow 2023-11-30 11:23:58 +00:00
Chris Smowton
a06ac42512 PrintAst: report pattern-cases similar to pattern-instanceof 2023-11-30 11:23:58 +00:00
Chris Smowton
b6622d2f5b usesType: support pattern cases 2023-11-30 11:23:58 +00:00
Chris Smowton
0f434e7f08 Add test for dataflow vs. pattern-switch 2023-11-30 11:23:58 +00:00
Chris Smowton
6c990c2cf6 Add pattern-case support and generally debug switch CFGs
These were reasonably broken beforehand, due to not taking switch rules into account in enough places, and confusing the expression/statement switch rule distinction with the distinction between switch statements and expressions.

(For example, `switch(x) { 1 -> System.out.println("Hello world") ... }` is a statement, but has a rule expression).
2023-11-30 11:23:58 +00:00
Chris Smowton
f4b45fa511 Support switch cases with binding patterns 2023-11-30 11:23:58 +00:00
Chris Smowton
e110db58f8 Add test for empty argfile 2023-11-29 12:51:22 +00:00
Ian Lynagh
7560573b89 Merge pull request #14906 from igfoo/igfoo/locs
Kotlin 2: Accept some location changes in test-kotlin2/library-tests/stmts
2023-11-27 11:42:47 +00:00
Stephan Brandauer
68a7734e08 Merge pull request #14849 from github/kaeluka/automodel-extraction-skip-primitive-types-candidates
Java Automodel extraction: remove primitives in framework mode
2023-11-27 09:52:48 +01:00
Stephan Brandauer
2e5971bb57 Java automodel: also drop boxed types and number types from endpoints 2023-11-24 15:04:13 +01:00
Ian Lynagh
b33fcf3719 Kotlin: Accept some location changes in test-kotlin2/library-tests/stmts 2023-11-24 13:34:44 +00:00
Ian Lynagh
c4d3d505ca Kotlin: Accept changes in Kotlin2 ExtractorInformation test 2023-11-23 14:30:50 +00:00
Ian Lynagh
69cfc79561 Kotlin: Add LighterAST support to numlines extraction 2023-11-23 12:02:27 +00:00
Ian Lynagh
1f2d9dc95c Merge pull request #14862 from igfoo/igfoo/test-kotlin1
Kotlin: Move tests from test/kotlin to test-kotlin1
2023-11-22 14:45:13 +00:00
Tom Hvitved
979bcf4ef3 Merge pull request #14868 from hvitved/ssa/locations
SSA: Add locations to ease debugging
2023-11-22 13:26:41 +01:00
Tom Hvitved
1a6886cf99 SSA: Add locations to ease debugging 2023-11-22 08:37:02 +01:00
Ian Lynagh
45bbcccd1a Kotlin: Copy TestUtilities into the kotlin testsuites 2023-11-21 17:16:54 +00:00
Ian Lynagh
1fb19191ba Kotlin: Add a qlpack.yml to the test-kotlin1 tests 2023-11-21 15:31:18 +00:00
Ian Lynagh
f48cc1a526 Kotlin: Move tests from test/kotlin to test-kotlin1
Matches test-kotlin2
2023-11-21 15:28:12 +00:00
Ian Lynagh
1998e29639 Kotlin 2: isFake is currently broken, so assume not fake for now
We'll want to find a Kotlin-2-compatible replacement for this.
2023-11-21 14:37:53 +00:00
Ian Lynagh
6bd269502f Kotlin: Pull out a tryIsHiddenToOvercomeSignatureClash method 2023-11-21 14:36:10 +00:00
Stephan Brandauer
f2de449ce4 Merge branch 'main' into kaeluka/automodel-extraction-skip-primitive-types-candidates 2023-11-21 14:57:24 +01:00
Ian Lynagh
2c2dccabe9 Merge pull request #14833 from igfoo/igfoo/kot2tests
Kotlin: Add a kotlin2 copy of the testsuite
2023-11-21 12:24:49 +00:00
Ian Lynagh
95de7495d1 Kotlin: Fix build with 2.0.0-Beta1 2023-11-20 16:08:02 +00:00
Ian Lynagh
72bafd86df Kotlin: Tweak the regex we use to find the installed Kotlin version 2023-11-20 16:08:02 +00:00
Ian Lynagh
452b68c0ca Kotlin: Add 2.0.0-Beta1 to versions 2023-11-20 16:08:02 +00:00
Max Schaefer
b5c92408f4 Merge pull request #14845 from github/max-schaefer/minor
Automodel: Fix a few nits.
2023-11-20 15:24:45 +00:00
Stephan Brandauer
737aab66f5 Java automodel: drop primitive parameters from endpoints 2023-11-20 15:09:05 +01:00
Stephan Brandauer
e34a9de008 Java Automodel: drop return values of primitive return type methods from consideration for extraction in framework mode 2023-11-20 14:11:14 +01:00
Stephan Brandauer
212a515fa9 Java Automodel: drop return values void methods other than ctors from consideration for extraction in framework mode 2023-11-20 14:00:59 +01:00