Commit Graph

2004 Commits

Author SHA1 Message Date
Konstantin Shcheglov d0f9e9927b Combine class constructors and fields.
Testing is simple, but wordy.
I plan to replace testing of final states with text dumps.

R=ahe@google.com, kmillikin@google.com, paulberry@google.com, sigmund@google.com

Bug:
Change-Id: I82dd3e7c575b68f6889e07f0084b5f9070538d39
Reviewed-on: https://dart-review.googlesource.com/16326
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-10-26 21:46:50 +00:00
Konstantin Shcheglov fdb1ce53f1 Implement FlutterByteStore with temporary protected keys.
R=ahe@google.com, paulberry@google.com, sigmund@google.com

Bug: https://github.com/dart-lang/sdk/issues/31138
Change-Id: I8aa7344a0a9e232c28a077a7e40211a44685db63
Reviewed-on: https://dart-review.googlesource.com/15861
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2017-10-24 20:07:00 +00:00
Konstantin Shcheglov ebc91d103c Implement combining Class procedures.
R=ahe@google.com, paulberry@google.com, sigmund@google.com

Bug:
Change-Id: I4f93637fef4a41acb987d65da75c4ded27c66f6e
Reviewed-on: https://dart-review.googlesource.com/16060
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-10-24 18:07:18 +00:00
Paul Berry 713712b264 Tighten up return types for resolve/finalize methods.
These methods both are guaranteed to return Procedures, due to the
fact that we only store Procedures in the `candidates` lists.

Change-Id: Ia07f9383baede71960717f8ef905fdd042baf841
Reviewed-on: https://dart-review.googlesource.com/16300
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-24 17:12:42 +00:00
Sigmund Cherem 5efdb5f346 Allow to specify the platform-binaries as an environment option in our unit
tests.

Bug: https://github.com/dart-lang/sdk/issues/31178
Change-Id: Ia845287c101020792b382c2ae401eda2a9ad4508
Reviewed-on: https://dart-review.googlesource.com/15766
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Sigmund Cherem <sigmund@google.com>
2017-10-24 16:32:28 +00:00
Konstantin Shcheglov a8fa25afa2 Add more tests for combining top-level getters and setters.
R=ahe@google.com, paulberry@google.com, sigmund@google.com

Bug:
Change-Id: I124c6914b08a70dcbd7cb51d30be28ff45f04299
Reviewed-on: https://dart-review.googlesource.com/15982
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2017-10-23 20:04:29 +00:00
Sigmund Cherem bc1dd524ba Use custom URIs on most of front_end unit tests
This required a couple small fixes where we had made assumptions in our system
about not having anything other than dart, package, and file URIs.

Change-Id: Ie0943f609ceeaacf3fb284ceba0df5c55c315b0b
Reviewed-on: https://dart-review.googlesource.com/11650
Commit-Queue: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-10-21 00:26:58 +00:00
Konstantin Shcheglov ed69540e4e Issue 31167. Add IncrementalKernelGenerator.setState().
R=ahe@google.com, paulberry@google.com, sigmund@google.com

Bug: https://github.com/dart-lang/sdk/issues/31167
Change-Id: I48971fc86c440fec636a775fc68d4292b0309dfa
Reviewed-on: https://dart-review.googlesource.com/15649
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-10-20 21:27:18 +00:00
Brian Wilkerson bf6f398ef8 Make minus a valid prefix operator
Change-Id: Id741a5b1c753f564b54b4fd3d47cd90162a182c9
Reviewed-on: https://dart-review.googlesource.com/15660
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-10-20 21:06:29 +00:00
Vyacheslav Egorov 9cd7bc724d [VM, Kernel] Fix sync* implementation in checked mode
Change abefb7b432 introduced a typing issue
instead of fixing it: _SyncIterator<T>._current was actually used to return
either a value of type T (for yield) or value of type Iterable<T> (for yield*)
from the move callback.

This change refactors implementation of _SyncIterator in such a way that
_current is only used to return value for yield and a separate field
_yieldEachIterable is used to return Iterable<T> for yield*.

Change-Id: I3e3c832bbc8986d6976ddbb0856a1b5a127d845b
Reviewed-on: https://dart-review.googlesource.com/15542
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2017-10-20 18:15:28 +00:00
Brian Wilkerson 32385ee32e Address comments from CL 15200
Change-Id: I7a478686d2b721272ba178cc906f62af98c5891c
Reviewed-on: https://dart-review.googlesource.com/15620
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2017-10-20 16:58:09 +00:00
Konstantin Shcheglov 2747dae5d7 Copy uriToSource from compiled programs into IKG results.
This lets us to remove some code, and we start respecting the
`embedSourceText` option.

R=ahe@google.com, paulberry@google.com, sigmund@google.com

Bug: https://github.com/dart-lang/sdk/issues/31139
Change-Id: I2007f4b887fa9d417f18364bbb063bb3de3a08be
Reviewed-on: https://dart-review.googlesource.com/15240
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-10-19 22:14:47 +00:00
Brian Wilkerson b7bdf60c92 Remove Parser.firstToken and cleanup TokenStreamRewriter
Change-Id: I812215872c6d06fc86336c47e17f73617ff9936c
Reviewed-on: https://dart-review.googlesource.com/15200
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-10-19 21:47:57 +00:00
Brian Wilkerson 332c0b9d6c Introduce replacement for TokenStreamRewriter.insertTokenBefore
Change-Id: I821fbc0f938395cc0dd1583a82e3f9ca74bbcf2a
Reviewed-on: https://dart-review.googlesource.com/14660
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-10-18 20:08:22 +00:00
Vyacheslav Egorov abefb7b432 [kernel] Assign proper types and interface targets to nodes created by async transformer.
Bug: https://github.com/dart-lang/sdk/issues/31070
Change-Id: Iaedbd425fcb6d243c0bfa93495335658553a9301
Reviewed-on: https://dart-review.googlesource.com/14481
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Kevin Millikin <kmillikin@google.com>
2017-10-17 17:44:00 +00:00
Aske Simon Christensen 60be83aed4 Reland "Suite for Fasta crashes and verification errors in language tests"
Remove obsolete "language" suite.

Original review: https://dart-review.googlesource.com/13741

Change-Id: I713fa2684fe478f6e9123d33ee7b7d2a961b1c00
Reviewed-on: https://dart-review.googlesource.com/14460
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2017-10-17 13:54:40 +00:00
Aske Simon Christensen 8a2a9e4622 Reland "Error on setter having not exactly one parameter"
Rewrite setter with invalid parameters into one with one parameter
and a body throwing a compile-time error.

Some analyzer tests fail until we sort out the expected form of the
generated kernel code in situations like this. This is tracked in
https://github.com/dart-lang/sdk/issues/31096

Closes https://github.com/dart-lang/sdk/issues/31069
Original CL: https://dart-review.googlesource.com/13080

Change-Id: I432240c33d6daf0ec6bfe2b73c609ab4762cda8c
Reviewed-on: https://dart-review.googlesource.com/14381
Reviewed-by: Peter von der Ahé <ahe@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2017-10-17 13:16:30 +00:00
Peter von der Ahé b96ac4520a Update most clients to use computePlatformBinariesLocation.
Change-Id: I6e6960c471b2fab3f0cd8a672da05d7699217410
Reviewed-on: https://dart-review.googlesource.com/12291
Commit-Queue: Peter von der Ahé <ahe@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-10-17 10:48:40 +00:00
Paul Berry 250585a70e Split forwarding node resolution into two phases.
The first phase, called `resolve`, happens during top level type
inference; it determines which inherited method a forwarding node
resolves to, and ensures that dependencies are type inferred.  The
second phase, called `finalize`, happens at the end of top level type
inference; it creates forwarding stubs if necessary and propagates
covariance annotations.

The reason we need two phases is illustrated by the new test
pkg/front_end/testcases/inference/inheritance_does_not_imply_circularity.dart.
There should be a type inference dependency from I1::x to y, and from
y to C::x.  But there shouldn't be a type inference dependency from
C::x to I1::x, since C::x's type is fully specified.

Splitting into two phases makes this work: during type inference, we
can resolve C::x without needing to consult the type of I1::x.  Once
type inference is over, and the type of I1::x has been determined, we
can finalize C::x and determine whether any covariance annotations
need to be propagated.

Change-Id: If96e7b23e16723c421f91b3e37fe2a4485919c5c
Reviewed-on: https://dart-review.googlesource.com/13600
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-10-16 21:44:23 +00:00
Martin Kustermann 25dc42f5d8 Revert "Error on setter having not exactly one parameter"
This reverts commit 4bb83e9311
This reverts commit f1b07b2789.

Reason for revert on analyzer bots:

    Analyzing pkg/analyzer...
      error • Undefined name 'source' at pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart:625:9 • undefined_identifier
      error • Undefined name 'CompileTimeErrorCode' at pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart:625:18 • undefined_identifier
      error • Undefined name 'source' at pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart:626:13 • undefined_identifier
      error • Undefined name 'source' at pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart:635:9 • undefined_identifier
      error • Undefined name 'CompileTimeErrorCode' at pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart:635:18 • undefined_identifier
      error • Undefined name 'source' at pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart:636:13 • undefined_identifier
      error • Undefined name 'source' at pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart:645:9 • undefined_identifier
      error • Undefined name 'CompileTimeErrorCode' at pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart:645:18 • undefined_identifier
      error • Undefined name 'source' at pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart:646:13 • undefined_identifier
      error • Undefined name 'source' at pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart:655:9 • undefined_identifier
      error • Undefined name 'CompileTimeErrorCode' at pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart:655:18 • undefined_identifier
      error • Undefined name 'source' at pkg/analyzer/test/generated/compile_time_error_code_kernel_test.dart:656:13 • undefined_identifier
    12 errors found.

Change-Id: Ie2035bf40e50c48f85b514c7a3786141cd0f2453
Reviewed-on: https://dart-review.googlesource.com/14061
Reviewed-by: Martin Kustermann <kustermann@google.com>
2017-10-16 16:32:13 +00:00
Aske Simon Christensen 4bb83e9311 Suite for Fasta crashes and verification errors in language tests
Remove obsolete "language" suite.

Change-Id: I8daad8b7fd2d6e19124850626a5815aa9dcca347
Reviewed-on: https://dart-review.googlesource.com/13741
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-10-16 16:01:55 +00:00
Aske Simon Christensen f1b07b2789 Error on setter having not exactly one parameter
Rewrite setter with invalid parameters into one with one parameter
and a body throwing a compile-time error.

Some analyzer tests fail until we sort out the expected form of the
generated kernel code in situations like this. This is tracked in
https://github.com/dart-lang/sdk/issues/31096

Closes https://github.com/dart-lang/sdk/issues/31069
Change-Id: I65033709813671ecb933e6a4dc00d1ff3b504661
Reviewed-on: https://dart-review.googlesource.com/13080
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2017-10-16 15:07:49 +00:00
Konstantin Shcheglov 6b5ba5351b Implement combining outlines for top-level declarations.
R=ahe@google.com, kmillikin@google.com, paulberry@google.com, sigmund@google.com

Bug:
Change-Id: Id849e68d3026457bdddb98604b92c7424961bbd9
Reviewed-on: https://dart-review.googlesource.com/11649
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2017-10-13 20:32:24 +00:00
danrubel 1582021556 Allow built-in keywords as top level function identifiers
Change-Id: I4287e8279d2ebe6f4460ce48409b7bd9ead16b96
Reviewed-on: https://dart-review.googlesource.com/13627
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2017-10-12 23:48:05 +00:00
Paul Berry 494d78efd5 Transition to new top level type inference logic.
With this CL, we stop creating the old AccessorNode objects and start
creating the inference nodes associated with the new ForwardingNode
infrastructure.  This fully integrates top level type inference with
forwarding stub generation.

There is a small difference between the behavior of the old and new
type inference infrastructure: in the old infrastructure, when
inferring the type of a getter or setter, we would consider both
inherited getters and inherited setters.  Now, we follow the spec.
This introduces some minor differences from analyzer functionality, so
the tests of this functionality are moved into the "inference_new"
directory.

Change-Id: Ie17df9abf1a3ab99e7d22683ffdf6d1b13ec86be
Reviewed-on: https://dart-review.googlesource.com/13180
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-11 21:32:10 +00:00
Brian Wilkerson 1e48c3f4d1 Recover from having an index operator with no expression
Change-Id: Ic4a6abcc95f61da047053398804bfe947565de88
Reviewed-on: https://dart-review.googlesource.com/11680
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-10-11 18:00:30 +00:00
Paul Berry 6408d5ac05 Eliminate ForwardingNode._setter boolean.
It was redundand with the "kind" field, inherited from Procedure.

Change-Id: I166e75a60222e5d501d3662d82be1648bb7f88d5
Reviewed-on: https://dart-review.googlesource.com/12881
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-10-11 16:39:30 +00:00
Paul Berry aa99974ec8 Create an implementation of InferenceNode for method inference.
Change-Id: I591d5637216a08cff2e764a05fc3501d3f3432e6
Reviewed-on: https://dart-review.googlesource.com/12822
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-10 23:19:16 +00:00
Paul Berry 8455c13e75 Rework access to ShadowClass._inferenceInfo.
Two changes:

- ShadowClass.getClassInferenceInfo now accepts an ordinary class, and
  returns `null`.  This will allow us to ensure that if a ShadowClass
  gets re-used later as an ordinary Class (which sometimes happens
  during incremental analysis), it will behave the same as an ordinary
  Class.

- We don't create ShadowClass._inferenceInfo at the time of
  ShadowClass creation; we wait until a builder is stored.  This will
  allow ShadowClass objects with no inference info to be easily
  created in unit tests.

Change-Id: I0dd2d65b0c477b069ec36872c13b19ba8ebbd021
Reviewed-on: https://dart-review.googlesource.com/12382
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-10-10 04:52:41 +00:00
Paul Berry 9799028747 Resolve inherited accessors before computing forwarding stubs.
This is necessary because the need for a forwarding stub may be
affected by the types of inherited accessors, and the types of
inherited accessors may need to be determined by type inference.

Change-Id: I160cf21186485d2572301f3cda8621ede517c47b
Reviewed-on: https://dart-review.googlesource.com/12400
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-10-10 03:45:47 +00:00
Paul Berry a5d461fbf5 Move instrumentation of top level inferred types to a later pass.
This will simplify integrating top level type inference with the
InterfaceResolver, since the instrumentation logic won't have to be
migrated.

Change-Id: I89a23888d92622549c493249fd3d98c6ee5af8da
Reviewed-on: https://dart-review.googlesource.com/12124
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-06 23:07:47 +00:00
Sigmund Cherem 80e7d3b35f Build a strong version of outline.dll, and use it for front end strong mode tests.
(rebases CL 11366 after Peter's changes)

Change-Id: If9f3d331fb953a9890fa7952bd472cc39f541e84
Reviewed-on: https://dart-review.googlesource.com/11965
Reviewed-by: Paul Berry <paulberry@google.com>
2017-10-06 20:12:59 +00:00
Konstantin Shcheglov 31a3c9f466 Add reset() to IncrementalKernelGenerator.
R=ahe@google.com, paulberry@google.com, sigmund@google.com

Bug: https://github.com/dart-lang/sdk/issues/31021
Change-Id: I6fffe2979cecdeca91a2582f26ce24449c9a3b79
Reviewed-on: https://dart-review.googlesource.com/11962
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2017-10-06 17:49:01 +00:00
Peter von der Ahé 16aa720d27 Remove compiling platform.dill from patch_sdk.dart
This separates compiling platform.dill files from the patch_sdk.dart
script. The motivation for that is that I'm working on reading patch
files directly from Fasta, so we can completely remove the build step
for generating patched_sdk and dart2js_patched_sdk.

Short-term this should allow Paul to add a strong-mode version of
platform.dill without causing to many conflicts with my work on
patches.

Change-Id: I1150845b2986348d4fffe27092701d8a9b57ea54
Reviewed-on: https://dart-review.googlesource.com/11506
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2017-10-06 15:34:37 +00:00
Paul Berry 1f0d2aa65d Remove old type inference logic from front_end.
Change-Id: I451c9a06466fb1836dd502f0d7b5c565403f0ce9
Reviewed-on: https://dart-review.googlesource.com/11646
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-05 21:37:32 +00:00
Paul Berry b73bcd932f Merge top level type inference of methods into InterfaceResolver.
Type inference of methods now occurs during
SourceLoader.prepareTopLevelInference.  Since this method visits
classes in class hierarchy order, we no longer need special logic to
ensure that base classes are inferred before derived classes.

Change-Id: Idf9f67226005bee6986d026c255e83926b4253d6
Reviewed-on: https://dart-review.googlesource.com/11560
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-10-05 19:05:11 +00:00
Paul Berry 6fce6ba854 Modify InterfaceResolver to resolve non-accessors earlier.
We only need to retain long-lived forwarding nodes for getters and
setters; methods and operators can be resolved immediately, since
their resolution can't depend on top level type inference of
initializers.

This should help speed up InterfaceResolver by reducing the number of
long-lived objects it leaves in the heap.

Change-Id: I05f8d5ed1c12968f4382d43ae23955171cdbfc05
Reviewed-on: https://dart-review.googlesource.com/11241
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-10-05 05:17:16 +00:00
Alexander Markov 9ee73fe322 [Kernel] Remove outdated and duplicated front-end Targets
This CL replaces outdated VmTarget and FlutterTarget with VmFastaTarget
and FlutterFastaTarget. 'Fasta' suffix is droped from target names.

The new FlutterTarget extends VmTarget, so they share more code.

Change-Id: Id79956698a889c9a49b8a67914f1f96a731407ab
Reviewed-on: https://dart-review.googlesource.com/9423
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2017-10-04 18:02:49 +00:00
Paul Berry 82623e49ee Mark forwarding stubs as abstract/concrete correctly.
Change-Id: I986f0bcd079a206e1d055762e5443e3b32ded295
Reviewed-on: https://dart-review.googlesource.com/10701
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-03 21:02:23 +00:00
Paul Berry 310c153eb6 Substitute generic function type parameters when making forwarding stubs.
When creating a forwarding stub for a method like this:

class C<T> {
  void foo<U>(T x, U y) {}
}
class D<V> extends C<V> {
  // Forwarding stub needed here
}

Two substitutions need to be done:

- We need to substitute V in place of T.

- We need to substitute the generic parameter for the forwarding stub
  in place of the generic parameter for the method being overridden.

So the generated method should look like this:

class D<V> extends C<V> {
  void foo<W>(V x, W y) => super.foo<W>(x, y);
}

Change-Id: Id846611c499b9aad4f042380862cbad08a6f1c17
Reviewed-on: https://dart-review.googlesource.com/10581
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-10-03 20:38:41 +00:00
Paul Berry eb7fc7d158 Tag forwarding stubs with a boolean flag in the kernel representation.
Change-Id: I5cdd05acd79f149b3702f982b1289930078d4e1b
Reviewed-on: https://dart-review.googlesource.com/10620
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-10-03 17:17:09 +00:00
Peter von der Ahé cefe4d5d65 Move compile_platform_test.dart to tool directory.
This also reverts "Move command_line.dart and most of compile_platform.dart into lib/"

This reverts commit 1916dc75e6.

Change-Id: I2598514c6bb62eec392bd00f20b15aac72b6fa42
Reviewed-on: https://dart-review.googlesource.com/9600
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Peter von der Ahé <ahe@google.com>
2017-10-02 16:23:56 +00:00
Aske Simon Christensen accddd1d97 Use error message templates for error tokens
Also fixes unicode U+ notation in error messages to use uppercase
letters for the hex code, as per the Unicode Standard conventions.

Closes https://github.com/dart-lang/sdk/issues/29985
Change-Id: I6397e03cb3e0d5eca156621bb4b19dfa643d9437
Reviewed-on: https://dart-review.googlesource.com/9320
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2017-10-02 14:23:26 +00:00
Paul Berry 17a4f66126 Instrument the creation of forwarding stubs.
Change-Id: I98d15cdeaff72da4b6e4b8532689c24f42b6d501
Reviewed-on: https://dart-review.googlesource.com/9860
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-09-30 18:27:25 +00:00
Paul Berry 3d2eba4d7f Start making use of the new InterfaceResolver class.
For the moment there is some duplicate functionality: both
InterfaceResolver and CovariancePropagator will try to propagate
covariance annotations.  This is ok for the short term, since
InterfaceResolver is still incomplete.  Once InterfaceResolver is
complete, I'll remove CovariancePropagater.

Note that forwarding stubs are now created, but they are not yet added
to classes, so they don't appear in the compiled kernel output.

Change-Id: I0a1814bd2abc5b63dbf7ceb6fc45f3da81728ee9
Reviewed-on: https://dart-review.googlesource.com/9788
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-09-30 14:47:26 +00:00
Paul Berry 46a8c79cf2 Add the ability to create forwarding stubs for operators.
Change-Id: Icc60faa9b6f706a0344a4ba3fdbe29ba61bcc078
Reviewed-on: https://dart-review.googlesource.com/9786
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-09-29 21:38:14 +00:00
Paul Berry 112eed2e55 Separate creation of forwarding stubs from creation of their implementations.
This is necessary for two reasons:

- Sometimes we need to create a forwading stub that is abstract.

- Sometimes a class has an existing abstract member that needs to be
  given an implementation.

Change-Id: I1fdb91ff421c1cd1234141db9c9b2190870164fa
Reviewed-on: https://dart-review.googlesource.com/9121
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-09-28 18:03:23 +00:00
Paul Berry c90e0b9cb3 Propagate covariance fixes to fields.
Change-Id: Iedd00f8d9acb6208cbdd127a1a39a48a1f10ddda
Reviewed-on: https://dart-review.googlesource.com/9120
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2017-09-28 17:59:53 +00:00
Régis Crelier db8b20107b Revert "Revert "Dart Core Lib change to support generic functions in class NoSuchMethodError.""
This reverts commit 8cf9ef22c4.

The expectations in Dart2js and Kernel tests have now been updated.

Change-Id: I9d65ff207490cfc783849b1b726db81cf56ecfc2
Reviewed-on: https://dart-review.googlesource.com/9124
Reviewed-by: Régis Crelier <regis@google.com>
2017-09-28 00:27:24 +00:00
Paul Berry f406efd265 In InterfaceResolver, favor inheriting the first member with the proper type.
We have to generate a forwarding stub whenever the inherited member
isn't the same as the one that ClassHierarchy would have chosen, and
ClassHierarchy favors inheriting the first member.  So this will avoid
creation of unnecessary forwarding stubs.

Change-Id: If2411c6ed0474da66544735b196f8042f98c2591
Reviewed-on: https://dart-review.googlesource.com/9063
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2017-09-27 22:38:47 +00:00