Johnni Winther
8053c43dde
Compute static types for for-in loops
...
Change-Id: I47e98eaf6df7d04286cb737bfdff135e6c0d34d2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/100843
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2019-05-01 14:06:39 +00:00
Sigmund Cherem
c26f1c6bf7
Do not assume stack trace is not null
...
Change-Id: Ib795cfdbcf9599f7e4bc2688b9a965f50c0b7c3c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/98421
Commit-Queue: Sigmund Cherem <sigmund@google.com >
Reviewed-by: Stephen Adams <sra@google.com >
2019-04-02 00:02:53 +00:00
Johnni Winther
7baae76480
Always use ir constants in annotations when constant-update-2018 is enabled
...
Change-Id: Ib5ba6a908904c36a8580f6f47424b6982800dddd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/98002
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2019-03-28 09:34:21 +00:00
Johnni Winther
87c553bf3c
Ascribe constants to the member world impacts
...
Change-Id: I978a6453196b47dd4ed5f51dde1d81feaa4f2008
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97502
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2019-03-22 12:58:40 +00:00
Johnni Winther
7dd4259d87
Handle ir constants in inferrer
...
Change-Id: Ie7b6ff9e62b3b8c78f6c04359cb72f77b249440c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/97240
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2019-03-21 11:25:40 +00:00
Johnni Winther
440b4cd84e
Insert implicit casts when setting interface targets
...
This preserves the invariant that method invocations and property sets
with an interface target handle static types at the call site.
This is a prerequisite to improving dart2js with implicit checks.
With this we can mark dynamic invocations a statically safe and
discover when instance methods don't need to check parameter types.
Change-Id: Ife7a3f947952b3c1f73316b922b2aa107343068e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95400
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2019-03-11 13:08:34 +00:00
Johnni Winther
204651f3ab
Replace package:expect annotations with @pragma
...
Change-Id: Ib43d0d71a3ee8b0f0e6d676e6a3e448a107b7ca5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95180
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Stephen Adams <sra@google.com >
2019-03-05 11:00:17 +00:00
Johnni Winther
1720704594
Recognize effectively constant static fields
...
Change-Id: Ic8f7a014a6af2f9d8854e0731fe0d2df11b554da
Reviewed-on: https://dart-review.googlesource.com/c/94281
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2019-02-28 09:12:26 +00:00
Sigmund Cherem
5192cd1008
Narrowing improvements in dart2js global inference.
...
* no longer narrow by selector use, only narrow by type and non-null
* check for narrow nesting
* add non-null in a couple known places
One large apps, I compared the type-masks in dump-info and all differences were improvements with non-null. We weren't doing any narrowing based on the possible targets of a selector.
Change-Id: I270f360f70fbe3171d09ccd71d10517be9140194
Reviewed-on: https://dart-review.googlesource.com/c/90340
Reviewed-by: Stephen Adams <sra@google.com >
Reviewed-by: Johnni Winther <johnniwinther@google.com >
Commit-Queue: Sigmund Cherem <sigmund@google.com >
2019-02-23 00:10:11 +00:00
Johnni Winther
c591454dd3
Inline unprovided optional parameters
...
Change-Id: I61c82216965062feee8e01ba2533d0ea7c0052ef
Reviewed-on: https://dart-review.googlesource.com/c/90700
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2019-02-07 08:44:49 +00:00
Johnni Winther
477de6b84b
Cleanup unittests
...
- remove use of '_strong', '_trust', and '_checked' suffices
- test omit-implicit-checks by default
Change-Id: I2a83f6fb23a22c894cc7867c51ab460abb4cc524
Reviewed-on: https://dart-review.googlesource.com/c/88454
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2019-01-07 15:01:10 +00:00
Johnni Winther
5fdab895a2
Use static types in inferrer
...
Change-Id: I284ca47dbaab452bd67c688b461fcbbe9a69e751
Reviewed-on: https://dart-review.googlesource.com/c/87402
Commit-Queue: Sigmund Cherem <sigmund@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-12-20 19:23:52 +00:00
Johnni Winther
6d4d3c6b07
Remove TrustTypeAnnotations
...
Change-Id: I7404d10c30642f5282d079e36cb4a20ee2066060
Reviewed-on: https://dart-review.googlesource.com/c/87401
Reviewed-by: Sigmund Cherem <sigmund@google.com >
Reviewed-by: Johnni Winther <johnniwinther@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2018-12-18 11:00:09 +00:00
Johnni Winther
0a2ed86935
Infer general flow through && and ||
...
Closes #34993
Change-Id: Ifb849e4525ba9e5518932b8fba2ae556fb49acb3
Reviewed-on: https://dart-review.googlesource.com/c/85502
Reviewed-by: Sigmund Cherem <sigmund@google.com >
Reviewed-by: Johnni Winther <johnniwinther@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2018-11-30 08:32:11 +00:00
Johnni Winther
406d0b3e9c
Remove unused code from LocalsHandler
...
+ add test for issue 34993
Change-Id: Icd73c865e80ac9dca0e126c6b7e2c6c5320aef94
Reviewed-on: https://dart-review.googlesource.com/c/85240
Auto-Submit: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-11-27 14:07:01 +00:00
Johnni Winther
e62951fd3d
Use assigned variables data to infer static types for effectively final locals.
...
Change-Id: I3687d28628b0476c6a848f135bbda97e594449c2
Reviewed-on: https://dart-review.googlesource.com/c/84629
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-11-21 09:16:21 +00:00
Johnni Winther
5e263044e8
Enable StrongModeWorldStrategy
...
This makes closed world computation take the static type of the receiver
into account and removes non-live members from the J-world.
Change-Id: I5547aaae4685c6417a94916df0bc4e621296ce8d
Reviewed-on: https://dart-review.googlesource.com/72643
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Stephen Adams <sra@google.com >
2018-09-10 07:09:07 +00:00
Johnni Winther
134bb884de
Handle generic types in native behavior
...
Previous implementation didn't include subtypes of the specified type.
For instance `JS('Rectangle', ...)` should have triggered the inclusion
of `_DomRect` but the use of this-type in the subtype test,
`_DomRect <: Rectangle<T>`, prohibited this.
This fix is to use the raw type instead of the this-type. The subtype test
will therefore be `_DomRect <: Rectangle<dynamic>` which correctly
includes `_DomRect`.
The change has the effect that `JS('List', ...)` now actually includes subtypes of
`List`. For this reason uses of `List` have been updated to use `JSArray` or
explicitly use `returns:...` to avoid unintended inclusion of native lists such
as the native typed arrays.
Change-Id: I06ab55d9bf694829596875d9c3a0a6c954d396b7
Reviewed-on: https://dart-review.googlesource.com/73903
Reviewed-by: Stephen Adams <sra@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2018-09-07 22:28:37 +00:00
Johnni Winther
c715e8125d
Refactor global inference data to prepare for serialization
...
Change-Id: If88b948ca80b1a7915d87a49ba4e1d05de669282
Reviewed-on: https://dart-review.googlesource.com/72401
Reviewed-by: Stephen Adams <sra@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2018-09-06 07:11:44 +00:00
Johnni Winther
760a9690c2
Remove tests irrelevant for Dart 2
...
Change-Id: Iedbab2ce11d7446ce28546f06ad97fd909f389c6
Reviewed-on: https://dart-review.googlesource.com/71404
Reviewed-by: Stephen Adams <sra@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2018-08-29 07:29:38 +00:00
Aske Simon Christensen
a4b3009ca5
Require super initializer to be at the end of the initializer list.
...
Drops code to handle special evaluation order rules for super
initializer before the end.
Initializer check code now also recovers from initializer errors.
Fixes https://github.com/dart-lang/sdk/issues/33101
Change-Id: I1024853bfd3acfef42630bdc2fc47782746b07c0
Reviewed-on: https://dart-review.googlesource.com/68060
Commit-Queue: Aske Simon Christensen <askesc@google.com >
Reviewed-by: Kevin Millikin <kmillikin@google.com >
2018-08-22 10:43:08 +00:00
Johnni Winther
3af2f793ac
Remove --no-preview-dart-2 from dart2js
...
Change-Id: I17a18ebe905fa60ba2a1b41af2f444cfe58a38a2
Reviewed-on: https://dart-review.googlesource.com/70512
Reviewed-by: Stephen Adams <sra@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2018-08-20 09:18:02 +00:00
Johnni Winther
1c673b1046
Include bounds in type literals
...
Change-Id: Ieb3e5b09e88c98f8943a6e7ca9031c8a6ab776e1
Reviewed-on: https://dart-review.googlesource.com/63820
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-07-09 12:24:04 +00:00
Sigmund Cherem
a4c47afcae
Fix global-inference bug.
...
We incorrectly tracked is checks that are nested within subexpressions of
conditions that do not affect control-flow.
Fixes https://github.com/dart-lang/sdk/issues/33761
Change-Id: If8a9b64273998aed5c4ea8854ea8d717588d5658
Reviewed-on: https://dart-review.googlesource.com/63981
Commit-Queue: Sigmund Cherem <sigmund@google.com >
Reviewed-by: Johnni Winther <johnniwinther@google.com >
2018-07-06 22:01:37 +00:00
Johnni Winther
1c4b362ba5
Support noSuchMethod forwarders in dart2js
...
Closes #32750
Change-Id: Ib2f358b14ae5a079e3df8413013ecfc006f0e69b
Reviewed-on: https://dart-review.googlesource.com/60250
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-06-20 10:15:41 +00:00
Johnni Winther
37425618d5
Narrow to static types in invoke/get in inference
...
Change-Id: Ifb085cf881c21a6161a22cb1f2b6058a9947f321
Reviewed-on: https://dart-review.googlesource.com/55920
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-06-13 13:11:10 +00:00
Johnni Winther
52d7a3043a
Track RTI dependency through instantiations
...
Closes #33093
Change-Id: Ia7d9cd1235cd4fe60858f37533689f5eeb600540
Reviewed-on: https://dart-review.googlesource.com/59400
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Stephen Adams <sra@google.com >
2018-06-12 08:00:09 +00:00
Johnni Winther
b58cc36ddc
Extract KClosedWorld from ClosedWorld.
...
Change-Id: I2db59cea5081fde2f0b35c6518d6b618df617ac1
Reviewed-on: https://dart-review.googlesource.com/57827
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-06-04 09:22:41 +00:00
Johnni Winther
89514bd8cf
Cleanup library_loader.
...
Change-Id: I0255580cd9292bcd3a5997c7d97d83b25d888372
Reviewed-on: https://dart-review.googlesource.com/55960
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-05-24 09:52:50 +00:00
Johnni Winther
78f348b3d5
Don't export types/masks.dart from types/types.dart
...
To make uses of TypeMask explicit in the imports.
Change-Id: I7c0c2377b65720394dcda217e5e68a4e3f9a4e9c
Reviewed-on: https://dart-review.googlesource.com/55421
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-05-17 08:05:42 +00:00
Johnni Winther
506c8819ae
Delete CompilerResolution, ResolutionFrontEndStrategy at al.
...
Change-Id: I13698f02d5c9af878750290ad1aef8d32777684f
Reviewed-on: https://dart-review.googlesource.com/54403
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-05-14 08:14:07 +00:00
Johnni Winther
b347839ee6
Remove impact_test
...
A replacement is in progress in another CL.
Change-Id: Ib1eda85caa10c5e5a00f4c9e1b5c1605a2a56da6
Reviewed-on: https://dart-review.googlesource.com/54227
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-05-09 07:55:08 +00:00
Johnni Winther
d0112f4431
Remove old frontend equivalence tests
...
Change-Id: I18b4b9979aea44b4dec64a5f1a32e67118b54a97
Reviewed-on: https://dart-review.googlesource.com/54222
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-05-09 07:55:08 +00:00
Johnni Winther
7afa0812ee
Implement strong mode open world strategy.
...
Implements a new strategy for closed world computation that takes
the static type of the receiver into account when processing dynamic
calls.
For this to work, the J-model needs to only contain live members,
meaning queries can no longer assume that a J-model member exists for
instance for JSString.split because it might not be live.
This is the initial implementation which only uses
ir.MethodInvocation.invocationTarget. Later we will use the static
type of the expression on ir.MethodInvocation, ir.PropertyGet, and
ir.PropertySet.
Change-Id: I2dcc5a9148f27127d4e89c414a7d24f90f9cf2a4
Reviewed-on: https://dart-review.googlesource.com/48480
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-04-23 07:58:12 +00:00
Johnni Winther
c5f69dff2d
Include call on Closure in inference
...
Closes #32835
Change-Id: Ief2096544e01f74e6cc52abd6131a24a10ffe75f
Reviewed-on: https://dart-review.googlesource.com/50680
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-04-13 08:46:26 +00:00
Johnni Winther
826928e2ab
Use _trust to test inference of --omit-implicit-checks
...
+ update the comment in ParameterTypeInformation.potentiallyNarrowType to
match the current expectations.
Change-Id: Ic98025f8314e8ac9eee6225c8c77e407a9fdabb9
Reviewed-on: https://dart-review.googlesource.com/50481
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-04-13 08:42:56 +00:00
Johnni Winther
f555ae505a
Trust type annotations in strong mode
...
Change-Id: I59019ec56e432a71c52637307fa4dd346fa27c1f
Reviewed-on: https://dart-review.googlesource.com/50240
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-04-10 09:16:46 +00:00
Johnni Winther
4d7327b7b7
Run inference test in strong mode
...
Change-Id: Iacfe794fe3303fd94574f6761389cce5f34e82da
Reviewed-on: https://dart-review.googlesource.com/49483
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-04-05 11:07:21 +00:00
Johnni Winther
7ed7e57aaa
Assert that inference isn't expected on abstract methods.
...
This fixes the root cause of the bad inference on NativeTypedArrayOfDouble.[] in strong mode.
Change-Id: I6436ef1d49780cd0f931ab38120fbcba90380e7c
Reviewed-on: https://dart-review.googlesource.com/49420
Reviewed-by: Sigmund Cherem <sigmund@google.com >
Commit-Queue: Johnni Winther <johnniwinther@google.com >
2018-04-05 09:32:25 +00:00
Sigmund Cherem
e01fbecdf5
Fix type in NativeTypedArrayOfDouble
...
Change-Id: Ifeb5d1bdaa9dce941449217127b7324e3744d6df
Reviewed-on: https://dart-review.googlesource.com/49082
Reviewed-by: Stephen Adams <sra@google.com >
Commit-Queue: Sigmund Cherem <sigmund@google.com >
2018-04-03 00:15:55 +00:00
Johnni Winther
ffd18a37ef
Track type arguments of static and dynamic calls
...
- and use these to optimize for type argument need on instance
methods and closurized static methods.
Change-Id: Id41d8f8aa7639da15fbd24844e397a4524b6ed20
Reviewed-on: https://dart-review.googlesource.com/35261
Commit-Queue: Johnni Winther <johnniwinther@google.com >
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-01-19 22:31:37 +00:00
Johnni Winther
94fc11388a
Port inference tests, #5 of 5
...
Change-Id: I384056289dfa99991aa42fbe0baadedc6c208b6f
Reviewed-on: https://dart-review.googlesource.com/34586
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-01-17 10:19:53 +00:00
Johnni Winther
7568a4e4ce
Don't register closure call methods
...
- closed world is incomplete anyway; we're missing the call methods from static and instance tear-off.
Change-Id: Ibd3fc9d80220bef3ee651bf529a487b617de7a6b
Reviewed-on: https://dart-review.googlesource.com/34144
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-01-12 11:47:18 +00:00
Johnni Winther
e6363dd1bb
Add tests showing the bad inference on .call
...
Change-Id: I939de4485a81d5a21f89088e91e6ae8eed648646
Reviewed-on: https://dart-review.googlesource.com/33941
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-01-12 11:29:43 +00:00
Johnni Winther
966986947b
Port inference tests, part #4 of 5
...
Change-Id: Id4686f1e9673a5c7af3747584c9a59463b770e0f
Reviewed-on: https://dart-review.googlesource.com/32760
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-01-08 08:35:56 +00:00
Johnni Winther
00b083bafc
Port inference tests, part #3 of ?
...
Change-Id: Ib4b9650c94b2302f68272d18601c97cd4685e03e
Reviewed-on: https://dart-review.googlesource.com/32543
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-01-08 08:28:38 +00:00
Johnni Winther
de3f4f5e95
Port inference tests, part #2 of ?
...
Change-Id: Ia9012f278824ae2a7b069ecdcabc50c7dfbde40d
Reviewed-on: https://dart-review.googlesource.com/32340
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-01-08 08:09:44 +00:00
Johnni Winther
47d4534700
Port inference tests, part #1 of ?
...
- to the equivalence framework.
Change-Id: Ieddcb60c5e5367e2554bfa715562264f1dca5a9e
Reviewed-on: https://dart-review.googlesource.com/31941
Reviewed-by: Sigmund Cherem <sigmund@google.com >
2018-01-03 08:57:37 +00:00
Stephen Adams
f937039bd6
Remove unused JS_BUILTIN
...
Became unused at:
https://github.com/dart-lang/sdk/commit/1ae1ec7df4b22238fd61e9e529ad62a498b3199e
Change-Id: I92c167dc2a071a45b2635b9b1d907015043d60ab
Reviewed-on: https://dart-review.googlesource.com/31560
Reviewed-by: Emily Fortuna <efortuna@google.com >
Commit-Queue: Stephen Adams <sra@google.com >
2017-12-28 01:16:02 +00:00
Sam Rawlins
3bc3ab979e
Fix IMPORT_INTERNAL_LIBRARY error location
...
Fixes #31682
Bug: https://github.com/dart-lang/sdk/issues/31682
Change-Id: Id4f52006aa7ca3e5fb0ecce61c0393310f18764f
Reviewed-on: https://dart-review.googlesource.com/30260
Commit-Queue: Samuel Rawlins <srawlins@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2017-12-18 18:22:46 +00:00