Fix 15721: When checking for bad overrides we must eagerly finalize superclasses.

R=regis@google.com

Review URL: https://codereview.chromium.org//128263005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31628 260f80e4-7a28-3924-810f-c04153c831b5
This commit is contained in:
srdjan@google.com 2014-01-08 21:45:05 +00:00
parent 12ad69b7d4
commit b7d93c342a
2 changed files with 4 additions and 2 deletions

View file

@ -1273,6 +1273,9 @@ void ClassFinalizer::ResolveAndFinalizeMemberTypes(const Class& cls) {
// A constructor cannot override anything.
for (intptr_t i = 0; i < interfaces.Length(); i++) {
super_class ^= interfaces.At(i);
// Finalize superclass since overrides check relies on all members
// of the superclass to be finalized.
FinalizeClass(super_class);
overridden_function = super_class.LookupDynamicFunction(name);
if (!overridden_function.IsNull() &&
!function.HasCompatibleParametersWith(overridden_function,

View file

@ -164,8 +164,7 @@ class Stdin extends _StdStream implements Stream<List<int>> {
*
* Use [hasTerminal] to test if there is a terminal associated to stdout.
*/
class Stdout extends _StdSink {
// TODO(15721): Should implement IOSink (for documentation purpose).
class Stdout extends _StdSink implements IOSink {
Stdout._(IOSink sink) : super(sink);
/**