Commit Graph

9856 Commits

Author SHA1 Message Date
Johnni Winther f3d47ab020 [cfe][InternalNodes] Remove InternalVariable.initializer
This removes the initializer property on InternalVariable together with various other internal delegations to the astVariable to make sure the InternalVariable is behaving has a normal InternalTreeNode.

Change-Id: I1f8469eeb3f80d815f3bb5676bf43e66067b82ca
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/510841
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2026-06-11 06:12:25 -07:00
Johnni Winther 8e2d140fa5 [cfe][InternalNodes] Implement InternalVariable directly
This updates the InternalVariable hierarchy to be based on a sealed base class InternalVariable with no connection to IVariable. IVariable is removed and unused properties of InternalVariable are removed.

TEST=existing

Change-Id: Iacfbe9ab21d1c9aab043712099cd1ee6e4cee174
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/510825
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2026-06-11 02:43:16 -07:00
Johnni Winther c390eb0931 [cfe][InternalNodes] Separate Variable from InternalVariable
This adds an InternalLegacyVariable the doesn't derive from LegacyVariable. This fully separates InternalVariable from Variable and assigned variable tracking and flow analysis is now changed to used InternalVariable instead.

TEST=existing

Change-Id: Ida9dc78d4f0e3fab3baf7a965273e1ddf68a80b8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/510341
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2026-06-11 02:43:16 -07:00
Kilian Schulte dd4f983cee fix location tracking transformer for use in flutter
Closes https://github.com/dart-lang/sdk/pull/63551

GitOrigin-RevId: a14cbbd88c605d193e2a1b744727765c45d38278
Change-Id: Ied6c2fc4ee3b5343c6ab8e38080542d667175f4d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/510160
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2026-06-10 04:15:37 -07:00
Johnni Winther fa2e23b83c [cfe][InternalNodes] Remove unused precise messages
These messages where never used. This was revealed through the separation of Variable and InternalVariable.

Change-Id: I96d337f941d300cc5437c9fa5c9341abe4889176
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/510380
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2026-06-10 00:27:50 -07:00
Johnni Winther 1109842c55 [cfe][PrimaryConstructor] Avoid leak of default value token
This changes to handling of default value tokens on primary constructor fields to eager read the token of the fragment. This avoid leaking the token when field type inference isn't needed for the declared field.

Change-Id: I1cd7a2de7020bd403b843e1f0a456ab26a98e5ff
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/510342
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2026-06-09 06:20:23 -07:00
Johnni Winther ac477b9233 [cfe][InternalNodes] Add more internal nodes
This adds internal nodes for VariableStatement, VariableDeclaration, Let, and ForStatement. The prepares for separating Variable from InternalVariable and allows for the removal of Variable.asVariableDeclaration.

Change-Id: Ib0593f64b3d22ce99c187ab4af32c8dc8cbea6e9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/509980
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2026-06-09 05:27:48 -07:00
Jens Johansen 90d89a0ca1 [CFE] Remove unused enableUnscheduledExperiments
Change-Id: I9d3b498ec0b4ae631cc2240dfad589166eae0c4b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/510340
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2026-06-09 05:25:53 -07:00
Jens Johansen daadde51d8 [CFE] Remove unused compiler option 'declaredVariables'
Change-Id: I78cf7fafa64310e600e864b17b64c4aa3faa7aaa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/509981
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2026-06-09 00:10:30 -07:00
Johnni Winther 19db32f041 [cfe][InternalNodes] Add InternalCatch
This is a step towards separating Variable from InternalVariable.

Change-Id: I5941148e55ae7105a5798df557db512fce3d8255
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/509941
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2026-06-08 05:45:44 -07:00
Johnni Winther 8492bfd7ac [cfe][InternalNodes] Use InternalPattern in PatternForInElement
This changes PatternForInElement to use InternalPattern. With this change InternalPattern is now detached from Pattern and used exclusively as the input to inference.

Change-Id: I62e4255a0f981784fef07ac91f283161f02e3d31
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/509940
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2026-06-08 05:45:44 -07:00
Johnni Winther 27ece1a4b6 [cfe][InternalNodes] Add internal nodes for pattern related statements and expressions
This add internal nodes for nodes related to patterns. This prepares for splitting Variable and InternalVariable.

Change-Id: Idd7f2ced9405491fc9690114494e230a9e88e9b2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/509320
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2026-06-08 02:24:59 -07:00
Johnni Winther 4af16be8f0 [cfe] Add test for issue 63506
This adds a test for the problem reported in #63506. The problem has been fixed recently in https://dart-review.googlesource.com/c/sdk/+/507401

Closes #63506

Change-Id: I568ba16bc6ec62f3b45cd6742ef5f84c7066b230
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/508920
Reviewed-by: Paul Berry <paulberry@google.com>
Auto-Submit: Johnni Winther <johnniwinther@google.com>
2026-06-03 11:17:48 -07:00
Konstantin Shcheglov f8ef9fdb61 Patterns. Fix for parsing nested pattern assigment: 'v2 = (v1) = 0'.
Change-Id: I4b3460dd57834eb52b4703c983ca6f8ed60fe270
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/508684
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2026-06-03 08:52:55 -07:00
Paul Berry 189f25b873 [front_end] Update CFE code generators to use new constructor decl syntax.
(Part of https://github.com/dart-lang/sdk/issues/63288)

This change makes the code generators in the front_end package emit
code that uses the new constructor declaration syntax, described in
https://github.com/dart-lang/language/blob/main/accepted/future-releases/primary-constructors/feature-specification.md#abbreviations-of-in-body-constructor-declarations.

This avoids the need for `ignore_for_file:` comments and gives us a
bit more testing of the new feature.

Change-Id: Ica5c13018a286cd274dba2cf946304446a6a6964
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/507200
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2026-06-03 07:27:41 -07:00
Paul Berry 95b1b8d756 [front_end] Migrate to new constructor decl syntax.
(Part of https://github.com/dart-lang/sdk/issues/63288)

This change migrates the front_end package to use the new
constructor declaration syntax, described in
https://github.com/dart-lang/language/blob/main/accepted/future-releases/primary-constructors/feature-specification.md#abbreviations-of-in-body-constructor-declarations.

This change was performed in an automated fashion, by (a) enabling the
lints `unnecessary_type_name_in_constructor` and
`unnecessary_const_in_enum_constructor`, (b) fixing the resulting lint
failures using `dart fix`, and then (c) reformatting the affected
files.

To ease code review, I've reverted unrelated formatting changes.

Change-Id: I6b48c0f1c762c3fa132fbd79382496ca6a6a6964
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/508368
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
SLSA-Policy-Verified: SLSA Policy Verification Service <devtools-gerritcodereview-exitgate@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2026-06-02 13:34:17 -07:00
Martin Kustermann 3f7dd5c075 [dart2wasm] Do not use CFE lowering for constructor tear-offs
The CFE constructor tear-off lowerings introduce extra static methods.
Tear-off constants refer to them as `StaticTearOffConstant`s. They
just forward the call to the actual generative, factory or
redirecting factory constructors.

We can avoid these intermediary methods by not using the CFE lowerings.

Change-Id: I1dc1203d6b3023cf1f13bc204a2628ec8a3aebc4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/508562
Reviewed-by: Nate Biggs <natebiggs@google.com>
Reviewed-by: Srujan Gaddam <srujzs@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2026-06-02 13:21:23 -07:00
Paul Berry 53a16c16e5 Bump package/front_end to language version 3.13.
This caused a minor change in the textual_outline output formatting,
so a couple of expectation files needed changing to avoid test
failures.

Change-Id: I538f89ff1d2cd7fb5f65b13eab1cf0cb6a6a6964
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/507522
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2026-06-02 09:44:20 -07:00
Johnni Winther 03ba5dabc2 [cfe][InternalNodes] Add InternalPattern hierarchy
This adds an internal class hierarch for patterns. This allows for the internal nodes to use InternalVariable rather than Variable and only contain the fields created during body building. This is a step towards separating Variable and InternalVariable fully.

Change-Id: I0e5241bc7163e0771d3420496b1f5ea02b433c87
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/508561
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2026-06-02 06:08:24 -07:00
Johnni Winther 7749454698 [cfe][PrimaryConstructors] Handle mixin class with primary constructor and fields
Because non-late field initializers in classes with primary constructors have access to the parameters of the primary constructor, field initializers are be moved to the initializer list of this constructor, so the generated AST will no access these parameters out of scope.

This CL add an exception to this rule for mixin classes:

In the non-erroneous cases, these can't have parameters, so the field initializers can stay in the field declaration. This is done to ensure that mixin transformation can
simply clone the mixin class fields, instead of having to fetch the initializer from the initializer list of the constructor.

For mixin classes with parameters in the primary constructor, which is an erroneous case, the initializers are moved to the constructor like for other
primary constructors to avoid generating an AST where the parameters are accessed out of scope.

Change-Id: Iff64992bce88368a524437c1856f50d779bf6a58
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/507423
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2026-06-02 00:11:19 -07:00
Johnni Winther 4070db747a [cfe][PrimaryConstructors] Build initializers in const primary constructors
This updates the handling of initializers in primary constructor body declarations. The parser is updated to pass the `:` token, similar to what is done for the regular constructors. The CFE is updated to use a boolean, rather that the `:` token (or a synthetic token), to determine whether initializers should be processed as part of building the outline. The parsing of initializers is done using the `:` token, if any, now pass both from regular constructors and primary constructor body declarations.

Closes #63468

Change-Id: Ia266dea7946b30b02d56f9f3cedf40848c4ee440
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/507401
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2026-06-02 00:11:19 -07:00
Konstantin Shcheglov b9d3c903a0 Patterns. Report invalidConstantPatternBinary for 'case a.b + c.d'.
Bug: https://github.com/dart-lang/sdk/issues/63356
Change-Id: Id26a0cebf5aa0320e1d3fc62ca630fe8e7716241
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/507580
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2026-06-01 09:53:09 -07:00
Paul Berry 94b953305a [front_end] Adapt parser_ast_indexer to handle new constructor syntax.
Previously, when the code in `parser_ast_indexer.dart` encountered a
constructor, it assumed that it could figure out the constructor's
name by looking at the last identifier (before parameters) of the
signature, and prepending the class name with a `.`. This had the side
effect that "unnamed" constructors were given a name of
`ClassName.ClassName`.

With the new constructor syntax, this doesn't work anymore, because
for unnamed constructors the signature looks like
`new(...parameters...)` or `factory(...parameters...)`, so there are
no identifiers, leading to a crash.

At the moment we don't see the crash because this code is only used to
analyze files within the front end and kernel, which don't use the new
constructor syntax yet. But it blocks us from being able to migrate
the front end and kernel to use the new constructor syntax.

This CL fixes the problem, unblocking the migration.

Change-Id: Ibf78b77d736ab2ec812945401ffacf3f6a6a6964
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/507261
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2026-06-01 07:13:26 -07:00
Johnni Winther 5059d9e842 [cfe][InternalNodes] Add AuxiliaryPattern
This allows for creating internal pattern nodes in the CFE.

Change-Id: Ifad3c29eb7dd329ecd902c7b43fcff58ad862bcc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/508000
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2026-06-01 05:17:24 -07:00
Johnni Winther 0eb19fdba1 [cfe][PrimaryConstructors] Process parameter annotations
This CL ensures the processing of parameter annotations on primary constructors.

Since primary constructors with constructor body declarations are built in two parts, the constructor is not finished when the primary constructor is built, but instead delayed to when the primary constructor body declaration is built. This conditional code path accidentally left parameter annotations unprocessed.

Fixes b/517220569

Change-Id: I8ec82283dc60a743c22cb03c041d2975e95941bc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/507980
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2026-06-01 01:57:46 -07:00
Jens Johansen 6a72255963 [CFE] Incremental compiler sees language version changes
Change-Id: I616abf18e85bf4898799eeb67ca34cc3c2c9d260
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/507323
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2026-05-29 06:30:15 -07:00
Johnni Winther b49f544446 [cfe][Contexts] Infer all initializers as one
This updates the resolver to infer all initializers together with the same visitor, avoiding a lot of book keeping needed to pass and compute scope provider info.

Change-Id: If30ee2b3ed4694af9c28af7a2fad3c2252fba0b5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/507081
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2026-05-29 05:27:03 -07:00
Johnni Winther 06e0f58562 [cfe][Contexts][InternalNodes] Add helpers for creating variables
This adds helpers for creating variables corresponding to the new variable model. This prepares for removing the LegacyVariable and only createing the variables.

This includes a fix for using the new LocalVariable for FunctionDeclaration.

Change-Id: Ib82e12ceb11cf6aa80185bdfeb559461c641dc15
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/506241
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2026-05-29 05:27:03 -07:00
Chloe Stefantsova 849c282e06 [cfe] Add more checks to verification of new variables
* Check that all variables are assigned a context.
* Check that the variable appears exactly once in its enclosing
contexts.
* Check that the variables can be found in their contexts.

Part of https://github.com/dart-lang/sdk/issues/61572

Change-Id: I3ed837c538a4b9933d556cc1f9643422b75a5aa0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/507120
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2026-05-29 03:52:14 -07:00
Johnni Winther 02046380d1 [cfe][Contexts][InternalNodes] Add internal nodes for FunctionNode, FunctionExpression and FunctionDeclaration
This adds internal nodes for FunctionNode, FunctionExpression and FunctionDeclaration which require InternalVariable rather than Variable. This is in preparation for using the new variable model by default.

Change-Id: I3c29954bcaae555c20b37e6a3ba1e70d959f1559
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/506941
Reviewed-by: Slava Egorov <vegorov@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2026-05-29 02:41:29 -07:00
Jens Johansen d441e28656 [CFE/VM] Fix mixin deleting procedure-setter because of final field
Fixes https://github.com/dart-lang/sdk/issues/63440
Tested: Tests added.
Change-Id: I0bdfd71c48ecae6094557fa4f46b8fc4b50afa73
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/506980
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2026-05-28 05:15:07 -07:00
Lasse R.H. Nielsen 69e9d32e87 Retire 'privately-named-parameters' experiment flag.
Change-Id: I6526bd63be5f71090a3ea7f3c705778e7debf584
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505340
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Lasse Nielsen <lrn@google.com>
Reviewed-by: Jonas Jensen <jonasfj@google.com>
2026-05-28 05:13:49 -07:00
Paul Berry 49597f85d9 [front_end,kernel] Add ignores for codegen to prepare for new syntax.
(Part of https://github.com/dart-lang/sdk/issues/63288)

Updates various code generators in the `front_end` and `kernel`
packages to output `ignore_for_file` comments to ignore the
`unnecessary_type_name_in_constructor` lint.

This is a first step towards migrating the `front_end` and `kernel`
packages to use the new constructor declaration syntax, since it will
allow the `unnecessary_type_name_in_constructor` lint to be enabled
without breaking generated code.

Once all the packages have had their SDK constraints bumped to a
language version that supports the new syntax, I'll update the code
generator to use the new syntax, and remove the ignores.

For more information about the new constructor declaration syntax, see
https://github.com/dart-lang/language/blob/main/accepted/future-releases/primary-constructors/feature-specification.md#abbreviations-of-in-body-constructor-declarations.

Change-Id: I73fd960a7eea2a1a59316602c49d56816a6a6964
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/506380
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2026-05-27 10:11:50 -07:00
Erik Ernst 3263555dc5 Start implementation of anonymous block methods
This CL introduces support for anonymous block methods (that is,
`e.{ print(this); }` as opposed to `e.=> print(this);`). It introduces
the notion of a `ReturnContext` which is used to change the semantics
of a return statement when it returns from an anonymous method (where
it works like a `break` that terminates the execution of the block
which is the body of the enclosing anonymous method), but keeps the
semantics of return statements returning from a function (including
function literals) still have the same semantics as today.

Change-Id: I404459361fbb7c2e495e46d1bd29924063f3aac4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/503800
SLSA-Policy-Verified: SLSA Policy Verification Service <devtools-gerritcodereview-exitgate@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
2026-05-27 06:04:46 -07:00
Jens Johansen b59608241f [CFE] Scope calculator handles parameters and initializing formals special
* The VM stops at the last parameter at which point the last parameter
   should also (pretend) to be in scope.
 * We should have initializing (super) formals in scope in the parameter
   list and in the initializer list but not in the body.

Small step towards https://github.com/dart-lang/sdk/issues/62645

Change-Id: I94442e1709a2e14613d81617f8153d9e2b11d889
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/500460
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2026-05-27 02:49:19 -07:00
Jens Johansen b69989fa35 [CFE] Incremental suite: Do more equality testing
Change-Id: I2e4ebf9d12a8cae0481bf2a7022d4fa801fcf4fe
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505821
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2026-05-27 01:33:47 -07:00
Johnni Winther a04691a8a8 [kernel][Contexts] Serialize new local variables
This adds serialization of the new local variables, VariableStatement and VariableDeclaration. This prepares for replacing LegacyVariable with the new variables in all backends.

TEST=existing

Change-Id: I9bbebfbfd372042d6b7027f0fabd24c165699832
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/506240
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2026-05-27 00:41:34 -07:00
Johnni Winther 5111553828 [kernel][Contexts] Add LateVariable
This adds a separate node for late variables, allowing for specializing its interface.

Change-Id: Id83308ce8bb2e36e5fe23adb201859af1275897f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505840
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2026-05-27 00:41:34 -07:00
Johnni Winther f9fadc80da [cfe][Contexts] Remove constant evaluator work-around
Closes #63414

Change-Id: Iac2cd204d70138676ece9d8d438f1a5f01c1bad4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505820
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2026-05-27 00:41:34 -07:00
Johnni Winther 6b693e00bc [kernel][Contexts] Add VariableDeclaration
This adds a VariableDeclaration node which is used in ForStatement instead of VariableStatement.

This is a step towards removing the initializer from Variable. Long term, VariableDeclaration will own the initializer expression for variables and function parameters will have a defaultValue property instead of using the initializer property for the default value.

TEST=existing

Change-Id: I4a663eeb6006a0f9f098fb2b3e3b502d2ae583b0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505681
Reviewed-by: Stephen Adams <sra@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
2026-05-27 00:41:34 -07:00
Jens Johansen 7e348949c1 [CFE] Incremental compiler can load additionalDillModules
Change-Id: I8de4c703377eabacd4e423d5a2045f9411da11a6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505301
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2026-05-26 23:58:20 -07:00
Jens Johansen a1a881b49f [CFE] Refactor incremental suite
This was done while trying to implement loading additional dill modules
via the incremental compiler, but I believe I've removed all that and
only left the refactoring in this CL.

Change-Id: I047940b5dfe526ddfbc11627a29fc80eb82c3049
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505260
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2026-05-26 23:24:56 -07:00
Chloe Stefantsova fb4752caaf [cfe] Account for initializer positioning during context allocation
This is a follow-up to the following:
https://dart-review.googlesource.com/c/sdk/+/496620/comment/4657bd83_ae92ec84/,
https://dart-review.googlesource.com/c/sdk/+/504202/comment/0b351223_6256c5d5/,
https://dart-review.googlesource.com/c/sdk/+/504202/comment/cd735d7c_7aa7970a/,
https://dart-review.googlesource.com/c/sdk/+/496620/comment/4e4662bc_e3ad4617/.

Part of https://github.com/dart-lang/sdk/issues/61572

Change-Id: I2849e58e5e6a7cd502eaa214b7835d564e5e4549
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505682
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
2026-05-25 23:51:47 -07:00
Konstantin Shcheglov 4629bff7e9 Augment. Report extensionTypeAugmentationSpecifiesRepresentationField.
Add a syntactic diagnostic for extension type augmentations that declare
representation fields. Extension type augmentations may augment the
declaration, but they must not redeclare the representation.

Thread an explicit parser option through primary constructor parsing so
extension type augmentations can omit a representation without producing
the usual missing-primary-constructor diagnostics, while still reporting
an error when a representation is present.

Register the new diagnostic in the shared and analyzer generated
diagnostic tables and add it to fix status tracking.

Change-Id: I84815bb0669a76126564e590760e93096a3af046
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505860
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
SLSA-Policy-Verified: SLSA Policy Verification Service <devtools-gerritcodereview-exitgate@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2026-05-22 17:36:54 -07:00
Jens Johansen b149fe9587 [CFE] Rename and move things in incremental suite
This only renames and moves procedures.
Attempt to make refactor CL smaller (part 2).

Change-Id: Id46b86f6af09eb8b25ea5c5c20e547dcb65ed2b7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505222
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2026-05-22 07:28:33 -07:00
Jens Johansen 1d863d8ce7 [CFE] Sort incremental suite
This is only sorted via "Dart: Sort Members".
Attempt to make refactor CL smaller (part 1).

Change-Id: Id1ba5669ddb3f9390ab95f8f83a943125ebbd9d9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505300
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2026-05-22 07:17:42 -07:00
Erik Ernst 945978f5c0 Change code generation for dart2js to enable capturing
This CL changes the code generation for `dart2js` (and not for any other
backend) such that the variable holding the receiver of an anonymous
method invocation is declared as a normal local variable rather than
being a `Let` variable. This is needed because `dart2js` supports
capturing the former, but not the latter.

Change-Id: I054805f7006306186f2c6dfe36d7162b42293ae1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/503420
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
SLSA-Policy-Verified: SLSA Policy Verification Service <devtools-gerritcodereview-exitgate@google.com>
2026-05-21 04:22:30 -07:00
Johnni Winther d18803c5be [kernel][Contexts] Move initializer from VariableInitialization to Variable
This is a step back towards the end goal of separating Variable its initializer. This is done in order to normalize the encoding between the old and the new variable model, such that the split can be perform in both the old and new model simultaneously.

TEST=existing

Change-Id: I3ad6595613c06812d95dff3cabbca6eb05dc1c98
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/505000
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2026-05-21 01:51:10 -07:00
Johnni Winther 80c9d57250 [kernel][Contexts] Rename VariableDeclaration to Variable
This is a step towards split variables from their declarations as part of encoding variables and their usage more precisely.

TEST=existing

Change-Id: I4a0eeb2947bdebce3667afda4e6cfbfdf5d7de18
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/504201
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
SLSA-Policy-Verified: SLSA Policy Verification Service <devtools-gerritcodereview-exitgate@google.com>
2026-05-21 01:51:10 -07:00
Chloe Stefantsova e7461ea9e7 [cfe] Adjust initializer's parent in ConstantsTransformer
The parent of the initializer is set to the `VariableInitialization`
node, while previously it was set to the corresponding variable. There
is no observable change for the ouptut for the old variables. For the
new variables, the adjustments restores the expected parent relation
and addresses some verification issues.

Part of https://github.com/dart-lang/sdk/issues/61572

Change-Id: Ie81b1a06078867076c4aad42fb213fd09e4a3f73
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/504960
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
2026-05-20 06:22:16 -07:00