commit | 23e379d0aa3d9c6a9a279d194de95effaa48e9ac | [log] [tgz] |
---|---|---|
author | Daniel Hillerström <hillerstrom@google.com> | Thu Aug 23 14:36:40 2018 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Thu Aug 23 14:36:40 2018 +0000 |
tree | c396d230835344d746ced889e98182b9bd542b89 | |
parent | b8ee603eb2163eefa26817d2aa78386a0621e0d4 [diff] |
Checks whether an interface is implemented multiple times. It is a compile-time error if an interface appears multiple times across the extends and implements clauses. This CL implements a check to detect the aforementioned case. A previous commit implemented this by expanding and refactoring the restricted super types check in source_loader.dart (c.f. checkSemantics method). The restricted super types check decides whether a type is allowed to appear in an 'extends', 'implements', or 'with' clause. However, it turned out it may have sat too early in the compilation pipeline as it failed to detect the following case class A implements Object {} I decided that it was somewhat suboptimal to implement a special case for "Object". Therefore I have moved the check to a later stage in the pipeline, where classes without a super class have had the Object class injected as their default super class. The check is now implemented in kernel_class_builder.dart (c.f. checkSupertypes method). Closes https://github.com/dart-lang/sdk/issues/34193 Change-Id: Ie7153c896337b589118cac4b80e9df8ea5a09daa Reviewed-on: https://dart-review.googlesource.com/70864 Commit-Queue: Daniel Hillerström <hillerstrom@google.com> Reviewed-by: Aske Simon Christensen <askesc@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.