commit | ba2417fdc026629a29f9fe3ac059aaa831483a33 | [log] [tgz] |
---|---|---|
author | Paul Berry <paulberry@google.com> | Mon Dec 11 13:02:19 2017 +0000 |
committer | Paul Berry <paulberry@google.com> | Mon Dec 11 13:02:19 2017 +0000 |
tree | cacffa07c6517e578013b3be7a2451136ea8e134 | |
parent | 50865e93876c9b87ae2c65f009145e4fdeca878f [diff] |
Fix SDK errors due to inconsistent inheritance of Operator==. The informal spec for strong mode top level inference (https://github.com/dart-lang/sdk/pull/28218) says "If there are multiple overridden/implemented methods, and any two of them have non-equal types (declared or inferred) for a parameter position which is being inferred for the overriding method, it is an error." This CL fixes several SDK errors that arise from this rule. For example, the classes _Closure, Function, and Object contained members declared as follows: class _Closure implements Function { bool operator ==(other) ... } class Function { bool operator ==(Object other) ... } class Object { bool operator ==(other) ... } The type of Object's operator == was (dynamic) -> bool; the type of Function's operator == was (Object) -> bool; therefore the type of _Closure's operator == (which overrides both, since _Closure extends Object and implements Function) cannot be inferred and must be specified. A similar situation exists for _Double and _IntegerImplementation (both implement num, which declares operator == to have type (Object) -> bool), and _Uri (which implements Uri, which declares operator == to have type (Object) -> bool). This CL fixes the error by specifying the type explicitly in the classes _Closure, _Double, _IntegerImplementation, and _Uri. Change-Id: I91f7ceef8549399d438ba4be8c408493b3f338db Reviewed-on: https://dart-review.googlesource.com/28100 Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.
Visit the dartlang.org to learn more about the language, tools, getting started, and more.
Browse pub.dartlang.org for more packages and libraries contributed by the community and the Dart team.
If you want to build Dart yourself, here is a guide to getting the source, preparing your machine to build the SDK, and building.
There are more documents on our wiki.
The easiest way to contribute to Dart is to file issues.
You can also contribute patches, as described in Contributing.