Commit Graph

1972 Commits

Author SHA1 Message Date
Johnni Winther bc8b12e43b [cfe] Handle privacy in extension lookup
Closes #38750

Change-Id: Ieb5af03859a51ee034b3c2731eadf7591a4cc83c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120641
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2019-10-08 08:07:09 +00:00
Johnni Winther 3e2d6f95ee [cfe] Use fileOffset in Forest instead of Token
Change-Id: I6904555d5e192b7f6a561ae41859288db808e771
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119642
Reviewed-by: Jens Johansen <jensj@google.com>
2019-10-03 09:49:01 +00:00
Johnni Winther 0ef041d8f2 [cfe] Avoid crash on explicit extension access of static members
Change-Id: Ia9df90138be93cb9aa2a3111fdc2127fdc3f6cb4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119334
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-10-01 07:34:20 +00:00
Aske Simon Christensen 0a5f736c68 [cfe] Fix missing comma between type parameters in function types
Change-Id: I90f7d1665a93414ed89799b3f564fdb7d2114e20
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119324
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Auto-Submit: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-30 13:44:59 +00:00
Johnni Winther f1d6282fa3 [cfe] Report error on extension members that conflict with Object members
Closes #38561

Change-Id: I9c26879662502e1f56203f87d1cd7a21036dcb2f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119325
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2019-09-30 13:21:49 +00:00
Dmitry Stefantsov b682235c4c [cfe] Preserve the nullability of LHS of intersection types
Change-Id: I2e91338d4172c1288ceb58c566d9d3e3e465a0b9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118985
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
2019-09-30 12:53:19 +00:00
Dmitry Stefantsov 902a36e36f [cfe] Thread nullability of typedef types from source into Kernel
Closes #38214, #38215.

Bug: http://dartbug.com/38214
Bug: http://dartbug.com/38215
Change-Id: I6f96668f3dc7b315b0848a8d8953783ceb5f1c47
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119326
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-09-30 12:52:29 +00:00
Dmitry Stefantsov b361639a74 [cfe] Account for nullability in type substitution on TypeBuilders
Closes #37689.

Bug: http://dartbug.com/37689
Change-Id: Ifac30bede3dbec9008e31e5fc81014cc69069afc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119145
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-09-30 12:52:29 +00:00
Dmitry Stefantsov 7d75eb1fd9 [cfe] Account for nullability in type substitution on DartTypes
Bug: http://dartbug.com/37689
Change-Id: I5c37f0e13da956285300288cffc58263e67ac302
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119140
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-09-30 12:52:29 +00:00
Johnni Winther e52542b421 [cfe] Handle generic return types
Returns types on generic methods in generic extension that contained
type variables declared on the generic method were not substituted,
leaving these as unindexed type parameters during serialization.

Change-Id: I4f53005318ba2be014bfe6e92f4f6c93288f2a4f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118995
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-30 10:58:05 +00:00
Aske Simon Christensen 8f24bd2901 [cfe] Remove or reformulate some bad tips and messages.
Change-Id: I5f37da30370fb48a4417e2b0c990d9fc1c9713a7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118990
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-09-30 09:02:41 +00:00
Aske Simon Christensen 4b9557e5e3 [cfe] Check valid return type of local async functions.
Fixes https://github.com/dart-lang/sdk/issues/37681

Change-Id: I24e53f92ab9c812591a1317673082c4a40c2d00b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119142
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-09-30 08:48:08 +00:00
Kallen Tu 134839098b Serialization/Deserialization for Variance in Type Parameters.
Change-Id: I9bce86293c23c4b9d2b8011e866f04bcab80e74a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118881
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Kallen Tu <kallentu@google.com>
2019-09-27 16:57:00 +00:00
Aske Simon Christensen a12c275901 [CFE] Avoid talking about const context in error messages.
The constant evaluator does not know if the expression it is evaluating
is actually in const context. If not, those messages are misleading.

Fixes https://github.com/dart-lang/sdk/issues/38568

Change-Id: Iddfb1fbdc12eb1874a1f400cf08763e003db23e6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118982
Auto-Submit: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2019-09-27 14:49:57 +00:00
Kallen Tu 327bc451f8 Added variance support in listeners to ast.
Pass variance data to field in TypeParameter through the listeners.
ast_to_text will print variances for classes and mixins if specified.

Avoids serialization/deserialization (impl in future CL).

Change-Id: I298537604823710f0d30001f4cb5f1e81530959f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118464
Commit-Queue: Kallen Tu <kallentu@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-26 18:11:10 +00:00
Johnni Winther 6ff8d2199d [cfe] Don't crash on constructors in extensions
Change-Id: I11cdb9699101f384c2734c3551b4eefdfda6eccb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118980
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-26 12:32:25 +00:00
Johnni Winther 53564db036 [cfe] Handle implicit extension call()
Change-Id: Ib0aa04b7b00c54c21932040bd8912d95c138f62e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118960
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-26 10:36:51 +00:00
Johnni Winther ee7aae43c0 [cfe] Handle explicit extension index access
+ avoid implicit extension for [] or []= when the other is defined on
the receiver.

Change-Id: I99c76a66bfb4f72c396097b2f347aad9f0a42f33
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118940
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-26 10:36:51 +00:00
Johnni Winther 0bf6b6ae64 [cfe] Handle instantiation of extension tear-offs and check bounds on extension method invocation
Change-Id: I212f95c897889a28934910c2c21c64bea6c6a64c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118585
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-26 08:41:38 +00:00
Johnni Winther b03d472e4c [cfe] Handle default values on extension methods
Closes #38541

Change-Id: I078800cc98b5444c2c7f6f87b2d89bcf764bfc23
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118582
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-25 08:45:27 +00:00
Dmitry Stefantsov 12f6cbb7b1 [cfe] Thread nullability modifiers for TypeParameterTypes from source
Closes #38218, #38221.

Bug: http://dartbug.com/38218
Change-Id: I4689b0b192b71790c8fc5ffba6ccb807f289f771
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118580
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
2019-09-25 08:15:47 +00:00
Dmitry Stefantsov 13fcf27c25 [cfe] Implement library-specific NullabilityBuilder getters
Change-Id: Ia7ca900f52bab8549224147bdf2ea161fc60002c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118564
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-09-25 08:15:47 +00:00
Johnni Winther 7b9bcd08b4 [cfe] Correctly substitute function types from extension on-clauses
Change-Id: Icf6bf59544d2c14cc153cdf77b675554d319b6b8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118541
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-25 07:30:17 +00:00
Johnni Winther 2f7ad92ee4 [cfe] Handle null aware explicit extension application
Handles expressions like `Extension(c)?.foo`.

This CL also includes an update to SourceExtensionBuilder.build
addressing a comment in a previous CL.

Change-Id: I0ebcd95d16743c0aa6da22120182b2219fc30726
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118443
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-25 07:30:17 +00:00
Jens Johansen cc7baf9bf5 [CFE] Fix of crash etc in error messages wrt formal parameters
With something like
x2() {
  y(z, {z}) {}
}

in a part, we create an error on the 2nd 'z'.
That error message gets the file uri of the body builder which is correct.
The context gets (for the 1st 'z') gets the file uri of the
FormalParameterBuilder which in turn got it from the "parent" which is the
library which is the "main library", i.e. not the "part library".

This causes - in the face of parts - one of two things:
1) It will point into the wrong file and the error message will be bad.
2) It tries to point into the wrong file, but the wrong file is not big
   enough, and we thus get a crash.

This CL fixes it so the FormalParameterBuilder has the right uri.

Fixes https://github.com/dart-lang/sdk/issues/38523.

Bug: 38523
Change-Id: I303dbec2934ae930b8f2f2c9f63a4aa00db3a89c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118448
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-09-24 11:50:09 +00:00
Jens Johansen 98d94e7efc [CFE] Reproduction of crash etc in error messages wrt formal parameters
Reproduction of dartbug.com/38523

Bug: 38523
Change-Id: Iffc30a622685c0c8d7a0daf0b84c910072c8146f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118446
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-09-24 11:43:28 +00:00
Jens Johansen 1b03bc34c8 [CFE] Cleanup incremental_load_from_dill_test yamls
Change-Id: I30012b08499e5c5a7babb74cb43706031fb3f4cd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118445
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-09-24 10:50:18 +00:00
Jens Johansen fdda2729c3 [CFE] Fix crash when mixin application has mixin application super from dill
Fixes https://github.com/flutter/flutter/issues/40966.

Change-Id: Idf3febc50b5c8d637e9f3f43e8bd3e6b8bdee2fd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118444
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-09-24 10:47:18 +00:00
Aske Simon Christensen c71ee4b0c9 [cfe] Report override errors at the class in which the override takes place.
Change-Id: Ib5b80d3cca6e15966f822bf96294dee8f4dedc04
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/115247
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2019-09-24 08:28:21 +00:00
Johnni Winther 175fc6edff [cfe] Use original name in extension method errors.
Previously the errors were reported using the synthesized name, like
`Extension|method` instead of `method`.

+ Report errors on invalid uses of explicit extension application as
an expression or lvalue.

Change-Id: I6d85430be4ab3966ee94131b37aa365265c07eac
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118383
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-24 07:55:45 +00:00
Johnni Winther b7ad248209 [cfe] Handle annotations on extension members
Closes #38439

Change-Id: I3c995ba5ca3058530318b14e46d275ce6ccc8778
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118381
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-24 07:55:45 +00:00
Johnni Winther bf76e4b49c [cfe] Handle complex extension setters
Change-Id: Ic5753c70a13fed819df7aa6900a8191f9bed4195
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118042
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-24 07:55:45 +00:00
Johnni Winther 2b3541da57 [cfe] Make IfNullJudgment an internal expression
Change-Id: I68c81e10692823e9fad552272167c0bf87144db4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117942
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-24 07:55:45 +00:00
Johnni Winther 2777806901 [cfe] Handle dynamic invocation
Change-Id: I13ca160a2dd5862d558928826adee7bcacf67d04
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117731
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-24 07:55:45 +00:00
Johnni Winther 18e4f6ba8d [cfe] Handle conflicting extension and extension member names
Change-Id: Ib0c7ffce985b31dfcdacaca599ff31f3d05a25a1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117730
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-24 07:55:45 +00:00
Johnni Winther 2be1d090ca [cfe] Correctly resolve extension properties in face of getter/setter conflict
Change-Id: I0b818edb27de1b2cd1dcd2e046f42616cd7cb257
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117729
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-24 07:55:45 +00:00
Johnni Winther 71896d5586 [cfe] Support implicit this access to extension methods in extensions
Change-Id: Idad98ca0d0fb27010ef4a522593f283b97ecc873
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117720
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-24 07:55:45 +00:00
Johnni Winther 25166af3ea [cfe] Remove SyntheticExpressionJudgment
Change-Id: I2891d772d99d1fd8a5ba42e393d900f3c1618a5c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117700
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-24 07:55:45 +00:00
Johnni Winther 037b9052d2 [cfe] Handle compound assignment on explicit extension application
Change-Id: Ie8b23593db5286d1d44125ea0dcc76f95cb9b4e9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117545
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-24 07:55:45 +00:00
Johnni Winther bdd432f427 [cfe] Handle if-null assignment on explicit extension application
Change-Id: I30e02767d23982cb8cae08113bd6b0f97d325e03
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117544
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-24 07:55:45 +00:00
Johnni Winther a2a155afd1 [cfe] Refactor null-aware if-null and compound assignments
Change-Id: Ie96ac05974cff706af5b49536cd9a006a9786195
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117540
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-09-24 07:55:45 +00:00
Dmitry Stefantsov 8d487b4fdc [kernel] Recover TypeParameter.variance while deserializing
Change-Id: I46d78dc5e98c5e3707d448eccfd6bdabb1c25ddb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/91827
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-09-23 15:17:38 +00:00
Dmitry Stefantsov 4d9db7b22f [fasta] Account for variance of type parameters in instantiate-to-bound
Change-Id: I7a0aa3810129fa6a6a8cff5f961c19157154cd37
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/85101
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2019-09-23 15:17:38 +00:00
Johnni Winther 94dd49cdb6 [cfe] Add NullCheck expression node
Change-Id: I17223bffa5dec7b1ce7652b21bf1a3381137f4f4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118380
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-23 10:04:48 +00:00
Johnni Winther 3f8c7e5fa2 [cfe] Refactor local and read-only compound assignments
Change-Id: Idcf113fee7c2a98dc38e95ff4e298b504a0ecd13
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117360
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-20 18:30:45 +00:00
Johnni Winther 771e0f7d32 [cfe] Refactor local and read-only if null assignments
Change-Id: Ie5ec508f69f3db6badd889c0ecfb1f80d1873501
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117325
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-20 18:30:45 +00:00
Johnni Winther 68b1a2e7bd [cfe] Refactor super index access
Change-Id: Ie431d93b2ecc48fe5c35288f1146934ac278a81c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117322
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-20 18:30:45 +00:00
Johnni Winther 1e24146dab [cfe] Refactor this indexed access
Change-Id: Iaaac1aba9f421ec1d5176350b1d007ce355ca297
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117151
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-20 18:30:45 +00:00
Jens Johansen 99713209c4 [CFE] Fix issue with cached calculations and recording dependencies
Before this CL we would miss some dependencies when recording
dependencies because we cache certain calculations that upon calculation
can mark things as needed.

Change-Id: If9ff872021b0fb77cbcc787112bb91f3ade71243
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118281
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-09-20 11:21:14 +00:00
Johnni Winther 70a1e8e090 [cfe] Fix handling of access on type variables with dynamic bound
Change-Id: Ibff097e5f18bee169191b94633455547460debb0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118280
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-20 10:48:14 +00:00