Johnni Winther
36641368bb
[cfe] Treat NonNullableByDefault as default in ast-to-text
...
This changes ast-to-text to mark legacy libraries instead of
non-nullable-by-default libraries.
TEST=existing
Change-Id: Ib01147e4ef48c2c5b2ffc6b23547998344dfdf2e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/307121
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
2023-06-08 06:28:50 +00:00
Johnni Winther
2528bf8666
[kernel] Add VariableDeclaration.isHoisted
...
This flag is set when a variable declaration is moved earlier in
order to be available for subsequent code that couldn't contain
its declaration. For instance variables declared in patterns which
needs to be declared before the matching expressions that initialize
them.
TEST=existing expectations tests
Change-Id: I80ab1138f08f725f3e01905c1a57a1483f809328
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291820
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com >
2023-03-30 07:13:40 +00:00
Johnni Winther
6d2e6f9452
[cfe] Improve switch encoding
...
Addresses https://github.com/dart-lang/sdk/issues/51554#issuecomment-1466946211
Closes #51391
TEST=existing
Change-Id: Idec105dcfde4a91d0a21a1907777d6c07e5f01b2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289224
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
2023-03-20 15:21:52 +00:00
Johnni Winther
04e6f4c282
[kernel] Add VariableDeclaration.isSynthesized
...
This adds an [isSynthesized] flag to the [VariableDeclaration] the
signal when the variable doesn't correspond to a variable in the
source code.
The name of a variable can only be `null` if it is synthesized.
Partially in response to
https://github.com/dart-lang/sdk/issues/51554
TEST=existing
Change-Id: I94591971f11da09d210c8b25a2d05e22ca05dc62
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/286961
Reviewed-by: Joshua Litt <joshualitt@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com >
Reviewed-by: Alexander Markov <alexmarkov@google.com >
2023-03-10 11:13:36 +00:00
Johnni Winther
5d44b804cd
[cfe] Avoid unnecessary switch statements
...
This changes the lowering of switch expressions and pattern switch
statements without continue to only use if-then-else
Change-Id: I3bcbb634ec3153a117c4bd6692a276c1c26e648d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279964
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com >
2023-01-31 18:12:44 +00:00
Chloe Stefantsova
b0cc8afcc9
[cfe] Adjust scoping for single-head cases in pattern switches
...
Closes https://github.com/dart-lang/sdk/issues/50898
Closes https://github.com/dart-lang/sdk/issues/51112
Part of https://github.com/dart-lang/sdk/issues/49749
Change-Id: I41d891021e266835bb71094b6096a36a14dd0275
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/280103
Reviewed-by: Johnni Winther <johnniwinther@google.com >
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com >
2023-01-31 13:48:40 +00:00
Johnni Winther
f343c3ceb7
[cfe] Split cached expressions by receiver type
...
This splits cached expression by receiver type such that the initializing
expression for a cached variable isn't stored in the late variable
initializer, if it can be obtained in different ways. For instance having
both a list pattern and a map pattern in the same switch will trigger
caching of the .length property but obtaining expression differ base on
the receiver type, in the first case List.length and in second case
Map.length.
Closes #51138
Closes #51140
Change-Id: Ic4d8ca394a872113114514f72274413b836fdfb5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/280081
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2023-01-30 16:31:50 +00:00
Johnni Winther
68c326f455
[cfe] Refactor pattern matching generation
...
This enables caching during matching.
Closes https://github.com/dart-lang/sdk/issues/50934
Closes https://github.com/dart-lang/sdk/issues/50987
Change-Id: Iae1d8e0989029a193ba77f58338890d9bfa0c09f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279384
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2023-01-25 08:33:38 +00:00
Johnni Winther
c1bb19d002
[cfe] Fix lowering encodings
...
Cleans up some missing promoted variable gets and temporary
variables that were incorrectly marked as final.
Change-Id: I26412efe2dbb45b807ad6aba7f67c27981b1619c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/279011
Reviewed-by: Jens Johansen <jensj@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2023-01-16 10:13:44 +00:00
Chloe Stefantsova
4a8c6fa480
[cfe] Support guards and multiple heads in pattern switch statements
...
Part of https://github.com/dart-lang/sdk/issues/49749
Change-Id: I6c0dcd4bd2cb7921c27168b71f61f1793c8b2a12
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/278182
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Reviewed-by: Johnni Winther <johnniwinther@google.com >
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com >
2023-01-05 11:36:28 +00:00
Chloe Stefantsova
e724a13cd3
[cfe] Implement desugaring for simple switch statements
...
This CL doesn't cover the following features, among others.
* Guard clauses.
* Multiple patterns per case body.
* Labels.
Part of https://github.com/dart-lang/sdk/issues/49749
Change-Id: I8de86785c44eecbe6e2167dc7a97d9281249af3f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/276524
Reviewed-by: Johnni Winther <johnniwinther@google.com >
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com >
2022-12-20 10:12:52 +00:00
Johnni Winther
f85185aaa0
[cfe] Handle patterns in switch cases in BodyBuilder
...
Change-Id: Ib52a0cd077e1cd056cd5150b8b1fddf867aef3ba
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/271706
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2022-11-25 12:33:40 +00:00
Johnni Winther
b7debf00f7
[cfe] Handle pattern events in BodyBuilder
...
This supports pattern listener events in the BodyBuilder without
crashing. Currently no AST is created and only dummy objects are put
on the stack.
Change-Id: I24a29073b578bb9aaa07e84d5177e51428074a94
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/262422
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2022-10-04 13:31:41 +00:00