Commit Graph

541 Commits

Author SHA1 Message Date
Johnni Winther 7b049152c9 [cfe] Rename ParsedArguments to ParsedOptions
Change-Id: I9fbf7acf7ca717e32382aec89cfb889d5612b67f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/208640
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2021-08-03 18:29:25 +00:00
Johnni Winther 77750abadc [cfe] Use ParsedArguments for parsing test and folder options
Change-Id: I394a95b6d8a1742f6ed1ecb5bc379654cb4b16e5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/208582
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2021-08-03 18:29:25 +00:00
Johnni Winther 7e20b1c2b1 [cfe] Move option parsing code to _fe_analyzer_shared
This is in preparation for using it for parsing .options files in tests.

Change-Id: I1ee750ab48de53c4af03d3ce5082a76328851e47
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/208581
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2021-08-03 18:29:25 +00:00
Riley Porter d63c2dfa83 [package:js] Allow external extension members for Native classes
Change-Id: I5baf81c3c2b6b3a112327e1aea084a93677bd9b5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/208380
Reviewed-by: Srujan Gaddam <srujzs@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Riley Porter <rileyporter@google.com>
2021-07-30 18:43:47 +00:00
Johnni Winther b05892efa1 [cfe] Report compile time error on evaluation of const external constructors
Closes #46123

Change-Id: I91e9b789683b2bd6acb3b4f559ecce6e70f18afc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/207001
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2021-07-30 11:28:04 +00:00
Alexander Markov 730ab0583d Migrate pkg/vm to null safety, part 5
TEST=ci

Issue: https://github.com/dart-lang/sdk/issues/46620
Change-Id: Ifc5fe377b5dd8273a45ca0c28fcd27527baae146
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/208021
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-07-28 18:38:30 +00:00
Riley Porter 16ac19d097 [package:js] Add checks for external extension members.
Reports an error if there are external members in an extension,
where the extension on type is not a JS interop class. A follow
up change will allow extensions with external members on some
Native classes, like dart:html classes.

Change-Id: I01c645aa46e46071aae5f380c5e36329f61d3e18
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/207722
Commit-Queue: Riley Porter <rileyporter@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Srujan Gaddam <srujzs@google.com>
2021-07-28 00:41:43 +00:00
Clement Skau 2f0b352e98 [VM] Adds compile-time error for non-static FfiNative
This makes it a compile-time error to add @FfiNative annotation
to any non-static function, such as an instance method.

TEST=tests/ffi/ffi_native_test.dart,pkg/analyzer/test/src/diagnostics/ffi_native_test.dart

Bug: https://github.com/dart-lang/sdk/issues/43889
Change-Id: Ib9ec61345bb47e735ed635c5ceea15ab643f65a6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/207306
Commit-Queue: Clement Skau <cskau@google.com>
Reviewed-by: Tess Strickland <sstrickl@google.com>
2021-07-20 11:54:30 +00:00
Paul Berry ee38656c0b Fix corner cases of type argument parsing.
Fixes #46635.

Bug: https://github.com/dart-lang/sdk/issues/46635
Change-Id: I4f74f5ad39bfc775f69e4a47892725e1f166f962
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/207201
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-07-19 11:28:29 +00:00
Johnni Winther e92cee7833 [cfe] Add check for constructor tear off on abstract classes
+ add test for inferred types on constructor tear offs
+ avoid creating tear off lowering for abstract classes

Change-Id: I0d7921690ecea090f96a9811d25248e7e02582b4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/206082
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2021-07-08 12:54:44 +00:00
Konstantin Shcheglov d37dc1649b Prepare to publish analyzer 2.0.0 and _fe_analyzer_shared 23.0.0
Change-Id: Ic0cb87caf7cb5bbc44622a7caefdf05a0bb8e435
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/205902
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-07-07 23:58:33 +00:00
Johnni Winther 093bfcd883 [cfe] Migrate remaining front_end/lib/ libraries
Change-Id: Ia6efe9046b80709605aef1e7f38fce523baafa91
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/206081
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2021-07-07 19:11:04 +00:00
Johnni Winther 49e2148dea [cfe] Migrate wave 10 aka the big one
Change-Id: I77a1996fe3ebd3605efc5afc6ff3308f6ebc3cac
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/205580
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2021-07-07 15:18:02 +00:00
Jens Johansen 56df34c8a0 [parser] Don't eat '>>' and '>>>' when ensuring identifier for type variable declaration
This gives better recovery for
https://github.com/dart-lang/sdk/issues/46505
because previously it would ignore (logically delete) '>>', insert an
identifier after, then recover more by inserting '>' and '>'.
Now it instead inserts the identifier before, and the '>>' is later
split into '>' and '>'.

Change-Id: I9e23fde4fc1281424e63ac0ce2b3c9fc85a68772
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/205787
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-07-06 07:14:40 +00:00
Jens Johansen f56dd3f887 [parser] Don't .next to get to an endGroup we're already past
This should technically fix
https://github.com/dart-lang/sdk/issues/46505
but the recovery is still pretty weird.

Change-Id: Ieca7fc1cd680af49f4b6f2f0c280b22d4a23ae15
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/205786
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-07-05 12:24:07 +00:00
Jens Johansen e75d26b76c [parser] Attempt to crash instead of inserting after eof
In reference to https://github.com/dart-lang/sdk/issues/46505 I'd say
it's strictly better to crash than to (get the Analyzer to) go into
an infinite loop.

Change-Id: I6706353061272c8df19f156da6fb6659e3b0e30a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/205785
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-07-05 08:21:37 +00:00
Johnni Winther 268290725d [cfe] Support explicit instantiation
+ add bounds check for implicit instantiation

Closes #46458

Change-Id: I032f79d8ae4ed6944fbad999e067976ff72d94fe
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/204802
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2021-06-25 14:47:45 +00:00
Lasse R.H. Nielsen 43cff26365 Add supertype to enum classes.
TEST= language/enum/enum_test

Change-Id: I83b7fd1c29103c3aa4dc7ad3e41141fb8c62339e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/203564
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-06-25 14:08:16 +00:00
Jens Johansen 4a49580e7e [parser] Consume (and use) identifier looking like start of next top level declaration as class name
Fixes https://github.com/dart-lang/sdk/issues/46346

Change-Id: Ie688d0838b612c2eda157bbf9e2fa799bae96fb1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/203762
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-06-18 10:20:32 +00:00
Jens Johansen 7798c3af14 [parser] Different recovery for symbols with non-identifiers
Instead of getting errors like this:

```
t.dart:6:4: Error: Expected an identifier, but got 'class'.
Try inserting an identifier before 'class'.
  #class.foo;
   ^^^^^
t.dart:6:4: Error: Expected ';' after this.
  #class.foo;
   ^^^^^
t.dart:6:4: Error: 'class' can't be used as an identifier because it's a keyword.
Try renaming this to be an identifier that isn't a keyword.
  #class.foo;
   ^^^^^
t.dart:6:4: Error: Getter not found: 'class'.
  #class.foo;
   ^^^^^
```

we get something like this:

```
t.dart:6:4: Error: 'class' can't be used as an identifier because it's a keyword.
Try renaming this to be an identifier that isn't a keyword.
  #class.foo;
   ^^^^^
```

https://github.com/dart-lang/sdk/issues/46208
https://github.com/dart-lang/sdk/issues/46207

Change-Id: I79da73e600f732d10020c871d11e11c3f7fe740a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/203686
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2021-06-18 08:29:11 +00:00
Dmitry Stefantsov 9c5ac01504 [cfe] Parse 'extension type' phrase when the experiment is enabled
Change-Id: I5db09d82b26ecd6e95bd2ba753eee5304c00a491
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/201268
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-06-16 15:30:27 +00:00
Konstantin Shcheglov 1e445ada4f Remove deprecated ErrorCode.temporary2()
Change-Id: I9c37bedc2841a55e9e24a636e15dc3b9a18cc53b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/202321
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-06-04 15:52:06 +00:00
Paul Berry 40a1ae7fc0 Add parser support for use of new as a constructor name.
The new "constructor tearoffs" feature includes the ability to use the
`new` keyword in a place where an identifier is expected, and that
identifier could denote a constructor name.  We handle this by
replacing the `new` keyword token with an identifier token whose
identifier string is `new` (this should ease the burden on the
implementations, since they are already set up to handle constructor
names that are identifiers).

Since all such situations follow a `.`, and `new` was never previously
allowed after a `.`, the parser treats `new` as an identifier in any
situation where it could possibly refer to a constructor, regardless
of whether the "constructor tearoffs" feature is enabled.  (This
should allow for easier error recovery in the situation where the user
tries to use the feature with a language feature that does not support
it).  It is up to the client to report an error if the feature is
disabled.

In this CL, I've implemented logic for the analyzer to choose whether
to report an error based on whether the feature is enabled.  I've
implemented logic for the CFE to report the error unconditionally.

Bug: https://github.com/dart-lang/sdk/issues/46020, https://github.com/dart-lang/sdk/issues/46044
Change-Id: I36a496688400d2d9f699dd42be4d0ba620cda244
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/201961
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2021-06-02 18:02:35 +00:00
Johnni Winther 10cabb4d08 [cfe] Emit deprecation info for dartext: in 2.14
Closes #45758

Change-Id: I05384487ef1ef9f718a3123f8217c9aa3d4d8f32
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/200879
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2021-05-26 08:50:32 +00:00
Konstantin Shcheglov d696ca2f2b Prepare to publish analyzer 1.6.0 and _fe_analyzer_shared 22.0.0
Change-Id: Ib0ffcccad4284c9200a20576221ba1485b5cdf6b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/201341
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-05-25 21:27:01 +00:00
Paul Berry 126c5fa680 Initial parser support for constructor tear-offs.
This CL adds parser support for use of `<typeArguments>` as a
selector.  This allows expressions like `List<int>` (type literal with
type arguments), `f<int>` (function tear-off with type arguments),
`C.m<int>` (static method tear-off with type arguments), `EXPR.m<int>`
(instance method tear-off with type arguments), and `EXPR<int>`
(tear-off of `.call` method with type arguments).

I will add parser support for `.new` as a constructor name in a
follow-up CL.

Change-Id: I157e732276421e8c3fd20c38c67ae9643993bd85
Bug: https://github.com/dart-lang/sdk/issues/46020, https://github.com/dart-lang/sdk/issues/46044.
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/197102
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2021-05-25 13:58:10 +00:00
Clement Skau 4d5055805f [VM/FFI] Adds FFI leaf calls.
This CL adds FFI leaf calls by adding `lookupFunction(.., isLeaf)`
and `_asFunctionInternal(.., isLeaf)`, which generate FFI leaf calls.
These calls skip a lot of the usual frame building and generated <->
native transition overhead.

`benchmark/FfiCall/` shows a 1.1x - 4.3x speed-up between the regular
FFI calls and their leaf call counterparts (JIT, x64, release).

TEST=Adds `tests/ffi{,_2}/vmspecific_leaf_call_test.dart`. Tested FFI tests.

Closes: https://github.com/dart-lang/sdk/issues/36707
Cq-Include-Trybots: luci.dart.try:vm-precomp-ffi-qemu-linux-release-arm-try,vm-ffi-android-release-arm64-try,vm-ffi-android-release-arm-try,vm-ffi-android-product-arm64-try,vm-ffi-android-product-arm-try,vm-ffi-android-debug-arm64-try,vm-ffi-android-debug-arm-try,vm-kernel-linux-debug-ia32-try,vm-kernel-win-debug-ia32-try,vm-kernel-win-debug-x64-try,vm-kernel-win-release-x64-try,vm-kernel-mac-debug-x64-try,vm-kernel-precomp-nnbd-mac-release-simarm64-try,vm-kernel-precomp-android-release-arm64-try,vm-kernel-precomp-asan-linux-release-x64-try,vm-kernel-precomp-linux-release-simarm_x64-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,vm-kernel-precomp-ubsan-linux-release-x64-try,vm-kernel-precomp-tsan-linux-release-x64-try,vm-kernel-precomp-win-release-x64-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-reload-linux-debug-x64-try
Bug: https://github.com/dart-lang/sdk/issues/36707
Change-Id: Id8824f36b0006bf09951207bd004356fe6e9f46e
Cq-Do-Not-Cancel-Tryjobs: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/179768
Commit-Queue: Clement Skau <cskau@google.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2021-05-21 11:12:02 +00:00
Devon Carew 29f69657e5 update the links to analyzer diagnostics
Change-Id: I293ee9bfe0e7c148a59d0cbb1b927c1edbbd15ce
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/200901
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
2021-05-20 17:05:45 +00:00
Brian Wilkerson 06638483e1 Improve the highlight range for conflicting_generic_interfaces
Change-Id: I4ec19c1ceba747f5f23f7c95462de323fe76ecf6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/200240
Reviewed-by: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-05-18 20:42:33 +00:00
Jens Johansen 7ed18b56d9 [parser] Fix potential infinite loop + too much reading when recovering
Change-Id: I0a60b3b352395192ef0a1405e66827bcdec63007
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/198762
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2021-05-17 09:43:30 +00:00
JustWe b1c961233d [analyzer] verify annotation's const expression deferred imported error.
try to fix: https://github.com/dart-lang/sdk/issues/45418

Closes https://github.com/dart-lang/sdk/pull/45806
https://github.com/dart-lang/sdk/pull/45806

GitOrigin-RevId: 199c3bf0bdd7f834c9e10945a643d489e4b3658f
Change-Id: If465611ac01de679905b5bd7afefb1d9e0a70224
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196640
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-05-14 17:17:58 +00:00
Jens Johansen 7ef0841386 [parser] Don't use potential type arguments if they came via recovery
A few places in the parser we call `computeTypeParamOrArg` and then
either use the result or not depending on whether there's a `(` after
it. That doesn't work well when `computeTypeParamOrArg` does recovery
by for instance inserting a > though.
This CL fixes that - at least in the places we know about.

Fixes #45848.

Change-Id: Id4b62b965131031f43c8ada0fe05045fc9834db3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/197360
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2021-05-03 07:30:28 +00:00
JustWe ac2cd2d73c [vm/ffi] Array dimensions non-positive check in CFE
Bug: https://github.com/dart-lang/sdk/issues/45540
Closes: https://github.com/dart-lang/sdk/pull/45785

TEST=tests/ffi/vmspecific_static_checks_test.dart

GitOrigin-RevId: e4c091a617acf36f60de7ddfc957a58323663813
Change-Id: I393e1dbbf34aa9f72e2e942c3a40c2f37c90e0c4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196246
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
2021-04-27 06:56:28 +00:00
Johnni Winther 30bbd2963b [cfe] Migrate wave 6
Change-Id: I4cdc5b6dd1261841217c823e2b8820b97fe9375a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196664
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2021-04-26 14:05:12 +00:00
Konstantin Shcheglov 9995cf0f37 Add TokenType.binaryOperatorOfCompoundAssignment, use instead of operatorFromCompoundAssignment().
Change-Id: Ib8f116c16a11f0b003988a208703837754d1c0bd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196740
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-04-24 18:46:32 +00:00
Konstantin Shcheglov 6a203ce308 [analyzer] add error check in not binary operator.
try to fix: https://github.com/dart-lang/sdk/issues/45659

Closes https://github.com/dart-lang/sdk/pull/45751
https://github.com/dart-lang/sdk/pull/45751

GitOrigin-RevId: ae4544cd41743ee1a5e0576ee64dd9544990b3d7
Change-Id: Ie4ccb05aa8f3df2d55e474056f69c56d6cca6a62
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/195882
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-04-24 00:04:32 +00:00
Paul Berry e3443b9f53 Flow analysis: implement "why not promoted" for binary/unary operator target.
Bug: https://github.com/dart-lang/sdk/issues/44898
Change-Id: If464a54bdb63fc661db312df5dc10f108049286a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196240
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-04-22 12:21:46 +00:00
Paul Berry 73db2ff205 Replace CFE and analyzer legacy type promotion with a shared implementation.
This allows us to remove a substantial amount of CFE and analyzer
code.

It also fixes a minor CFE type promotion bug
(language_2/type_promotion/assignment_defeats_promotion_lhs_and_test).

TEST=standard trybots
Change-Id: Ia0c159bdb9161d73648c9eb73b92822168f28d84
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175583
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-04-21 14:21:30 +00:00
Paul Berry b6fbee21d9 Flow analysis: additional "why not promoted" test cases.
These test cases already work properly, but they weren't previously
covered by tests.

Bug: https://github.com/dart-lang/sdk/issues/44898
Change-Id: I4fc6506230af203a361631afc542e0db08bd6f27
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196106
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-04-21 13:38:20 +00:00
JustWe 5787ad0381 [CFE] add 'Function' as type identifier check in CFE
try resolve https://github.com/dart-lang/sdk/issues/45705 @eernstg

Closes https://github.com/dart-lang/sdk/pull/45736
https://github.com/dart-lang/sdk/pull/45736

GitOrigin-RevId: 2d91c32a34260014bbd5720e48a713eee180e65b
Change-Id: Ic416287137495926efe1d03da7d484202bd11272
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/195761
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2021-04-21 04:43:48 +00:00
Konstantin Shcheglov 375e878c35 Update nullability for TypeParameterType in tryPromoteToType()
Change-Id: Ifc8c32e3540577437c6448fa943d8cbbfebf0b62
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196105
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-04-20 23:02:08 +00:00
Konstantin Shcheglov b345ef9fb3 Prepare to publish analyzer 1.5.0 and _fe_analyzer_shared 21.0.0
R=brianwilkerson@google.com

Bug: https://github.com/dart-lang/sdk/issues/45728
Change-Id: I03a78cf0d3a0d9819079a16843edf83294170383
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196104
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2021-04-20 22:03:48 +00:00
Paul Berry add079c222 Flow analysis: Fix test function name.
In a previous commit, I accidentally named these test functions
`test`.  Replace with a more descriptive name.

Bug: https://github.com/dart-lang/sdk/issues/44898
Change-Id: I662b6003a893dbb05fea88000f39e4e56b0cb725
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196107
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-04-20 21:59:18 +00:00
Paul Berry 68bb946fc5 Change analyzer ID test offsets for prefixed identifiers.
The ID test offset for a prefixed identifier is now the offset of the
identifier after the `.`.  This makes the analyzer and CFE behaviors
match much more closely, which eliminates a lot of nuisance
differences in the ID test expectations.

Change-Id: Icef1b2bf56b79bcf584d1eb153bdafd575e6cabb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/195483
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-04-16 13:07:01 +00:00
Paul Berry 0ccb2771a3 Analyzer: change extent for assignability errors with named arguments
Previously, if a type mismatch occurred on a named argument, e.g.:

    int.fromEnvironment('foo', defaultValue: 'BAD')

the error would be reported on the entire NamedExpression
(`defaultValue: 'BAD'` in this example).  Now, the error is just
reported on the expression (`'BAD'` in this example).  This makes the
analyzer behavior more self-consistent (since now assignability errors
are now consistently reported at the site of the expression that can't
be assigned).  It also makes the analyzer behavior more consistent
with the CFE.

This will make it possible, in a follow-up CL, to eliminate a lot of
the inconsistencies between analyzer and CFE in the "why not promoted"
ID tests.

Change-Id: I17db256959d730a22a5766f65d5c0736b627f244
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/195489
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-04-15 21:38:37 +00:00
Paul Berry 3397720738 Analyzer: Add id testing for inferred variable types
This parallels the test introduced in
https://dart-review.googlesource.com/c/sdk/+/195260, but it tests the
analyzer rather than the CFE.

Change-Id: I7751abfcad0e91bf903a5dae2136b80c6714ea35
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/195481
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-04-15 16:51:47 +00:00
Kallen Tu 4ac265efe5 [cfe] Universal error message for core errors for const functions.
Change-Id: I58cbbec918adad5e75ed6a7d6b8fb4bf2dcd6c0e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/195380
Reviewed-by: Jake Macdonald <jakemac@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kallen Tu <kallentu@google.com>
2021-04-15 16:42:47 +00:00
Paul Berry ed9def1467 Analyzer: Add id testing for inferred type arguments
This parallels the test introduced in
https://dart-review.googlesource.com/c/sdk/+/195020, but it tests the
analyzer rather than the CFE.

Change-Id: I5ea1b873561f159a0549acbfdf8c1e639b733435
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/195420
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-04-15 12:16:17 +00:00
Paul Berry 2ee741692f Add "why not promoted" support for explicit extension overrides.
Bug: https://github.com/dart-lang/sdk/issues/44898
Change-Id: Iea9300cf2cae52355bfa5a71f773c8136da2c644
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/195306
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-04-15 12:13:27 +00:00
Daco Harkes 8a2b7bb5d5 [vm/ffi] Support Unions
Closes: https://github.com/dart-lang/sdk/issues/38491

tools/test.py ffi ffi_2
TEST=tests/ffi(_2)/(.*)by_value_(*.)_test.dart

Change-Id: I6d29f7e3c3046cda4a15c9b42063c66b064787be
Cq-Include-Trybots: luci.dart.try:dart-sdk-linux-try,dart-sdk-mac-try,dart-sdk-win-try,vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64-try,vm-kernel-asan-linux-release-x64-try,vm-kernel-mac-debug-x64-try,vm-kernel-linux-debug-ia32-try,vm-kernel-linux-debug-x64-try,vm-kernel-nnbd-linux-debug-x64-try,vm-kernel-nnbd-linux-debug-ia32-try,vm-kernel-nnbd-mac-release-x64-try,vm-kernel-nnbd-win-debug-x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-debug-simarm_x64-try,vm-kernel-precomp-nnbd-linux-debug-x64-try,vm-kernel-precomp-win-release-x64-try,vm-kernel-reload-linux-debug-x64-try,vm-kernel-reload-rollback-linux-debug-x64-try,vm-kernel-win-debug-x64-try,vm-kernel-win-debug-ia32-try,vm-precomp-ffi-qemu-linux-release-arm-try,vm-kernel-precomp-obfuscate-linux-release-x64-try,vm-kernel-msan-linux-release-x64-try,vm-kernel-precomp-msan-linux-release-x64-try,vm-kernel-precomp-android-release-arm_x64-try,analyzer-analysis-server-linux-try,vm-kernel-precomp-linux-debug-x64c-try,vm-kernel-linux-debug-x64c-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/194420
Commit-Queue: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2021-04-15 10:16:27 +00:00