Commit Graph

6018 Commits

Author SHA1 Message Date
Paul Berry 5d4cd6d589 Breaking changes for analyzer version 0.39.
Change-Id: Ifa9ca24487f93f3eb0ec95eeb64f5bbb5aa32714
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113216
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-10-21 18:23:10 +00:00
Johnni Winther b1b4f6b7e4 [cfe] Allow assignment to late final fields/variables
Change-Id: I0264904fe6f24f4021cef3d6576b54e11fe0a4d4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122143
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-10-21 12:38:51 +00:00
Johnni Winther f1ac6959ab [cfe] Handle mixed if map entries
Closes #38874

Change-Id: I0122ccb9bc91d349c030955332da338830a137c3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121987
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2019-10-21 12:38:11 +00:00
Karl Klose 74d0282179 [infra] Run test suites in pkg/front_end/test with custom test runner
Some tests in pkg/frontend/test are actually test suites written using the
pkg/testing framework.

This change runs these suites using a custom test runner instead of simply
running the test file, which makes the individual test results, timings and
logs available to the test system.

Change-Id: Iae5f37d9bd1b3e9b26c66443fe10e5cca6a6b6bf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118540
Commit-Queue: Karl Klose <karlklose@google.com>
Reviewed-by: Jonas Termansen <sortie@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-10-21 09:03:19 +00:00
Jacob MacDonald 22e249d4d5 update kernel worker to support -D environment defines
Change-Id: Ic73cfcc8dc0bd8b721733e0696b028aa572125e0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121927
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jake Macdonald <jakemac@google.com>
2019-10-18 14:33:08 +00:00
Jens Johansen 8c041c8f8f [parser] Don't clear extraneous covariant token
Change-Id: Ieb722e28001533564668d798cf76748bd25590f3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121323
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-10-18 13:14:28 +00:00
Jens Johansen 3d67e7d6a7 [CFE] Don't try to infer fields not in the output program
Fixes assertion error because it cannot properly infer 'this' for field
not inserted in the ast.

Fixes #38961.

Bug: 38961
Change-Id: I4230fc2d8c47eb84ad2627651f4d7ca2787e5f33
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122141
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-10-18 10:44:28 +00:00
Jens Johansen c1599932f9 [CFE] Fix crash when serializing: "Type parameter #lib1::B::X is not indexed"
Fixes #38944

Bug: 38944
Change-Id: I26bdd06f86c0c0ac0089d34255bcb3ef824affcf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121985
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-10-18 09:40:38 +00:00
Jens Johansen 0c47a8529c [CFE] Fix "Type 'void' not found." bug
Fixes #38943

Bug: 38943
Change-Id: I6086f5f46a67b37a04b21d0053fc7903a83df523
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/122000
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-10-18 06:36:25 +00:00
Dmitry Stefantsov a61c775db8 [cfe] Rename "neither" nullability into "undetermined"
Change-Id: Iad242e4ae11147a4d49a7b19c78c09dcb2977188
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121981
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-10-17 14:39:30 +00:00
Johnni Winther c6cb89c622 [cfe] Replace child nodes in parent nodes on post-traversal
Replace child nodes in parent nodes on post-traversal instead of using
TreeNode.replaceChild and TreeNode.replaceWith

Change-Id: I2f6f908dce0cd38f1d9a68d4183810e2e0cdca71
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121622
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-10-17 12:56:49 +00:00
Johnni Winther 9b3c7f64d8 [cfe] Represent Cascade expressions directly
This is needed to perform lowering during inference.

Some missing expectation files were added as part of the update.

Change-Id: Ifc834617621e8d60518e840dc61f0386fb8d3b92
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121423
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-10-17 12:56:49 +00:00
Johnni Winther c84a9aefa9 [cfe] Remove InternalExpression.replace
The implementations are inlined in the inference visitor. This is a
precursor for replacing .replaceChild use in inference.

Change-Id: Ia9ee088c83ae512880421ba52e651462d62f8486
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121302
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-10-17 12:56:49 +00:00
Jens Johansen 95991df628 [CFE] Fix crash with duplicate field and constructor initialization
Fixes #38938

Bug: 38938
Change-Id: Icee8187c2237289640cf7bfa763c8e614c5f1cb6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121858
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-10-17 10:47:53 +00:00
Johnni Winther 9f1b0fe102 [cfe] Handle explicit extension operator calls
Closes #38895

Change-Id: If8dd84dcd888dc1462f4598aacf0a2da141e2918
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121855
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-10-17 09:39:14 +00:00
Paul Berry 1e3e9ee04c Flow analysis: introduce a debug implementation.
The debug implementation wraps the normal implementation, printing out
input, output, and state at each API call.

Change-Id: Id1641dd889029433877c68e964dcffa0e0d3e8c0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121802
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-10-16 23:00:06 +00:00
Kallen Tu 7b135fc7a6 Differentiate between legacy and sound covariance.
Used to separate the behaviour without the variance experiment flag
turned off and with the flag turned on. Allows for more specific error
descriptions and allows the backend to avoid emitting variance
annotations for legacy covariance and only when the experiment is
enabled, otherwise there is no way of knowing whether the variance is
user specified.

Change-Id: Ia3070a1358e9b0fef10a3ce5057df881b9659832
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121140
Commit-Queue: Kallen Tu <kallentu@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2019-10-16 18:18:06 +00:00
Johnni Winther dee702264b [cfe] Handle named arguments on extensions methods correctly
Closes #38915

Change-Id: Ie11a2508605fb3591347bc1f4cd68de846829328
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121852
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2019-10-16 14:38:23 +00:00
Jens Johansen 504c45fe2b [CFE] Don't cleanup moved parts in uriToSource
After 41d13f0ffe a part that was moved
from a now unreferenced library to another (used) library would still
have it's sources removed from uriToSource.
It shouldn't, and this CL fixes that.

Change-Id: I6a97572d2274198203dcdf35cbbbec7cb667697f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121844
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-10-16 13:31:03 +00:00
Aske Simon Christensen f3294f7083 [cfe] Ignore context when de-duplicating error messages
Change-Id: I44b00ca5277f69fdaa05bb71a5409ea9dabac601
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121061
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2019-10-16 13:02:23 +00:00
Dmitry Stefantsov 23e8f2bcfa [cfe] Verify that Null is always nullable
Closes #38360.

Bug: http://dartbug.com/38360
Change-Id: I073a63bc968f1955a3c23bb8ed42e07b5955568a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120668
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-10-16 11:25:02 +00:00
Aske Simon Christensen f95a1abbee [CFE] Recognize >>> in Symbol when triple-shift flag is enabled
Fixes https://github.com/dart-lang/sdk/issues/37550

Change-Id: I31d942d4fdb09075e330960058d5c3b25d87809d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121382
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2019-10-16 09:56:52 +00:00
Aske Simon Christensen e000482852 [cfe] Better marker length when pointing to a constructor
Change-Id: Ib962babb98e1fbc96231477eac70db0cb366d479
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121300
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2019-10-16 09:47:03 +00:00
Aske Simon Christensen dd140495e7 [cfe] Position on !=
Fixes https://github.com/dart-lang/sdk/issues/35220

Change-Id: I9a9f62b5ba8934dfc8e1162d248146b19e449cb1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121380
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2019-10-16 09:38:23 +00:00
Daco Harkes bdf02028cd [vm/ffi] Remove deprecated methods
Removes deprecated `load`, `store`, `allocate`, `free`, and `asExternalTypedData` methods from Pointer because these have been replace by extension methods and `package:ffi`.

Closes: https://github.com/dart-lang/sdk/issues/38860

Change-Id: I76d21bcfd2fdd6ee504a51db821345125beb92d2
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,app-kernel-linux-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-dartkb-linux-debug-simarm64-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-dartkb-linux-debug-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-dartkb-linux-release-x64-abi-try,vm-kernel-precomp-android-release-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try,vm-kernel-precomp-android-release-arm_x64-try,vm-kernel-reload-mac-release-simdbc64-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-precomp-mac-release-simarm_x64-try,dart-sdk-linux-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121708
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-10-16 01:15:42 +00:00
Paul Berry 69fa72dc17 Flow analysis: split interface and implementation, and add more doc comments.
No functional change.

Change-Id: I67fe2acdacdd68fa5841da087ff973885dc6325f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121772
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-10-15 20:51:08 +00:00
Daco Harkes d82ca1a9c7 [vm/ffi] Remove Struct type argument
This has coupled changes in package:ffi and package:tflite_native which are pinned in DEPS.

This CL includes the required analyzer changes from https://dart-review.googlesource.com/c/sdk/+/121647.

Issue: https://github.com/dart-lang/sdk/issues/38611

Change-Id: I712a886fd28ce0a2954fc42c90e1dfa495057732
Cq-Include-Trybots: luci.dart.try:vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,app-kernel-linux-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-dartkb-linux-debug-simarm64-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-dartkb-linux-debug-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-dartkb-linux-release-x64-abi-try,vm-kernel-precomp-android-release-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-linux-release-simarm-try,vm-kernel-linux-release-simarm64-try,vm-kernel-precomp-android-release-arm_x64-try,vm-kernel-reload-mac-release-simdbc64-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-precomp-mac-release-simarm_x64-try,dart-sdk-linux-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121422
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-10-15 18:35:57 +00:00
Paul Berry 61790a17b6 Flow analysis: add support for non-null assertion operator.
Change-Id: I7a60944a4389b6f7c8e182d5c9b402fcbb05b624
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121100
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-10-12 03:11:03 +00:00
Paul Berry 4e9220efdb Flow analysis: change the way parenthesized expressions are handled.
Instead of forcing the client to provide a way to de-parenthesize an
expression, the client informs flow analysis when a parenthesized
expression is encountered.  This reduces the runtime overhead to zero
for non-parenthesized expressions, and it saves the front end from
having to worry about support for parenthesized expressions (since its
internal representation doesn't care about parentheses).

Change-Id: I0bb6e91c87acaa05591e1b075da18700b11e4aae
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121080
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
2019-10-12 03:11:03 +00:00
Johnni Winther 42dcdf903c [cfe] Handle promoted type variables in getStaticType
Change-Id: I05a748ec800c7c18a52f8444ad030208ea14d268
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121325
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2019-10-11 19:04:48 +00:00
Vyacheslav Egorov 39e7da9ca4 [cfe] Fix ConstructorBuilder.prepareInitializers to refer to actual constructor.
Instead of referring to target constructor that is going to be patched.

Change-Id: Ic98146b69c9e5fbdcc13df86f3293f3d9d4462f0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121328
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-10-11 18:44:18 +00:00
Kallen Tu ff8c704e9b Clean up handleVarianceModifier error handling and move to endTypeVariable.
Change-Id: I526e41511f57b48010d52dbcb7f7d7feb79600da
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120932
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Kallen Tu <kallentu@google.com>
2019-10-11 18:39:28 +00:00
Jens Johansen d374ff8cbc [parser] Allow parser test to add trace to output for easier debugging
With this, once can for instance run
out/ReleaseX64/dart pkg/front_end/test/parser_test.dart -DupdateExpectations=true -Dtrace=true -- parser_test/nnbd/nullCheckOnIndex
and from the output see where stuff was called, e.g.

beginFormalParameters((, MemberKind.TopLevelMethod) (package:front_end/src/fasta/parser/parser.dart:1227:14)

and

       parseGetterOrFormalParameters(f, f, false, MemberKind.TopLevelMethod) (package:front_end/src/fasta/parser/parser.dart:2484:13)
         parseFormalParameters(f, MemberKind.TopLevelMethod) (package:front_end/src/fasta/parser/parser.dart:1153:15)
           parseFormalParametersRest((, MemberKind.TopLevelMethod) (package:front_end/src/fasta/parser/parser.dart:1216:12)
             listener: beginFormalParameters((, MemberKind.TopLevelMethod) (package:front_end/src/fasta/parser/parser.dart:1227:14)

This output should obviouslys not be committed, but is great for debugging.

Change-Id: I42db55ff928bde783d652b6338b54e6dba1550db
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121326
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-10-11 14:05:16 +00:00
Jens Johansen 8d4c5c6f65 [CFE] Add toString on Message for better debugging
If nothing else, it makes parser tests with recorable errors much more
informative.

Change-Id: I12759965d171c1289de1633c63e294779c1986a6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121322
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-10-11 13:18:13 +00:00
Jens Johansen 753c187675 [spell] Add 'reuslt' to blacklist
Change-Id: I405ed69d929710b5f2696d57e05511106f7b2bf2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121324
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-10-11 13:10:36 +00:00
Johnni Winther cd86dbbdeb [cfe] Replace UnknownType in typedef types
Closes #38812

Change-Id: I74f71d023d68123aa1ef4a7e5579be6948a295b0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121303
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2019-10-11 12:47:56 +00:00
Johnni Winther 377409f043 [cfe] Introduce FieldBuilder, FunctionBuilder, and ProcedureBuilder as interfaces
+ reduce ModifierBuilder interface
+ introduce ConstructorScope(Builder) and AmbiguousMemberBuilder
+ reduce use of Builder.target by using the more ligthweight MemberBuilder interface

Change-Id: I6366559f7c85bbd3224ef906505a67a379092686
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121063
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-10-11 10:15:24 +00:00
Jens Johansen b8aef62abd [kernel] Effectively clear extension members before adding new ones when loaing dill if 'shouldWriteData'
Prior to this change, loading a dill with extensions in it twice,
would mean getting the extension members twice.

Change-Id: I766a4a6b0ade98ce9af803db0c696e64821e015a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121064
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-10-11 07:33:03 +00:00
Jens Johansen 5c2b86897c [parser] late is a built-in identifier
Fixes #38803

Change-Id: I2fe7817aa0311c2370222a3205f1a1e02dc9aba4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121120
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-10-11 06:19:13 +00:00
Kallen Tu 5098e90de5 Change subtype check for overrides to handle variance.
Part of variance subtyping changes, variance handled in
overriden methods.

Change-Id: I23db9c9f8b91bb2ac5634a909da9cf47416f94cb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120625
Commit-Queue: Kallen Tu <kallentu@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-10-10 20:04:47 +00:00
Paul Berry fd60a3eeba Flow analysis: generalize handling of ==.
This moves the logic for detecting the patterns `variable == null` and
`null == variable` into flow analysis, so that they don't need to be
replicated in each client.  It also opens the door to potential future
improvements (e.g. allowing `x == expr` to promote `x` to non-nullable
if expr has a non-nullable type).

Change-Id: I51fd9df822e3df1eb8bad5884f767c8b61c496ef
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120934
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-10-10 19:55:22 +00:00
Paul Berry 3dc60dac99 Flow analysis: use a stack of context objects rather than a stack of states.
This will allow us to store more varied context information (which
we'll need to do in order to generalize the handling of `==` in a
follow-up CL).

Change-Id: I85a19004dd4d4845d6fce7d8c0ce3cf0bbec8120
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120933
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-10-10 19:55:22 +00:00
Jens Johansen 18aed26e83 [frontend_server] Wire up incremental serializer into frontend server / package VM
Change-Id: I4d8dbc2d9b0915c654eccae9e35357d7ec9fa13d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120787
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-10-10 11:39:06 +00:00
Johnni Winther 0ee78fac98 [cfe] Rename declaration.dart and procedure_builder.dart
to builder.dart and function_builder.dart to reflect their primary content.

Change-Id: Ib0f9c2970b6a88e4381b0cd7532e4410b72c2a2a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120791
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2019-10-10 08:11:27 +00:00
Johnni Winther 72bae7be70 [cfe] Handle all bounds checks on extension methods.
Closes #38755

Change-Id: I3d5449950ecb3268436a3033ae16bac590a1e4b5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120790
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-10-09 19:50:02 +00:00
Nate Bosch 2ffdc54d24 Handle exported extensions in dill library builder
- Add a modular test to demonstrate the bug.
- Handle `Extension` nodes in `finalizeExports`.

Change-Id: Ie16f0c97059d24a122150a607e26fba258d80cfb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120926
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Nate Bosch <nbosch@google.com>
2019-10-09 18:48:54 +00:00
Paul Berry 89301c3732 Flow analysis: fix tests to pass the correct value to ifStatement_end.
The tests were passing by luck.

Change-Id: I1b44c6d675b59c84e6a6bd70741462d6f29c51e0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120922
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-10-09 18:24:08 +00:00
Paul Berry 88b76997c4 Flow analysis: rework handling of closures.
Rather than suppress all promotions for variables written to in
closures, we track whether a closure might exist that captures a write
to a variable, and only suppress promotions once such a closure
exists.  This is consistent with what is proposed in
https://github.com/dart-lang/language/pull/473.

Contains a repro of #38791.

Change-Id: I4683581908703b510a3231b8fa8ed697121b09da
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120680
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-10-09 18:24:08 +00:00
Paul Berry 144b8eda81 Flow analysis: track variables captured in closures more accurately.
Previously, we considered a variable to be captured by a closure if a
write to that variable occurred anywhere inside a local function.  But
that was overly broad; it meant that we incorrectly classified all
written-to local variables of a local function to be captured.

This CL makes the AssignedVariables logic aware of variable
declaration sites, so that it only considers a variable to be captured
if it is written to at a lower level of local function nesting than
its declaration.  As a side bonus, it means that it can now exclude
out-of-scope variables from all sets of closed-upon and written-to
variables, which should make flow analysis faster by preventing it
from spending a lot of time accounting for variables that aren't
visible.

It also adds tracking of the set of all variables written to and
captured within each top level function.

This partially reverts commit 55466fd3cc.

Change-Id: Ibcd6476445addebed13cfc5ecc470d644e519148
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120800
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-10-09 17:34:51 +00:00
Jens Johansen 41d13f0ffe [CFE] Cleanup unused parts in uriToSource
Change-Id: Ie26fb25a0394999df1c681296ef96a90d51d8c13
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120789
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-10-09 13:28:12 +00:00