Commit Graph

4770 Commits

Author SHA1 Message Date
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
Dmitry Stefantsov 9505a1b87f [fasta] Add variance field to type parameters
Change-Id: I0c3eda4057b52853c063a682ff15fb17a595db3b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/85082
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 5997ea4d73 [cfe] Make buildSimpleRead and buildAssignment abstract
+ remove _makeSimpleRead and _makeSimpleWrite
+ directly implement some of buildIfNullAssignment, buildCompoundAssignment and buildPostfixIncrement

Change-Id: I5a209c3a570af7773486799a0473f802e27afb54
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117323
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
Jens Johansen 36c3eccc11 [CFE] Fix issue with exports and recording dependencies
Before this CL we would miss some dependencies when recording
dependencies because we don't finalize exports of dill libraries we have
already finalized.
This was a previous speed-optimization that worked fine before recording
dependencies, but - as outlines above - doesn't work together with
recording dependencies.

Change-Id: I3d9abe949e2b614e9bcd03711e7b92f586373ec5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118043
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2019-09-20 07:24:34 +00:00
Johnni Winther 9ed45651a9 [cfe] Refactor super expressions
Change-Id: I9bc0c6cd86316248108440bc367239316bdbc5ac
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117150
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-19 17:17:10 +00:00
Johnni Winther 5081eb15ee [cfe] Refactor handling of static if-null assignment
Change-Id: Id29b92bc3c2463a3c36ed25c13e0de84fa355ab5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117149
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-19 17:17:10 +00:00
Johnni Winther f018ce0355 [cfe] Refactor handling of static get/set/compound
Change-Id: I63a4834bb43ab533f3195e745105137534d83bc9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117148
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-19 17:17:10 +00:00
Johnni Winther dc211c3f9d [cfe] Refactoring handling of compound index set
Change-Id: If5ba12c571c77643e57669ef85f8235496d4b06b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117141
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-19 17:17:10 +00:00
Johnni Winther 604f443285 [cfe] Refactor handling of if-null index assignment
Change-Id: I0fc9c4564321144ea4215fe21bd11f671f9f9054
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116960
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-19 17:17:10 +00:00
Johnni Winther 54c2dd737f [cfe] Refactor handling of index and index-set
Change-Id: I28336e1e01ba2f2f98d77c941b740242207bbc86
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116780
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-19 17:17:10 +00:00
Johnni Winther c7a083ee5a [cfe] Refactor handling of ++/--
Change-Id: Ib63b095ba52b92653c3253286d0ecc1d18a469ef
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116760
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-19 17:17:10 +00:00
Johnni Winther c2f35df918 [cfe] Refactor handling of compound local/property assignment
Change-Id: I8a42ab364ef263b13b7a2314777d04dbb1de8038
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116520
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-19 17:17:10 +00:00
Johnni Winther 40d75d733b [cfe] Refactor if-null and null-aware property access
Change-Id: I19a50b7d56b63c96f24daf8aaf975e0748e29cf8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116340
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-19 17:17:10 +00:00
Aske Simon Christensen 3fa2bbf202 [cfe] Fix incorrect const contexts.
Fixes https://github.com/dart-lang/sdk/issues/36533

Change-Id: Id157edb09ee5bf16003b33b16ecf6edc900b38f1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117324
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2019-09-19 12:01:21 +00:00
Dmitry Stefantsov 515a597710 [cfe] Remove Class.rawType
Bug: http://dartbug.com/38224
Change-Id: If0af5487b1d43125738575ee3e0fcd747db54fa9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117546
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-09-19 10:42:10 +00:00
Paul Berry 4d9792668c Flow anaylsis: fix definite assignment tracking for for-each loop vars
Change-Id: Ia0dfd94070e28832c5ffc6fb892626d9036042a4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117820
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-09-18 19:21:39 +00:00
Kallen Tu b699852e6d Add 'out'/'inout' keywords for variance.
Under the `variance` flag, `out` and `inout` will be treated as keywords.

Change-Id: I73ba6871a9f0d410a7b3818833a1f50a5f75fba6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117203
Commit-Queue: Kallen Tu <kallentu@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2019-09-18 18:35:59 +00:00
Samir Jindel 205b90f0de Take 3 for '[vm/ffi] Implement FFI callbacks on AOT for ELF and Asm snapshots (excl. blobs).'
Fixes the changes to assembly snapshot writer in SIMARM_X64 mode. This unfortunately can't be tested until the ELF loader is available.

Take 2 is in patchset 1.

Change-Id: Ib8b067dd4f09dcba3b142705e9cb4dfbf4e3eb53
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117726
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2019-09-18 14:56:27 +00:00
Dmitry Stefantsov a56b4ee790 [cfe] Thread nullability from source for function types
Closes #38216.

Bug: http://dartbug.com/38216
Change-Id: I33def8e24555099a74fae04d658cbde7af08d7c1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117727
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-09-18 13:58:43 +00:00
Dmitry Stefantsov 0281f9c425 [cfe] Add members to construct nullability in Library and LibraryBuilder
Change-Id: Iaaa9cf0c5a5789e6b303d646c5ed7fb6eed15b9b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117155
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-09-18 09:52:00 +00:00
Aske Simon Christensen 7799f424f4 [CFE] Encapsulate int operations in separate classes for VM and JS
This refactoring achieves the following:

- Collect the integer operation semantics into one place instead of
having it sprinkled all over the constant evaluator with many
"if (targetingJavaScript)" tests.

- Avoid emitting the internal JavaScriptIntConstant node, which is
serialized as normal DoubleConstant nodes, thus achieving parity
between direct consumers and consumers seeing output that has been
serialized.

- Implement the JavaScript semantics for unsigned right shift.

- Fix truncating divide with a result outside int64 range incorrectly
clamping the result for JS targets.

- Fix positive hex constants >= 2^63 through int.fromEnvironment
producing negative values in dart2js.

- Clarify in Kernel documentation how numeric constants are represented
on VM vs JS targets.

Change-Id: If30bb2c2c77c54eff120b611b059c2ec726c99a0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116525
Reviewed-by: Mayank Patke <fishythefish@google.com>
2019-09-16 13:10:59 +00:00
Aske Simon Christensen eb1a375749 [CFE] Consolidate double special cases for == and identical.
Change-Id: I2d8da0bbb443bdf3ee5c3a6f53786a80509d2d9c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116321
Reviewed-by: Mayank Patke <fishythefish@google.com>
2019-09-16 13:10:59 +00:00
Johnni Winther 7b60ae1a0d [cfe] Fix infer expression
Fixes bug introduced https://dart-review.googlesource.com/c/sdk/+/116203
Calls to inferExpression that pass an expression directly needs to handle
the returned replacement expression directly.

Change-Id: I74f7707921d6f08df3d4bee48085a8d72731acee
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117154
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2019-09-16 12:29:49 +00:00
Kallen Tu f20f619050 Add 'variance' experimental flag.
Generated flag code

Change-Id: I61e6b8fd0a21c511c93afb9b334dc8c17eb69272
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117041
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Kallen Tu <kallentu@google.com>
2019-09-13 16:11:16 +00:00
Johnni Winther 2a12c63631 [cfe] Use SuperPropertySet for super assignment
Change-Id: I82afdb7558186aa744a09c4ee68ac6335a7c55f8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116280
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-13 07:38:25 +00:00
Johnni Winther 4b72fffaaf [cfe] Use VariableSet for variable assignment
Change-Id: Ia94f9e1a3548e615fef111256aa2419cc1fd8c75
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116209
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-13 07:38:25 +00:00
Johnni Winther 2153a06b82 [cfe] Use PropertySet for property assignment
Change-Id: If16d2b9ca8bb1134d181c27ea524b8008e2f52ec
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116207
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-13 07:38:25 +00:00
Johnni Winther 4fd7bf7356 [cfe] Split inference of super property get from instance property get
Change-Id: I457d6a4326c879ee68113760cd86dc0250e4cfde
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116205
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-13 07:38:25 +00:00
Johnni Winther f8f37c131b [cfe] Split inference of super method invocation from instance method invocation
Change-Id: I6d8344da4bb49de0712b2c9f410c3f691ade7150
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116204
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-13 07:38:25 +00:00
Johnni Winther 7d2ebd3ce9 [cfe] Introduce InternalExpression
Create Cascade, DeferredCheck, LoadLibraryTearOff,
NullAwareMethodInvocation and NullAwareMethodPropertyGet as internal
only expressions.

Change-Id: Ie9e12a2fd87ae47f632076429eebd5a21717a062
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116203
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2019-09-13 07:38:25 +00:00