Index: pkg/compiler/lib/src/resolution/class_members.dart |
diff --git a/pkg/compiler/lib/src/resolution/class_members.dart b/pkg/compiler/lib/src/resolution/class_members.dart |
index a23a4906e9c6dd8b120a1e480a738f086bd24714..36feaa46866aafe5bb7f12ca1a67cb8ff3c1f631 100644 |
--- a/pkg/compiler/lib/src/resolution/class_members.dart |
+++ b/pkg/compiler/lib/src/resolution/class_members.dart |
@@ -6,7 +6,8 @@ library dart2js.resolution.compute_members; |
import '../common.dart'; |
import '../common/names.dart' show |
- Identifiers; |
+ Identifiers, |
+ Names; |
import '../common/resolution.dart' show |
Resolution; |
import '../compiler.dart' show |
@@ -76,9 +77,12 @@ abstract class MembersCreator { |
/// Compute all members of [cls] and checked that [cls] implements its |
/// interface unless it is abstract or declares a `noSuchMethod` method. |
void computeAllMembers() { |
- Map<Name, Member> declaredMembers = computeMembers(null, null); |
- if (!cls.isAbstract && |
- !declaredMembers.containsKey(const PublicName('noSuchMethod'))) { |
+ computeMembers(null, null); |
+ if (!cls.isAbstract) { |
+ Member member = classMembers[Names.noSuchMethod_]; |
+ if (member != null && !member.declarer.isObject) { |
+ return; |
+ } |
// Check for unimplemented members on concrete classes that neither have |
// a `@proxy` annotation nor declare a `noSuchMethod` method. |
checkInterfaceImplementation(); |