Commit Graph

1972 Commits

Author SHA1 Message Date
Johnni Winther 9ea09ce17b [cfe] Improve message on final variable assignment
Closes #40242

Change-Id: Iccdfbf01da18ddd501dc705b678358c974003551
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140654
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2020-03-24 13:11:29 +00:00
Johnni Winther 62f84880ef [cfe] Report error on missing return from non-nullable function
Closes #40520
Closes #40948
Closes #40425

Change-Id: I0aa3cfa51b410c90dd0bea963846eeb6b2e73efb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140540
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2020-03-24 08:21:36 +00:00
Johnni Winther 7ec1d20122 [cfe] Fix explicition extension index set key type
Closes #39527

Change-Id: Ic55498bbf72cf720dadf3fa7f816c7bae1715b52
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140401
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2020-03-24 06:52:46 +00:00
Johnni Winther 9605fc367f [cfe] Report error on required named parameters overriding optional named parameters
Closes #40950

Change-Id: I5d829affd3df9ca66d5a1b632f364779bdcfb2ac
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140541
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2020-03-24 06:22:16 +00:00
Johnni Winther 4620d8fc6b [cfe] Add context to member type inference errors
Change-Id: I968ac9a9e561ff37bfc25ac91e000578b023646d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140500
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-23 19:34:03 +00:00
Lasse R.H. Nielsen 8ab3dcf709 Make ArgumentError.check* functions return the valid argument.
This makes these checks useful in situations where you don't want to spend
an extra statement, like `=>` bodies or initializer lists (including
forwarding generative constructors).

Change-Id: Ia55b8741a7c75af631db48ac70e64597d8f96c73
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/135649
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
2020-03-23 18:00:09 +00:00
Johnni Winther 4e1954fa08 [cfe] Infer loadLibrary return a non-nullable future
Closes #41122

Change-Id: I1ca82e27cc73900e19369d152cec4f7a7621777b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140400
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2020-03-23 17:24:43 +00:00
Johnni Winther b8544e8220 [cfe] Don't report nnbd errors/warnings in top level inference
Closes #41102

Change-Id: Ieede171d92aa28b0ad9478a1b4293ddf35418d7e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140040
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2020-03-23 16:39:03 +00:00
Dmitry Stefantsov d9f485b241 [cfe] Restrict nullable typedefs to nonfunction-type-aliases
Change-Id: I1ca5a44159d6b9c514606c8ea1c4535880b697bf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140286
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2020-03-23 16:21:03 +00:00
Johnni Winther d2e96aa6d3 [cfe] Report error on (un)assigned late variables
Closes #40601
Closes #41103
Closes #40946

Change-Id: I1a28f497ffe0be3d1f9e673f1e8be7a518bbfc7e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140403
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-23 14:48:53 +00:00
Jens Johansen feefcf0c94 [kernel/CFE] Simplified toString on (ast) nodes
This is a bare-bones implementation (and test) for having an explicit
toString on all `Node`s.
This can then be extended as-needed to better suit our debugging
purposes. It's not allowed to leak, though.

Change-Id: I8d3f5a9cd13b292ed7a6bf33762e507286f3fa7d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139805
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2020-03-23 10:25:23 +00:00
Johnni Winther 0e75a0650f [cfe] Handle mixing in Function
Closes #35477
Closes #35573

Change-Id: I0612641108caf1fa08da1aae7684e7f33dfe3b46
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140402
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-23 09:56:30 +00:00
Johnni Winther 2049335af3 [cfe] Improve message on ambiguous extension member access
Closes #40862

Change-Id: I7cc2c0cfbbc878709dc3ad645d8a4b37094056c9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140520
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2020-03-23 09:33:20 +00:00
Johnni Winther ed38d08e51 [cfe] Omit warning when extending/implementing Function
Change-Id: I44cf613c4aa654818d7bd53de555cfe60f34429d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140404
Auto-Submit: Johnni Winther <johnniwinther@google.com>
Reviewed-by: David Morgan <davidmorgan@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: David Morgan <davidmorgan@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2020-03-23 08:47:20 +00:00
Johnni Winther 8617084832 [cfe] Refactor getter/setter/method type inference.
This removes the need for member type inference during override
checking.

Change-Id: I67e2da91cda362b0dda1f5ab6791db458fae6c92
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139815
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-21 11:48:46 +00:00
Johnni Winther eb4880beca [cfe] Don't include Function in Class.supertype and Class.implementedTypes
Change-Id: Ib510080a331915a66a0ca51507f8f2bcd29940c0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140042
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2020-03-20 16:48:09 +00:00
Johnni Winther 6dff390dec [cfe] Compute consolidated supertypes
Change-Id: Ifa2303afd61af184b171f13f5959b0786273cedb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140041
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-19 15:26:09 +00:00
Dmitry Stefantsov 3b6935f30e [cfe] Report NNBD warnings as errors in strong mode
Closes #40981.

Bug: https://github.com/dart-lang/sdk/issues/40981
Change-Id: I95715ab973a6f09bf7f8b4e090e5a80663cd4861
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139463
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2020-03-19 11:26:39 +00:00
Johnni Winther bd9cb563a4 [cfe] Handle forwarding constructors in hasConstConstructor computation
Closes #41070

Change-Id: If2f7120a29de97b4690f867c60aa6e21b1b777d5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139806
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-17 15:25:33 +00:00
Johnni Winther 5721a33077 [cfe] Compute signature as part of override dependencies
Change-Id: I893a8a31d78185ee73a8d175e63f13194e1cb991
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139501
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-17 14:42:02 +00:00
Dmitry Stefantsov 928f9fc932 [cfe] Remove flag --force-nnbd-checks
The checks are now always enabled for the "non-nullable" experiment

Closes #40980.

Bug: https://github.com/dart-lang/sdk/issues/40980
Change-Id: I32a141a93f0ba86ebdab554e1f312c2147927993
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139440
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
2020-03-16 15:01:38 +00:00
Johnni Winther d2950737b8 [cfe] Add test for covariant late final fields
Closes #40805

Change-Id: I896bce935803a951cfb8c9c0d0f70a6227de2413
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139464
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-16 08:30:08 +00:00
Johnni Winther e470662897 [cfe] Report error on opt-in exporting opt-out
Closes #41032

Change-Id: I45fbb4c5cc5e723d3638ceb650909764d5c8012d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139460
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-16 08:28:17 +00:00
Jens Johansen 0768b8e6cd [CFE] Better and more errors on type parameters when they're not allowed
Change-Id: Iefcc31ca09b76cced003cdfea7256a1b898dc3a9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139204
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2020-03-13 12:39:50 +00:00
Johnni Winther a303769fad [cfe] Use legacy erasure on constraint solving
Closes #40909

Change-Id: Ifd37037b27f978a0948309f134523c570af25c56
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139284
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2020-03-13 11:51:10 +00:00
Johnni Winther a5eb0b559c [cfe] Handle callable extension getters
Closes #40596
Closes #40713
Closes #39889

Change-Id: I183560b912e2f6f2c02d51278c0d28c8a6d67f99
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139203
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-13 10:46:39 +00:00
Johnni Winther 6c6144bb74 [cfe] Implement consolidated in ClassHierarchyBuilder
Closes #40414 and #40156



Change-Id: I066aa8ceef4f998230215fd9e9b446b2281cc3bc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138294
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2020-03-13 08:16:49 +00:00
Johnni Winther e865bd89d1 [cfe] Normalize nullabilities in opt out libraries
Closes #40526

Change-Id: Idf40bd430fad0f08d7cc117f988bfc5e2b432a46
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/139200
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-12 21:58:17 +00:00
Johnni Winther ae2a25c537 [cfe] Handle FutureOr in late lowering
Closes #40783

Change-Id: Ia3afff050df8719bd7574c753639cde1ca321eff
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138930
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-12 21:55:46 +00:00
Jens Johansen ff9d548141 [CFE] Error in outline and recover from type parameter in static field in class part 2
Change-Id: I48c1b65424c0e1df9b7f95e83b1793a1b5cdee90
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138921
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2020-03-12 12:23:42 +00:00
Leaf Petersen 5e9be81d5e Make all CastErrors be TypeErrors.
This makes CastError implement TypeError, and changes all test
expectations to look for TypeError.  A followup CL will deprecate
CastError.

Bug: https://github.com/dart-lang/language/issues/787
Bug: https://github.com/dart-lang/sdk/issues/34097
Change-Id: I7102c6260901317572d2df08c4be9c4c48197688
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138670
Reviewed-by: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2020-03-11 23:31:06 +00:00
Jens Johansen e6a1e70960 [CFE] Error in outline and recover from type parameter in static field in class
Change-Id: I7127a6acd85c3133912d70abb28285989aeeae61
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138809
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2020-03-11 07:48:49 +00:00
Jens Johansen 7ac22948e5 [CFE] More error for type variable in static contexts
Bug: 40918
Change-Id: Ibd7efa6618ea732a42bfb0042d5e9ef9bc8c0d8f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138803
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2020-03-10 13:26:30 +00:00
Clement Skau b681bfd8d2 [VM] Fixes bad reuse/typing of temps in async transform invocations.
For a method invocation temps might get allocated for both the receiver
and argument(s) so that:
  A().foo(await null)
becomes:
  Future<void> tmp0
  ...
  tmp0 = A() // <- Type mismatch.
  yield ...
  tmp0 = tmp0.foo(:result) // <- Correct type.

This happens because the liveness analysis finds that the (previously
dynamic) temps can be reused.
Unfortunately 121988 added typing information to these temps, which
means they can't be simply reused in all cases.

This fix makes the temps dynamic again (by removing the type) but adds
unsafecasts to all VariableGets to propagate the know type.

Bug: https://github.com/flutter/flutter/issues/51828
Change-Id: I89c82763e0d4f8b102bb55dec3b694d017345517
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138500
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Clement Skau <cskau@google.com>
2020-03-06 12:20:45 +00:00
Konstantin Shcheglov 0649115b06 Rename VoidWithTypeParameters to VoidWithTypeArguments.
Change-Id: I5df6a49f0b27b6edfe2ce0f677d5f898900d8384
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138341
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-03-05 17:31:34 +00:00
Jens Johansen a8c7757589 [CFE] Don't hard-code uncertain version numbers in messages or tests
Instead don't mention them (until they are certain), and make them
certain in tests, by setting a specific version (2.9999 in this case).

Change-Id: I1a375b4908c9d06f0241a6cda0746172d6b46c15
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138285
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2020-03-04 14:35:05 +00:00
Jens Johansen f828f00b59 [parser] Error recovery of type parameters on void
Fixes #39958.

Change-Id: I851bef762776f4b68f0fcb645d634019b8b32e81
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137925
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2020-03-04 14:02:35 +00:00
Dmitry Stefantsov 0738b6701d [cfe] Allow nullable right-hand side in typedefs
Closes #40714

Bug: https://github.com/dart-lang/sdk/issues/40714
Change-Id: I4d9b4a9c1439415a8b16f5ac18046aacb56585de
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138087
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2020-03-04 10:22:18 +00:00
Johnni Winther 3d5fb65c06 [cfe] Handle implicit extension method call in argument replacement
Closes #40816

Change-Id: I1d7e0c479e03e2b40010551ebeb977e12cdf250c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138082
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-04 07:26:13 +00:00
Johnni Winther c1ff1cbaae [cfe] Merge clone with existing procedure in mixin transformation
This ensure that any existing references to the original procedure
will correctly refer to the cloned procedure after transformation.

Change-Id: I08f561f11e88d717041009e6a9bd9bb6e8054d88
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137976
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-03 13:52:11 +00:00
Johnni Winther 101588f0f4 [cfe] Implement legacy top merge functionality
+ fix getter/setter type inference

Change-Id: I9a4bed2b6a53131cbc9946bac0a01a4b15a63a91
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137922
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-03-03 12:19:09 +00:00
Dmitry Stefantsov c07d5d84b8 [cfe] Allow uninitialized non-nullable late fields
Change-Id: If0d1450c317b488e3299cfa031ab1a3d6953a7ce
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137787
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2020-03-03 09:50:27 +00:00
Johnni Winther 5800997ed7 [cfe] Correctly merge nnbd signatures
Change-Id: I33e55f6ba4c2822c790667a06e0456410696ca04
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137920
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2020-03-02 12:15:50 +00:00
Johnni Winther 56763db04b [cfe] Support NoneTarget in expectation testing
Change-Id: Iff7fbc581eaf875cf9a09f4b994dff7bcf70cd3f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137795
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-02-28 14:45:31 +00:00
Alexander Markov 88be7d1cae [cfe] Fix hasImplicitSetter for late final fields
Unlike other final fields, late final fields without initializers have a
corresponding implicit setter. Previously, front-end was setting
Field.hasImplicitSetter to false for late final fields.
As a result, ClassHierarchy.getDispatchTarget was not returning such
field as a dispatch target for a setter invocation and TFA was inferring
incorrect types for late final fields (as if all setters for late
final fields disappeared).

Change-Id: I8f55f7ec8afa38e8cc3f54f85bd66c0381ae6318
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137701
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Auto-Submit: Alexander Markov <alexmarkov@google.com>
2020-02-28 07:59:44 +00:00
Johnni Winther 51bc38f26c [cfe] Fix uri in nnbd error
+ add support for configurations in messages tests

Closes #40789

Change-Id: I00b241df0e090a4736974e12598085d902ae9c77
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137560
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-02-27 11:38:07 +00:00
Johnni Winther 4189237330 [cfe] Avoid crash on Never as bound
Change-Id: Ia7dc56774599a17d4a29d03ec8ec07cb01995fdb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/137300
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2020-02-26 10:19:07 +00:00
Johnni Winther 60582b3d7a [cfe] Handle future or fields
Change-Id: Ie915ca0824f983966e5017e899a02d50ad14b091
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/136978
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2020-02-26 09:53:30 +00:00
Johnni Winther 53c59d9f4e [cfe] Fix uri in non-nullable field error reporting
Change-Id: I5af35ad08a26f4aaf780573ddbbb878ef75472f9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/136977
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-02-26 08:07:41 +00:00
Jens Johansen aad2b81f16 [CFE] Fixes to experimental invalidation strategy
This all worked previously, but there probably was a weird merge mistake
or something that deleted it.
Here the lost fixes are added again, with more testing.

Change-Id: I8941cb6c88c44e22b70c12c93f7256fb371177f6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/136976
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2020-02-26 08:02:02 +00:00