[fasta] Correct override check for methods with covariant parameters
Bug: #32613
Change-Id: Id69e793afd2c933294299d796a28b66db6b5de17
Reviewed-on: https://dart-review.googlesource.com/64840
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_class_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_class_builder.dart
index cecffd7..854ac86 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_class_builder.dart
@@ -289,8 +289,26 @@
void checkOverrides(
ClassHierarchy hierarchy, TypeEnvironment typeEnvironment) {
- hierarchy.forEachOverridePair(cls,
- (Member declaredMember, Member interfaceMember, bool isSetter) {
+ handleSeenCovariant(
+ Member declaredMember,
+ Member interfaceMember,
+ bool isSetter,
+ callback(
+ Member declaredMember, Member interfaceMember, bool isSetter)) {
+ // When a parameter is covariant we have to check that we also
+ // override the same member in all parents.
+ for (Supertype supertype in interfaceMember.enclosingClass.supers) {
+ Member m = hierarchy.getInterfaceMember(
+ supertype.classNode, interfaceMember.name,
+ setter: isSetter);
+ if (m != null) {
+ callback(declaredMember, m, isSetter);
+ }
+ }
+ }
+
+ overridePairCallback(
+ Member declaredMember, Member interfaceMember, bool isSetter) {
if (declaredMember is Constructor || interfaceMember is Constructor) {
unimplemented("Constructor in override check.",
declaredMember.fileOffset, fileUri);
@@ -298,8 +316,12 @@
if (declaredMember is Procedure && interfaceMember is Procedure) {
if (declaredMember.kind == ProcedureKind.Method &&
interfaceMember.kind == ProcedureKind.Method) {
- checkMethodOverride(
+ bool seenCovariant = checkMethodOverride(
hierarchy, typeEnvironment, declaredMember, interfaceMember);
+ if (seenCovariant) {
+ handleSeenCovariant(declaredMember, interfaceMember, isSetter,
+ overridePairCallback);
+ }
}
if (declaredMember.kind == ProcedureKind.Getter &&
interfaceMember.kind == ProcedureKind.Getter) {
@@ -308,8 +330,12 @@
}
if (declaredMember.kind == ProcedureKind.Setter &&
interfaceMember.kind == ProcedureKind.Setter) {
- checkSetterOverride(
+ bool seenCovariant = checkSetterOverride(
hierarchy, typeEnvironment, declaredMember, interfaceMember);
+ if (seenCovariant) {
+ handleSeenCovariant(declaredMember, interfaceMember, isSetter,
+ overridePairCallback);
+ }
}
} else {
bool declaredMemberHasGetter = declaredMember is Field ||
@@ -324,12 +350,18 @@
checkGetterOverride(
hierarchy, typeEnvironment, declaredMember, interfaceMember);
} else if (declaredMemberHasSetter && interfaceMemberHasSetter) {
- checkSetterOverride(
+ bool seenCovariant = checkSetterOverride(
hierarchy, typeEnvironment, declaredMember, interfaceMember);
+ if (seenCovariant) {
+ handleSeenCovariant(declaredMember, interfaceMember, isSetter,
+ overridePairCallback);
+ }
}
}
// TODO(ahe): Handle other cases: accessors, operators, and fields.
- });
+ }
+
+ hierarchy.forEachOverridePair(cls, overridePairCallback);
}
void checkAbstractMembers(CoreTypes coreTypes, ClassHierarchy hierarchy) {
@@ -728,7 +760,9 @@
return false;
}
- void checkMethodOverride(
+ /// Returns whether a covariant parameter was seen and more methods thus have
+ /// to be checked.
+ bool checkMethodOverride(
ClassHierarchy hierarchy,
TypeEnvironment typeEnvironment,
Procedure declaredMember,
@@ -736,10 +770,11 @@
if (declaredMember.enclosingClass != cls) {
// TODO(ahe): Include these checks as well, but the message needs to
// explain that [declaredMember] is inherited.
- return;
+ return false;
}
assert(declaredMember.kind == ProcedureKind.Method);
assert(interfaceMember.kind == ProcedureKind.Method);
+ bool seenCovariant = false;
FunctionNode declaredFunction = declaredMember.function;
FunctionNode interfaceFunction = interfaceMember.function;
@@ -807,10 +842,11 @@
interfaceFunction.positionalParameters[i].type,
declaredParameter.isCovariant,
declaredParameter);
+ if (declaredParameter.isCovariant) seenCovariant = true;
}
if (declaredFunction.namedParameters.isEmpty &&
interfaceFunction.namedParameters.isEmpty) {
- return;
+ return seenCovariant;
}
if (declaredFunction.namedParameters.length <
interfaceFunction.namedParameters.length) {
@@ -875,7 +911,9 @@
interfaceNamedParameters.current.type,
declaredParameter.isCovariant,
declaredParameter);
+ if (declaredParameter.isCovariant) seenCovariant = true;
}
+ return seenCovariant;
}
void checkGetterOverride(
@@ -896,7 +934,9 @@
interfaceMember, declaredType, interfaceType, false, null);
}
- void checkSetterOverride(
+ /// Returns whether a covariant parameter was seen and more methods thus have
+ /// to be checked.
+ bool checkSetterOverride(
ClassHierarchy hierarchy,
TypeEnvironment typeEnvironment,
Member declaredMember,
@@ -904,7 +944,7 @@
if (declaredMember.enclosingClass != cls) {
// TODO(paulberry): Include these checks as well, but the message needs to
// explain that [declaredMember] is inherited.
- return;
+ return false;
}
Substitution interfaceSubstitution = _computeInterfaceSubstitution(
hierarchy, declaredMember, interfaceMember, null, null);
@@ -924,6 +964,7 @@
isCovariant,
declaredParameter,
asIfDeclaredParameter: true);
+ return isCovariant;
}
String get fullNameForErrors {
diff --git a/tests/language_2/language_2_dart2js.status b/tests/language_2/language_2_dart2js.status
index 2e158a0..329ec9c 100644
--- a/tests/language_2/language_2_dart2js.status
+++ b/tests/language_2/language_2_dart2js.status
@@ -598,8 +598,6 @@
identical_const_test/04: MissingCompileTimeError
issue18628_2_test/01: MissingCompileTimeError
issue23244_test: Crash # 'file:*/pkg/compiler/lib/src/js_emitter/runtime_type_generator.dart': Failed assertion: line 208 pos 18: '!(_useKernel && _strongMode && !_disableRtiOptimization) ||
-issue31596_override_test/07: MissingCompileTimeError
-issue31596_override_test/08: MissingCompileTimeError
library_env_test/has_no_html_support: RuntimeError
library_env_test/has_no_io_support: RuntimeError
malbounded_instantiation_test/01: MissingCompileTimeError
@@ -791,8 +789,6 @@
invocation_mirror_test: RuntimeError
issue18628_2_test/01: MissingCompileTimeError
issue23244_test: Crash # Interpolated value #1 is not an Expression or List of Expressions: [VariableUse(f), Instance of 'LiteralNull', null]
-issue31596_override_test/07: MissingCompileTimeError
-issue31596_override_test/08: MissingCompileTimeError
library_env_test/has_no_html_support: RuntimeError
library_env_test/has_no_io_support: RuntimeError
malbounded_instantiation_test/01: MissingCompileTimeError
diff --git a/tests/language_2/language_2_dartdevc.status b/tests/language_2/language_2_dartdevc.status
index 9935e31..009e069 100644
--- a/tests/language_2/language_2_dartdevc.status
+++ b/tests/language_2/language_2_dartdevc.status
@@ -397,8 +397,6 @@
implicit_creation/implicit_const_not_default_values_test/e9: Pass
instantiate_tearoff_of_call_test: CompileTimeError
issue18628_2_test/01: MissingCompileTimeError
-issue31596_override_test/07: MissingCompileTimeError
-issue31596_override_test/08: MissingCompileTimeError
issue31596_super_test/01: CompileTimeError
issue31596_super_test/02: MissingCompileTimeError
issue31596_super_test/03: CompileTimeError
diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status
index 351c684..e046a90 100644
--- a/tests/language_2/language_2_kernel.status
+++ b/tests/language_2/language_2_kernel.status
@@ -255,8 +255,6 @@
field3_test/02: MissingCompileTimeError # Issue 33022
generic_methods_bounds_test/01: MissingCompileTimeError # Issue 33018
generic_methods_recursive_bound_test/02: MissingCompileTimeError # Issue 33018
-issue31596_override_test/07: MissingCompileTimeError
-issue31596_override_test/08: MissingCompileTimeError
issue31596_super_test/02: MissingCompileTimeError
issue31596_super_test/04: MissingCompileTimeError
malbounded_instantiation_test/01: MissingCompileTimeError # Issue 33018
diff --git a/tests/language_2/override_inheritance_method2_test.dart b/tests/language_2/override_inheritance_method2_test.dart
new file mode 100644
index 0000000..e22571f
--- /dev/null
+++ b/tests/language_2/override_inheritance_method2_test.dart
@@ -0,0 +1,1112 @@
+// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+main() {
+ new C();
+}
+
+class A {
+ method1(covariant dynamic a) => null; //# 001: ok
+ method2(covariant dynamic a) => null; //# 002: ok
+ method3(covariant dynamic a) => null; //# 003: ok
+ method4(covariant dynamic a) => null; //# 004: ok
+ method5(covariant dynamic a) => null; //# 005: ok
+ method6(covariant dynamic a) => null; //# 006: ok
+ method7(covariant dynamic a) => null; //# 007: ok
+ method8(covariant dynamic a) => null; //# 008: ok
+ method9(covariant dynamic a) => null; //# 009: ok
+ method10(covariant dynamic a) => null; //# 010: ok
+ method11(covariant dynamic a) => null; //# 011: ok
+ method12(covariant dynamic a) => null; //# 012: compile-time error
+ method13(covariant dynamic a) => null; //# 013: ok
+ method14(covariant dynamic a) => null; //# 014: ok
+ method15(covariant dynamic a) => null; //# 015: ok
+ method16(covariant dynamic a) => null; //# 016: compile-time error
+ method17(covariant dynamic a) => null; //# 017: ok
+ method18(covariant dynamic a) => null; //# 018: ok
+ method19(covariant dynamic a) => null; //# 019: ok
+ method20(covariant dynamic a) => null; //# 020: compile-time error
+ method21(covariant dynamic a) => null; //# 021: ok
+ method22(covariant dynamic a) => null; //# 022: ok
+ method23(covariant dynamic a) => null; //# 023: ok
+ method24(covariant dynamic a) => null; //# 024: compile-time error
+ method25(covariant dynamic a) => null; //# 025: ok
+ method26(covariant dynamic a) => null; //# 026: compile-time error
+ method27(covariant dynamic a) => null; //# 027: compile-time error
+ method28(covariant dynamic a) => null; //# 028: ok
+ method29(covariant dynamic a) => null; //# 029: ok
+ method30(covariant dynamic a) => null; //# 030: compile-time error
+ method31(covariant dynamic a) => null; //# 031: compile-time error
+ method32(covariant dynamic a) => null; //# 032: ok
+ method33(covariant dynamic a) => null; //# 033: ok
+ method34(covariant dynamic a) => null; //# 034: ok
+ method35(covariant dynamic a) => null; //# 035: ok
+ method36(covariant dynamic a) => null; //# 036: ok
+ method37(covariant dynamic a) => null; //# 037: ok
+ method38(covariant dynamic a) => null; //# 038: ok
+ method39(covariant dynamic a) => null; //# 039: ok
+ method40(covariant dynamic a) => null; //# 040: ok
+ method41(covariant dynamic a) => null; //# 041: ok
+ method42(covariant dynamic a) => null; //# 042: ok
+ method43(covariant dynamic a) => null; //# 043: ok
+ method44(covariant dynamic a) => null; //# 044: compile-time error
+ method45(covariant dynamic a) => null; //# 045: ok
+ method46(covariant dynamic a) => null; //# 046: ok
+ method47(covariant dynamic a) => null; //# 047: ok
+ method48(covariant dynamic a) => null; //# 048: compile-time error
+ method49(covariant dynamic a) => null; //# 049: ok
+ method50(covariant dynamic a) => null; //# 050: ok
+ method51(covariant dynamic a) => null; //# 051: ok
+ method52(covariant dynamic a) => null; //# 052: compile-time error
+ method53(covariant dynamic a) => null; //# 053: ok
+ method54(covariant dynamic a) => null; //# 054: ok
+ method55(covariant dynamic a) => null; //# 055: ok
+ method56(covariant dynamic a) => null; //# 056: compile-time error
+ method57(covariant dynamic a) => null; //# 057: ok
+ method58(covariant dynamic a) => null; //# 058: compile-time error
+ method59(covariant dynamic a) => null; //# 059: compile-time error
+ method60(covariant dynamic a) => null; //# 060: ok
+ method61(covariant dynamic a) => null; //# 061: ok
+ method62(covariant dynamic a) => null; //# 062: compile-time error
+ method63(covariant dynamic a) => null; //# 063: compile-time error
+ method64(covariant dynamic a) => null; //# 064: ok
+ method65(covariant num a) => null; //# 065: ok
+ method66(covariant num a) => null; //# 066: ok
+ method67(covariant num a) => null; //# 067: ok
+ method68(covariant num a) => null; //# 068: compile-time error
+ method69(covariant num a) => null; //# 069: ok
+ method70(covariant num a) => null; //# 070: ok
+ method71(covariant num a) => null; //# 071: ok
+ method72(covariant num a) => null; //# 072: compile-time error
+ method73(covariant num a) => null; //# 073: ok
+ method74(covariant num a) => null; //# 074: ok
+ method75(covariant num a) => null; //# 075: ok
+ method76(covariant num a) => null; //# 076: compile-time error
+ method77(covariant num a) => null; //# 077: ok
+ method78(covariant num a) => null; //# 078: ok
+ method79(covariant num a) => null; //# 079: ok
+ method80(covariant num a) => null; //# 080: compile-time error
+ method81(covariant num a) => null; //# 081: ok
+ method82(covariant num a) => null; //# 082: ok
+ method83(covariant num a) => null; //# 083: ok
+ method84(covariant num a) => null; //# 084: compile-time error
+ method85(covariant num a) => null; //# 085: ok
+ method86(covariant num a) => null; //# 086: ok
+ method87(covariant num a) => null; //# 087: ok
+ method88(covariant num a) => null; //# 088: compile-time error
+ method89(covariant num a) => null; //# 089: compile-time error
+ method90(covariant num a) => null; //# 090: ok
+ method91(covariant num a) => null; //# 091: ok
+ method92(covariant num a) => null; //# 092: ok
+ method93(covariant num a) => null; //# 093: compile-time error
+ method94(covariant num a) => null; //# 094: ok
+ method95(covariant num a) => null; //# 095: ok
+ method96(covariant num a) => null; //# 096: ok
+ method97(covariant num a) => null; //# 097: compile-time error
+ method98(covariant num a) => null; //# 098: ok
+ method99(covariant num a) => null; //# 099: ok
+ method100(covariant num a) => null; //# 100: ok
+ method101(covariant num a) => null; //# 101: compile-time error
+ method102(covariant num a) => null; //# 102: ok
+ method103(covariant num a) => null; //# 103: ok
+ method104(covariant num a) => null; //# 104: ok
+ method105(covariant num a) => null; //# 105: compile-time error
+ method106(covariant num a) => null; //# 106: ok
+ method107(covariant num a) => null; //# 107: ok
+ method108(covariant num a) => null; //# 108: ok
+ method109(covariant num a) => null; //# 109: compile-time error
+ method110(covariant num a) => null; //# 110: ok
+ method111(covariant num a) => null; //# 111: ok
+ method112(covariant num a) => null; //# 112: ok
+ method113(covariant num a) => null; //# 113: compile-time error
+ method114(covariant num a) => null; //# 114: compile-time error
+ method115(covariant int a) => null; //# 115: ok
+ method116(covariant int a) => null; //# 116: ok
+ method117(covariant int a) => null; //# 117: ok
+ method118(covariant int a) => null; //# 118: compile-time error
+ method119(covariant int a) => null; //# 119: ok
+ method120(covariant int a) => null; //# 120: ok
+ method121(covariant int a) => null; //# 121: ok
+ method122(covariant int a) => null; //# 122: compile-time error
+ method123(covariant int a) => null; //# 123: ok
+ method124(covariant int a) => null; //# 124: ok
+ method125(covariant int a) => null; //# 125: ok
+ method126(covariant int a) => null; //# 126: compile-time error
+ method127(covariant int a) => null; //# 127: ok
+ method128(covariant int a) => null; //# 128: ok
+ method129(covariant int a) => null; //# 129: ok
+ method130(covariant int a) => null; //# 130: compile-time error
+ method131(covariant int a) => null; //# 131: ok
+ method132(covariant int a) => null; //# 132: ok
+ method133(covariant int a) => null; //# 133: ok
+ method134(covariant int a) => null; //# 134: compile-time error
+ method135(covariant int a) => null; //# 135: ok
+ method136(covariant int a) => null; //# 136: ok
+ method137(covariant int a) => null; //# 137: ok
+ method138(covariant int a) => null; //# 138: compile-time error
+ method139(covariant int a) => null; //# 139: compile-time error
+ method140(covariant int a) => null; //# 140: ok
+ method141(covariant int a) => null; //# 141: ok
+ method142(covariant int a) => null; //# 142: ok
+ method143(covariant int a) => null; //# 143: compile-time error
+ method144(covariant int a) => null; //# 144: ok
+ method145(covariant int a) => null; //# 145: ok
+ method146(covariant int a) => null; //# 146: ok
+ method147(covariant int a) => null; //# 147: compile-time error
+ method148(covariant int a) => null; //# 148: ok
+ method149(covariant int a) => null; //# 149: ok
+ method150(covariant int a) => null; //# 150: ok
+ method151(covariant int a) => null; //# 151: compile-time error
+ method152(covariant int a) => null; //# 152: ok
+ method153(covariant int a) => null; //# 153: ok
+ method154(covariant int a) => null; //# 154: ok
+ method155(covariant int a) => null; //# 155: compile-time error
+ method156(covariant int a) => null; //# 156: ok
+ method157(covariant int a) => null; //# 157: ok
+ method158(covariant int a) => null; //# 158: ok
+ method159(covariant int a) => null; //# 159: compile-time error
+ method160(covariant int a) => null; //# 160: ok
+ method161(covariant int a) => null; //# 161: ok
+ method162(covariant int a) => null; //# 162: ok
+ method163(covariant int a) => null; //# 163: compile-time error
+ method164(covariant int a) => null; //# 164: compile-time error
+ method165(covariant String a) => null; //# 165: ok
+ method166(covariant String a) => null; //# 166: compile-time error
+ method167(covariant String a) => null; //# 167: compile-time error
+ method168(covariant String a) => null; //# 168: ok
+ method169(covariant String a) => null; //# 169: ok
+ method170(covariant String a) => null; //# 170: compile-time error
+ method171(covariant String a) => null; //# 171: compile-time error
+ method172(covariant String a) => null; //# 172: ok
+ method173(covariant String a) => null; //# 173: compile-time error
+ method174(covariant String a) => null; //# 174: compile-time error
+ method175(covariant String a) => null; //# 175: ok
+ method176(covariant String a) => null; //# 176: compile-time error
+ method177(covariant String a) => null; //# 177: compile-time error
+ method178(covariant String a) => null; //# 178: ok
+ method179(covariant String a) => null; //# 179: ok
+ method180(covariant String a) => null; //# 180: compile-time error
+ method181(covariant String a) => null; //# 181: compile-time error
+ method182(covariant String a) => null; //# 182: ok
+ method183(covariant String a) => null; //# 183: ok
+ method184(covariant String a) => null; //# 184: compile-time error
+ method185(covariant String a) => null; //# 185: compile-time error
+ method186(covariant String a) => null; //# 186: ok
+ method187(covariant String a) => null; //# 187: ok
+ method188(covariant String a) => null; //# 188: compile-time error
+ method189(covariant String a) => null; //# 189: compile-time error
+ method190(covariant String a) => null; //# 190: ok
+ method191(covariant String a) => null; //# 191: compile-time error
+ method192(covariant String a) => null; //# 192: compile-time error
+ method193(covariant String a) => null; //# 193: ok
+ method194(covariant String a) => null; //# 194: compile-time error
+ method195(covariant String a) => null; //# 195: compile-time error
+ method196(covariant String a) => null; //# 196: ok
+ method197(covariant String a) => null; //# 197: ok
+ method198(covariant String a) => null; //# 198: compile-time error
+ method199(covariant String a) => null; //# 199: compile-time error
+ method200(covariant String a) => null; //# 200: ok
+ method201(dynamic a) => null; //# 201: ok
+ method202(dynamic a) => null; //# 202: ok
+ method203(dynamic a) => null; //# 203: ok
+ method204(dynamic a) => null; //# 204: ok
+ method205(dynamic a) => null; //# 205: ok
+ method206(dynamic a) => null; //# 206: ok
+ method207(dynamic a) => null; //# 207: ok
+ method208(dynamic a) => null; //# 208: ok
+ method209(dynamic a) => null; //# 209: ok
+ method210(dynamic a) => null; //# 210: ok
+ method211(dynamic a) => null; //# 211: ok
+ method212(dynamic a) => null; //# 212: compile-time error
+ method213(dynamic a) => null; //# 213: ok
+ method214(dynamic a) => null; //# 214: ok
+ method215(dynamic a) => null; //# 215: ok
+ method216(dynamic a) => null; //# 216: compile-time error
+ method217(dynamic a) => null; //# 217: ok
+ method218(dynamic a) => null; //# 218: ok
+ method219(dynamic a) => null; //# 219: ok
+ method220(dynamic a) => null; //# 220: compile-time error
+ method221(dynamic a) => null; //# 221: ok
+ method222(dynamic a) => null; //# 222: ok
+ method223(dynamic a) => null; //# 223: ok
+ method224(dynamic a) => null; //# 224: compile-time error
+ method225(dynamic a) => null; //# 225: ok
+ method226(dynamic a) => null; //# 226: compile-time error
+ method227(dynamic a) => null; //# 227: compile-time error
+ method228(dynamic a) => null; //# 228: ok
+ method229(dynamic a) => null; //# 229: ok
+ method230(dynamic a) => null; //# 230: compile-time error
+ method231(dynamic a) => null; //# 231: compile-time error
+ method232(dynamic a) => null; //# 232: ok
+ method233(dynamic a) => null; //# 233: ok
+ method234(dynamic a) => null; //# 234: ok
+ method235(dynamic a) => null; //# 235: ok
+ method236(dynamic a) => null; //# 236: ok
+ method237(dynamic a) => null; //# 237: ok
+ method238(dynamic a) => null; //# 238: compile-time error
+ method239(dynamic a) => null; //# 239: compile-time error
+ method240(dynamic a) => null; //# 240: compile-time error
+ method241(dynamic a) => null; //# 241: compile-time error
+ method242(dynamic a) => null; //# 242: compile-time error
+ method243(dynamic a) => null; //# 243: compile-time error
+ method244(num a) => null; //# 244: ok
+ method245(num a) => null; //# 245: ok
+ method246(num a) => null; //# 246: ok
+ method247(num a) => null; //# 247: compile-time error
+ method248(num a) => null; //# 248: ok
+ method249(num a) => null; //# 249: ok
+ method250(num a) => null; //# 250: ok
+ method251(num a) => null; //# 251: compile-time error
+ method252(num a) => null; //# 252: ok
+ method253(num a) => null; //# 253: ok
+ method254(num a) => null; //# 254: ok
+ method255(num a) => null; //# 255: compile-time error
+ method256(num a) => null; //# 256: ok
+ method257(num a) => null; //# 257: ok
+ method258(num a) => null; //# 258: ok
+ method259(num a) => null; //# 259: compile-time error
+ method260(num a) => null; //# 260: ok
+ method261(num a) => null; //# 261: ok
+ method262(num a) => null; //# 262: ok
+ method263(num a) => null; //# 263: compile-time error
+ method264(num a) => null; //# 264: ok
+ method265(num a) => null; //# 265: ok
+ method266(num a) => null; //# 266: ok
+ method267(num a) => null; //# 267: compile-time error
+ method268(num a) => null; //# 268: compile-time error
+ method269(num a) => null; //# 269: ok
+ method270(num a) => null; //# 270: ok
+ method271(num a) => null; //# 271: ok
+ method272(num a) => null; //# 272: compile-time error
+ method273(num a) => null; //# 273: ok
+ method274(num a) => null; //# 274: compile-time error
+ method275(num a) => null; //# 275: compile-time error
+ method276(num a) => null; //# 276: compile-time error
+ method277(num a) => null; //# 277: ok
+ method278(num a) => null; //# 278: ok
+ method279(num a) => null; //# 279: ok
+ method280(num a) => null; //# 280: compile-time error
+ method281(num a) => null; //# 281: ok
+ method282(num a) => null; //# 282: ok
+ method283(num a) => null; //# 283: compile-time error
+ method284(num a) => null; //# 284: compile-time error
+ method285(num a) => null; //# 285: compile-time error
+ method286(num a) => null; //# 286: compile-time error
+ method287(int a) => null; //# 287: ok
+ method288(int a) => null; //# 288: ok
+ method289(int a) => null; //# 289: ok
+ method290(int a) => null; //# 290: compile-time error
+ method291(int a) => null; //# 291: ok
+ method292(int a) => null; //# 292: ok
+ method293(int a) => null; //# 293: ok
+ method294(int a) => null; //# 294: compile-time error
+ method295(int a) => null; //# 295: ok
+ method296(int a) => null; //# 296: ok
+ method297(int a) => null; //# 297: ok
+ method298(int a) => null; //# 298: compile-time error
+ method299(int a) => null; //# 299: ok
+ method300(int a) => null; //# 300: ok
+ method301(int a) => null; //# 301: ok
+ method302(int a) => null; //# 302: compile-time error
+ method303(int a) => null; //# 303: ok
+ method304(int a) => null; //# 304: ok
+ method305(int a) => null; //# 305: ok
+ method306(int a) => null; //# 306: compile-time error
+ method307(int a) => null; //# 307: ok
+ method308(int a) => null; //# 308: ok
+ method309(int a) => null; //# 309: ok
+ method310(int a) => null; //# 310: compile-time error
+ method311(int a) => null; //# 311: compile-time error
+ method312(int a) => null; //# 312: ok
+ method313(int a) => null; //# 313: ok
+ method314(int a) => null; //# 314: ok
+ method315(int a) => null; //# 315: compile-time error
+ method316(int a) => null; //# 316: ok
+ method317(int a) => null; //# 317: compile-time error
+ method318(int a) => null; //# 318: compile-time error
+ method319(int a) => null; //# 319: compile-time error
+ method320(int a) => null; //# 320: ok
+ method321(int a) => null; //# 321: ok
+ method322(int a) => null; //# 322: ok
+ method323(int a) => null; //# 323: compile-time error
+ method324(int a) => null; //# 324: ok
+ method325(int a) => null; //# 325: ok
+ method326(int a) => null; //# 326: compile-time error
+ method327(int a) => null; //# 327: compile-time error
+ method328(int a) => null; //# 328: ok
+ method329(int a) => null; //# 329: ok
+ method330(int a) => null; //# 330: ok
+ method331(int a) => null; //# 331: compile-time error
+ method332(int a) => null; //# 332: ok
+ method333(int a) => null; //# 333: ok
+ method334(int a) => null; //# 334: ok
+ method335(int a) => null; //# 335: compile-time error
+ method336(int a) => null; //# 336: compile-time error
+ method337(String a) => null; //# 337: ok
+ method338(String a) => null; //# 338: compile-time error
+ method339(String a) => null; //# 339: compile-time error
+ method340(String a) => null; //# 340: ok
+ method341(String a) => null; //# 341: ok
+ method342(String a) => null; //# 342: compile-time error
+ method343(String a) => null; //# 343: compile-time error
+ method344(String a) => null; //# 344: ok
+ method345(String a) => null; //# 345: compile-time error
+ method346(String a) => null; //# 346: compile-time error
+ method347(String a) => null; //# 347: ok
+ method348(String a) => null; //# 348: compile-time error
+ method349(String a) => null; //# 349: compile-time error
+ method350(String a) => null; //# 350: ok
+ method351(String a) => null; //# 351: ok
+ method352(String a) => null; //# 352: compile-time error
+ method353(String a) => null; //# 353: compile-time error
+ method354(String a) => null; //# 354: ok
+ method355(String a) => null; //# 355: ok
+ method356(String a) => null; //# 356: compile-time error
+ method357(String a) => null; //# 357: compile-time error
+ method358(String a) => null; //# 358: ok
+ method359(String a) => null; //# 359: ok
+ method360(String a) => null; //# 360: compile-time error
+ method361(String a) => null; //# 361: compile-time error
+ method362(String a) => null; //# 362: compile-time error
+ method363(String a) => null; //# 363: compile-time error
+ method364(String a) => null; //# 364: compile-time error
+ method365(String a) => null; //# 365: ok
+ method366(String a) => null; //# 366: compile-time error
+ method367(String a) => null; //# 367: compile-time error
+ method368(String a) => null; //# 368: ok
+ method369(String a) => null; //# 369: ok
+ method370(String a) => null; //# 370: compile-time error
+ method371(String a) => null; //# 371: compile-time error
+ method372(String a) => null; //# 372: ok
+}
+
+class B extends A {
+ method1(covariant dynamic a) => null; //# 001: continued
+ method2(covariant dynamic a) => null; //# 002: continued
+ method3(covariant dynamic a) => null; //# 003: continued
+ method4(covariant dynamic a) => null; //# 004: continued
+ method5(covariant dynamic a) => null; //# 005: continued
+ method6(covariant dynamic a) => null; //# 006: continued
+ method7(covariant dynamic a) => null; //# 007: continued
+ method8(covariant dynamic a) => null; //# 008: continued
+ method9(covariant num a) => null; //# 009: continued
+ method10(covariant num a) => null; //# 010: continued
+ method11(covariant num a) => null; //# 011: continued
+ method12(covariant num a) => null; //# 012: continued
+ method13(covariant num a) => null; //# 013: continued
+ method14(covariant num a) => null; //# 014: continued
+ method15(covariant num a) => null; //# 015: continued
+ method16(covariant num a) => null; //# 016: continued
+ method17(covariant int a) => null; //# 017: continued
+ method18(covariant int a) => null; //# 018: continued
+ method19(covariant int a) => null; //# 019: continued
+ method20(covariant int a) => null; //# 020: continued
+ method21(covariant int a) => null; //# 021: continued
+ method22(covariant int a) => null; //# 022: continued
+ method23(covariant int a) => null; //# 023: continued
+ method24(covariant int a) => null; //# 024: continued
+ method25(covariant String a) => null; //# 025: continued
+ method26(covariant String a) => null; //# 026: continued
+ method27(covariant String a) => null; //# 027: continued
+ method28(covariant String a) => null; //# 028: continued
+ method29(covariant String a) => null; //# 029: continued
+ method30(covariant String a) => null; //# 030: continued
+ method31(covariant String a) => null; //# 031: continued
+ method32(covariant String a) => null; //# 032: continued
+ method33(dynamic a) => null; //# 033: continued
+ method34(dynamic a) => null; //# 034: continued
+ method35(dynamic a) => null; //# 035: continued
+ method36(dynamic a) => null; //# 036: continued
+ method37(dynamic a) => null; //# 037: continued
+ method38(dynamic a) => null; //# 038: continued
+ method39(dynamic a) => null; //# 039: continued
+ method40(dynamic a) => null; //# 040: continued
+ method41(num a) => null; //# 041: continued
+ method42(num a) => null; //# 042: continued
+ method43(num a) => null; //# 043: continued
+ method44(num a) => null; //# 044: continued
+ method45(num a) => null; //# 045: continued
+ method46(num a) => null; //# 046: continued
+ method47(num a) => null; //# 047: continued
+ method48(num a) => null; //# 048: continued
+ method49(int a) => null; //# 049: continued
+ method50(int a) => null; //# 050: continued
+ method51(int a) => null; //# 051: continued
+ method52(int a) => null; //# 052: continued
+ method53(int a) => null; //# 053: continued
+ method54(int a) => null; //# 054: continued
+ method55(int a) => null; //# 055: continued
+ method56(int a) => null; //# 056: continued
+ method57(String a) => null; //# 057: continued
+ method58(String a) => null; //# 058: continued
+ method59(String a) => null; //# 059: continued
+ method60(String a) => null; //# 060: continued
+ method61(String a) => null; //# 061: continued
+ method62(String a) => null; //# 062: continued
+ method63(String a) => null; //# 063: continued
+ method64(String a) => null; //# 064: continued
+ method65(covariant dynamic a) => null; //# 065: continued
+ method66(covariant dynamic a) => null; //# 066: continued
+ method67(covariant dynamic a) => null; //# 067: continued
+ method68(covariant dynamic a) => null; //# 068: continued
+ method69(covariant dynamic a) => null; //# 069: continued
+ method70(covariant dynamic a) => null; //# 070: continued
+ method71(covariant dynamic a) => null; //# 071: continued
+ method72(covariant dynamic a) => null; //# 072: continued
+ method73(covariant num a) => null; //# 073: continued
+ method74(covariant num a) => null; //# 074: continued
+ method75(covariant num a) => null; //# 075: continued
+ method76(covariant num a) => null; //# 076: continued
+ method77(covariant num a) => null; //# 077: continued
+ method78(covariant num a) => null; //# 078: continued
+ method79(covariant num a) => null; //# 079: continued
+ method80(covariant num a) => null; //# 080: continued
+ method81(covariant int a) => null; //# 081: continued
+ method82(covariant int a) => null; //# 082: continued
+ method83(covariant int a) => null; //# 083: continued
+ method84(covariant int a) => null; //# 084: continued
+ method85(covariant int a) => null; //# 085: continued
+ method86(covariant int a) => null; //# 086: continued
+ method87(covariant int a) => null; //# 087: continued
+ method88(covariant int a) => null; //# 088: continued
+ method89(covariant String a) => null; //# 089: continued
+ method90(dynamic a) => null; //# 090: continued
+ method91(dynamic a) => null; //# 091: continued
+ method92(dynamic a) => null; //# 092: continued
+ method93(dynamic a) => null; //# 093: continued
+ method94(dynamic a) => null; //# 094: continued
+ method95(dynamic a) => null; //# 095: continued
+ method96(dynamic a) => null; //# 096: continued
+ method97(dynamic a) => null; //# 097: continued
+ method98(num a) => null; //# 098: continued
+ method99(num a) => null; //# 099: continued
+ method100(num a) => null; //# 100: continued
+ method101(num a) => null; //# 101: continued
+ method102(num a) => null; //# 102: continued
+ method103(num a) => null; //# 103: continued
+ method104(num a) => null; //# 104: continued
+ method105(num a) => null; //# 105: continued
+ method106(int a) => null; //# 106: continued
+ method107(int a) => null; //# 107: continued
+ method108(int a) => null; //# 108: continued
+ method109(int a) => null; //# 109: continued
+ method110(int a) => null; //# 110: continued
+ method111(int a) => null; //# 111: continued
+ method112(int a) => null; //# 112: continued
+ method113(int a) => null; //# 113: continued
+ method114(String a) => null; //# 114: continued
+ method115(covariant dynamic a) => null; //# 115: continued
+ method116(covariant dynamic a) => null; //# 116: continued
+ method117(covariant dynamic a) => null; //# 117: continued
+ method118(covariant dynamic a) => null; //# 118: continued
+ method119(covariant dynamic a) => null; //# 119: continued
+ method120(covariant dynamic a) => null; //# 120: continued
+ method121(covariant dynamic a) => null; //# 121: continued
+ method122(covariant dynamic a) => null; //# 122: continued
+ method123(covariant num a) => null; //# 123: continued
+ method124(covariant num a) => null; //# 124: continued
+ method125(covariant num a) => null; //# 125: continued
+ method126(covariant num a) => null; //# 126: continued
+ method127(covariant num a) => null; //# 127: continued
+ method128(covariant num a) => null; //# 128: continued
+ method129(covariant num a) => null; //# 129: continued
+ method130(covariant num a) => null; //# 130: continued
+ method131(covariant int a) => null; //# 131: continued
+ method132(covariant int a) => null; //# 132: continued
+ method133(covariant int a) => null; //# 133: continued
+ method134(covariant int a) => null; //# 134: continued
+ method135(covariant int a) => null; //# 135: continued
+ method136(covariant int a) => null; //# 136: continued
+ method137(covariant int a) => null; //# 137: continued
+ method138(covariant int a) => null; //# 138: continued
+ method139(covariant String a) => null; //# 139: continued
+ method140(dynamic a) => null; //# 140: continued
+ method141(dynamic a) => null; //# 141: continued
+ method142(dynamic a) => null; //# 142: continued
+ method143(dynamic a) => null; //# 143: continued
+ method144(dynamic a) => null; //# 144: continued
+ method145(dynamic a) => null; //# 145: continued
+ method146(dynamic a) => null; //# 146: continued
+ method147(dynamic a) => null; //# 147: continued
+ method148(num a) => null; //# 148: continued
+ method149(num a) => null; //# 149: continued
+ method150(num a) => null; //# 150: continued
+ method151(num a) => null; //# 151: continued
+ method152(num a) => null; //# 152: continued
+ method153(num a) => null; //# 153: continued
+ method154(num a) => null; //# 154: continued
+ method155(num a) => null; //# 155: continued
+ method156(int a) => null; //# 156: continued
+ method157(int a) => null; //# 157: continued
+ method158(int a) => null; //# 158: continued
+ method159(int a) => null; //# 159: continued
+ method160(int a) => null; //# 160: continued
+ method161(int a) => null; //# 161: continued
+ method162(int a) => null; //# 162: continued
+ method163(int a) => null; //# 163: continued
+ method164(String a) => null; //# 164: continued
+ method165(covariant dynamic a) => null; //# 165: continued
+ method166(covariant dynamic a) => null; //# 166: continued
+ method167(covariant dynamic a) => null; //# 167: continued
+ method168(covariant dynamic a) => null; //# 168: continued
+ method169(covariant dynamic a) => null; //# 169: continued
+ method170(covariant dynamic a) => null; //# 170: continued
+ method171(covariant dynamic a) => null; //# 171: continued
+ method172(covariant dynamic a) => null; //# 172: continued
+ method173(covariant num a) => null; //# 173: continued
+ method174(covariant int a) => null; //# 174: continued
+ method175(covariant String a) => null; //# 175: continued
+ method176(covariant String a) => null; //# 176: continued
+ method177(covariant String a) => null; //# 177: continued
+ method178(covariant String a) => null; //# 178: continued
+ method179(covariant String a) => null; //# 179: continued
+ method180(covariant String a) => null; //# 180: continued
+ method181(covariant String a) => null; //# 181: continued
+ method182(covariant String a) => null; //# 182: continued
+ method183(dynamic a) => null; //# 183: continued
+ method184(dynamic a) => null; //# 184: continued
+ method185(dynamic a) => null; //# 185: continued
+ method186(dynamic a) => null; //# 186: continued
+ method187(dynamic a) => null; //# 187: continued
+ method188(dynamic a) => null; //# 188: continued
+ method189(dynamic a) => null; //# 189: continued
+ method190(dynamic a) => null; //# 190: continued
+ method191(num a) => null; //# 191: continued
+ method192(int a) => null; //# 192: continued
+ method193(String a) => null; //# 193: continued
+ method194(String a) => null; //# 194: continued
+ method195(String a) => null; //# 195: continued
+ method196(String a) => null; //# 196: continued
+ method197(String a) => null; //# 197: continued
+ method198(String a) => null; //# 198: continued
+ method199(String a) => null; //# 199: continued
+ method200(String a) => null; //# 200: continued
+ method201(covariant dynamic a) => null; //# 201: continued
+ method202(covariant dynamic a) => null; //# 202: continued
+ method203(covariant dynamic a) => null; //# 203: continued
+ method204(covariant dynamic a) => null; //# 204: continued
+ method205(covariant dynamic a) => null; //# 205: continued
+ method206(covariant dynamic a) => null; //# 206: continued
+ method207(covariant dynamic a) => null; //# 207: continued
+ method208(covariant dynamic a) => null; //# 208: continued
+ method209(covariant num a) => null; //# 209: continued
+ method210(covariant num a) => null; //# 210: continued
+ method211(covariant num a) => null; //# 211: continued
+ method212(covariant num a) => null; //# 212: continued
+ method213(covariant num a) => null; //# 213: continued
+ method214(covariant num a) => null; //# 214: continued
+ method215(covariant num a) => null; //# 215: continued
+ method216(covariant num a) => null; //# 216: continued
+ method217(covariant int a) => null; //# 217: continued
+ method218(covariant int a) => null; //# 218: continued
+ method219(covariant int a) => null; //# 219: continued
+ method220(covariant int a) => null; //# 220: continued
+ method221(covariant int a) => null; //# 221: continued
+ method222(covariant int a) => null; //# 222: continued
+ method223(covariant int a) => null; //# 223: continued
+ method224(covariant int a) => null; //# 224: continued
+ method225(covariant String a) => null; //# 225: continued
+ method226(covariant String a) => null; //# 226: continued
+ method227(covariant String a) => null; //# 227: continued
+ method228(covariant String a) => null; //# 228: continued
+ method229(covariant String a) => null; //# 229: continued
+ method230(covariant String a) => null; //# 230: continued
+ method231(covariant String a) => null; //# 231: continued
+ method232(covariant String a) => null; //# 232: continued
+ method233(dynamic a) => null; //# 233: continued
+ method234(dynamic a) => null; //# 234: continued
+ method235(dynamic a) => null; //# 235: continued
+ method236(dynamic a) => null; //# 236: continued
+ method237(dynamic a) => null; //# 237: continued
+ method238(dynamic a) => null; //# 238: continued
+ method239(dynamic a) => null; //# 239: continued
+ method240(dynamic a) => null; //# 240: continued
+ method241(num a) => null; //# 241: continued
+ method242(int a) => null; //# 242: continued
+ method243(String a) => null; //# 243: continued
+ method244(covariant dynamic a) => null; //# 244: continued
+ method245(covariant dynamic a) => null; //# 245: continued
+ method246(covariant dynamic a) => null; //# 246: continued
+ method247(covariant dynamic a) => null; //# 247: continued
+ method248(covariant dynamic a) => null; //# 248: continued
+ method249(covariant dynamic a) => null; //# 249: continued
+ method250(covariant dynamic a) => null; //# 250: continued
+ method251(covariant dynamic a) => null; //# 251: continued
+ method252(covariant num a) => null; //# 252: continued
+ method253(covariant num a) => null; //# 253: continued
+ method254(covariant num a) => null; //# 254: continued
+ method255(covariant num a) => null; //# 255: continued
+ method256(covariant num a) => null; //# 256: continued
+ method257(covariant num a) => null; //# 257: continued
+ method258(covariant num a) => null; //# 258: continued
+ method259(covariant num a) => null; //# 259: continued
+ method260(covariant int a) => null; //# 260: continued
+ method261(covariant int a) => null; //# 261: continued
+ method262(covariant int a) => null; //# 262: continued
+ method263(covariant int a) => null; //# 263: continued
+ method264(covariant int a) => null; //# 264: continued
+ method265(covariant int a) => null; //# 265: continued
+ method266(covariant int a) => null; //# 266: continued
+ method267(covariant int a) => null; //# 267: continued
+ method268(covariant String a) => null; //# 268: continued
+ method269(dynamic a) => null; //# 269: continued
+ method270(dynamic a) => null; //# 270: continued
+ method271(dynamic a) => null; //# 271: continued
+ method272(dynamic a) => null; //# 272: continued
+ method273(dynamic a) => null; //# 273: continued
+ method274(dynamic a) => null; //# 274: continued
+ method275(dynamic a) => null; //# 275: continued
+ method276(dynamic a) => null; //# 276: continued
+ method277(num a) => null; //# 277: continued
+ method278(num a) => null; //# 278: continued
+ method279(num a) => null; //# 279: continued
+ method280(num a) => null; //# 280: continued
+ method281(num a) => null; //# 281: continued
+ method282(num a) => null; //# 282: continued
+ method283(num a) => null; //# 283: continued
+ method284(num a) => null; //# 284: continued
+ method285(int a) => null; //# 285: continued
+ method286(String a) => null; //# 286: continued
+ method287(covariant dynamic a) => null; //# 287: continued
+ method288(covariant dynamic a) => null; //# 288: continued
+ method289(covariant dynamic a) => null; //# 289: continued
+ method290(covariant dynamic a) => null; //# 290: continued
+ method291(covariant dynamic a) => null; //# 291: continued
+ method292(covariant dynamic a) => null; //# 292: continued
+ method293(covariant dynamic a) => null; //# 293: continued
+ method294(covariant dynamic a) => null; //# 294: continued
+ method295(covariant num a) => null; //# 295: continued
+ method296(covariant num a) => null; //# 296: continued
+ method297(covariant num a) => null; //# 297: continued
+ method298(covariant num a) => null; //# 298: continued
+ method299(covariant num a) => null; //# 299: continued
+ method300(covariant num a) => null; //# 300: continued
+ method301(covariant num a) => null; //# 301: continued
+ method302(covariant num a) => null; //# 302: continued
+ method303(covariant int a) => null; //# 303: continued
+ method304(covariant int a) => null; //# 304: continued
+ method305(covariant int a) => null; //# 305: continued
+ method306(covariant int a) => null; //# 306: continued
+ method307(covariant int a) => null; //# 307: continued
+ method308(covariant int a) => null; //# 308: continued
+ method309(covariant int a) => null; //# 309: continued
+ method310(covariant int a) => null; //# 310: continued
+ method311(covariant String a) => null; //# 311: continued
+ method312(dynamic a) => null; //# 312: continued
+ method313(dynamic a) => null; //# 313: continued
+ method314(dynamic a) => null; //# 314: continued
+ method315(dynamic a) => null; //# 315: continued
+ method316(dynamic a) => null; //# 316: continued
+ method317(dynamic a) => null; //# 317: continued
+ method318(dynamic a) => null; //# 318: continued
+ method319(dynamic a) => null; //# 319: continued
+ method320(num a) => null; //# 320: continued
+ method321(num a) => null; //# 321: continued
+ method322(num a) => null; //# 322: continued
+ method323(num a) => null; //# 323: continued
+ method324(num a) => null; //# 324: continued
+ method325(num a) => null; //# 325: continued
+ method326(num a) => null; //# 326: continued
+ method327(num a) => null; //# 327: continued
+ method328(int a) => null; //# 328: continued
+ method329(int a) => null; //# 329: continued
+ method330(int a) => null; //# 330: continued
+ method331(int a) => null; //# 331: continued
+ method332(int a) => null; //# 332: continued
+ method333(int a) => null; //# 333: continued
+ method334(int a) => null; //# 334: continued
+ method335(int a) => null; //# 335: continued
+ method336(String a) => null; //# 336: continued
+ method337(covariant dynamic a) => null; //# 337: continued
+ method338(covariant dynamic a) => null; //# 338: continued
+ method339(covariant dynamic a) => null; //# 339: continued
+ method340(covariant dynamic a) => null; //# 340: continued
+ method341(covariant dynamic a) => null; //# 341: continued
+ method342(covariant dynamic a) => null; //# 342: continued
+ method343(covariant dynamic a) => null; //# 343: continued
+ method344(covariant dynamic a) => null; //# 344: continued
+ method345(covariant num a) => null; //# 345: continued
+ method346(covariant int a) => null; //# 346: continued
+ method347(covariant String a) => null; //# 347: continued
+ method348(covariant String a) => null; //# 348: continued
+ method349(covariant String a) => null; //# 349: continued
+ method350(covariant String a) => null; //# 350: continued
+ method351(covariant String a) => null; //# 351: continued
+ method352(covariant String a) => null; //# 352: continued
+ method353(covariant String a) => null; //# 353: continued
+ method354(covariant String a) => null; //# 354: continued
+ method355(dynamic a) => null; //# 355: continued
+ method356(dynamic a) => null; //# 356: continued
+ method357(dynamic a) => null; //# 357: continued
+ method358(dynamic a) => null; //# 358: continued
+ method359(dynamic a) => null; //# 359: continued
+ method360(dynamic a) => null; //# 360: continued
+ method361(dynamic a) => null; //# 361: continued
+ method362(dynamic a) => null; //# 362: continued
+ method363(num a) => null; //# 363: continued
+ method364(int a) => null; //# 364: continued
+ method365(String a) => null; //# 365: continued
+ method366(String a) => null; //# 366: continued
+ method367(String a) => null; //# 367: continued
+ method368(String a) => null; //# 368: continued
+ method369(String a) => null; //# 369: continued
+ method370(String a) => null; //# 370: continued
+ method371(String a) => null; //# 371: continued
+ method372(String a) => null; //# 372: continued
+}
+
+class C extends B {
+ method1(covariant dynamic a) => null; //# 001: continued
+ method2(covariant num a) => null; //# 002: continued
+ method3(covariant int a) => null; //# 003: continued
+ method4(covariant String a) => null; //# 004: continued
+ method5(dynamic a) => null; //# 005: continued
+ method6(num a) => null; //# 006: continued
+ method7(int a) => null; //# 007: continued
+ method8(String a) => null; //# 008: continued
+ method9(covariant dynamic a) => null; //# 009: continued
+ method10(covariant num a) => null; //# 010: continued
+ method11(covariant int a) => null; //# 011: continued
+ method12(covariant String a) => null; //# 012: continued
+ method13(dynamic a) => null; //# 013: continued
+ method14(num a) => null; //# 014: continued
+ method15(int a) => null; //# 015: continued
+ method16(String a) => null; //# 016: continued
+ method17(covariant dynamic a) => null; //# 017: continued
+ method18(covariant num a) => null; //# 018: continued
+ method19(covariant int a) => null; //# 019: continued
+ method20(covariant String a) => null; //# 020: continued
+ method21(dynamic a) => null; //# 021: continued
+ method22(num a) => null; //# 022: continued
+ method23(int a) => null; //# 023: continued
+ method24(String a) => null; //# 024: continued
+ method25(covariant dynamic a) => null; //# 025: continued
+ method26(covariant num a) => null; //# 026: continued
+ method27(covariant int a) => null; //# 027: continued
+ method28(covariant String a) => null; //# 028: continued
+ method29(dynamic a) => null; //# 029: continued
+ method30(num a) => null; //# 030: continued
+ method31(int a) => null; //# 031: continued
+ method32(String a) => null; //# 032: continued
+ method33(covariant dynamic a) => null; //# 033: continued
+ method34(covariant num a) => null; //# 034: continued
+ method35(covariant int a) => null; //# 035: continued
+ method36(covariant String a) => null; //# 036: continued
+ method37(dynamic a) => null; //# 037: continued
+ method38(num a) => null; //# 038: continued
+ method39(int a) => null; //# 039: continued
+ method40(String a) => null; //# 040: continued
+ method41(covariant dynamic a) => null; //# 041: continued
+ method42(covariant num a) => null; //# 042: continued
+ method43(covariant int a) => null; //# 043: continued
+ method44(covariant String a) => null; //# 044: continued
+ method45(dynamic a) => null; //# 045: continued
+ method46(num a) => null; //# 046: continued
+ method47(int a) => null; //# 047: continued
+ method48(String a) => null; //# 048: continued
+ method49(covariant dynamic a) => null; //# 049: continued
+ method50(covariant num a) => null; //# 050: continued
+ method51(covariant int a) => null; //# 051: continued
+ method52(covariant String a) => null; //# 052: continued
+ method53(dynamic a) => null; //# 053: continued
+ method54(num a) => null; //# 054: continued
+ method55(int a) => null; //# 055: continued
+ method56(String a) => null; //# 056: continued
+ method57(covariant dynamic a) => null; //# 057: continued
+ method58(covariant num a) => null; //# 058: continued
+ method59(covariant int a) => null; //# 059: continued
+ method60(covariant String a) => null; //# 060: continued
+ method61(dynamic a) => null; //# 061: continued
+ method62(num a) => null; //# 062: continued
+ method63(int a) => null; //# 063: continued
+ method64(String a) => null; //# 064: continued
+ method65(covariant dynamic a) => null; //# 065: continued
+ method66(covariant num a) => null; //# 066: continued
+ method67(covariant int a) => null; //# 067: continued
+ method68(covariant String a) => null; //# 068: continued
+ method69(dynamic a) => null; //# 069: continued
+ method70(num a) => null; //# 070: continued
+ method71(int a) => null; //# 071: continued
+ method72(String a) => null; //# 072: continued
+ method73(covariant dynamic a) => null; //# 073: continued
+ method74(covariant num a) => null; //# 074: continued
+ method75(covariant int a) => null; //# 075: continued
+ method76(covariant String a) => null; //# 076: continued
+ method77(dynamic a) => null; //# 077: continued
+ method78(num a) => null; //# 078: continued
+ method79(int a) => null; //# 079: continued
+ method80(String a) => null; //# 080: continued
+ method81(covariant dynamic a) => null; //# 081: continued
+ method82(covariant num a) => null; //# 082: continued
+ method83(covariant int a) => null; //# 083: continued
+ method84(covariant String a) => null; //# 084: continued
+ method85(dynamic a) => null; //# 085: continued
+ method86(num a) => null; //# 086: continued
+ method87(int a) => null; //# 087: continued
+ method88(String a) => null; //# 088: continued
+ method90(covariant dynamic a) => null; //# 090: continued
+ method91(covariant num a) => null; //# 091: continued
+ method92(covariant int a) => null; //# 092: continued
+ method93(covariant String a) => null; //# 093: continued
+ method94(dynamic a) => null; //# 094: continued
+ method95(num a) => null; //# 095: continued
+ method96(int a) => null; //# 096: continued
+ method97(String a) => null; //# 097: continued
+ method98(covariant dynamic a) => null; //# 098: continued
+ method99(covariant num a) => null; //# 099: continued
+ method100(covariant int a) => null; //# 100: continued
+ method101(covariant String a) => null; //# 101: continued
+ method102(dynamic a) => null; //# 102: continued
+ method103(num a) => null; //# 103: continued
+ method104(int a) => null; //# 104: continued
+ method105(String a) => null; //# 105: continued
+ method106(covariant dynamic a) => null; //# 106: continued
+ method107(covariant num a) => null; //# 107: continued
+ method108(covariant int a) => null; //# 108: continued
+ method109(covariant String a) => null; //# 109: continued
+ method110(dynamic a) => null; //# 110: continued
+ method111(num a) => null; //# 111: continued
+ method112(int a) => null; //# 112: continued
+ method113(String a) => null; //# 113: continued
+ method115(covariant dynamic a) => null; //# 115: continued
+ method116(covariant num a) => null; //# 116: continued
+ method117(covariant int a) => null; //# 117: continued
+ method118(covariant String a) => null; //# 118: continued
+ method119(dynamic a) => null; //# 119: continued
+ method120(num a) => null; //# 120: continued
+ method121(int a) => null; //# 121: continued
+ method122(String a) => null; //# 122: continued
+ method123(covariant dynamic a) => null; //# 123: continued
+ method124(covariant num a) => null; //# 124: continued
+ method125(covariant int a) => null; //# 125: continued
+ method126(covariant String a) => null; //# 126: continued
+ method127(dynamic a) => null; //# 127: continued
+ method128(num a) => null; //# 128: continued
+ method129(int a) => null; //# 129: continued
+ method130(String a) => null; //# 130: continued
+ method131(covariant dynamic a) => null; //# 131: continued
+ method132(covariant num a) => null; //# 132: continued
+ method133(covariant int a) => null; //# 133: continued
+ method134(covariant String a) => null; //# 134: continued
+ method135(dynamic a) => null; //# 135: continued
+ method136(num a) => null; //# 136: continued
+ method137(int a) => null; //# 137: continued
+ method138(String a) => null; //# 138: continued
+ method140(covariant dynamic a) => null; //# 140: continued
+ method141(covariant num a) => null; //# 141: continued
+ method142(covariant int a) => null; //# 142: continued
+ method143(covariant String a) => null; //# 143: continued
+ method144(dynamic a) => null; //# 144: continued
+ method145(num a) => null; //# 145: continued
+ method146(int a) => null; //# 146: continued
+ method147(String a) => null; //# 147: continued
+ method148(covariant dynamic a) => null; //# 148: continued
+ method149(covariant num a) => null; //# 149: continued
+ method150(covariant int a) => null; //# 150: continued
+ method151(covariant String a) => null; //# 151: continued
+ method152(dynamic a) => null; //# 152: continued
+ method153(num a) => null; //# 153: continued
+ method154(int a) => null; //# 154: continued
+ method155(String a) => null; //# 155: continued
+ method156(covariant dynamic a) => null; //# 156: continued
+ method157(covariant num a) => null; //# 157: continued
+ method158(covariant int a) => null; //# 158: continued
+ method159(covariant String a) => null; //# 159: continued
+ method160(dynamic a) => null; //# 160: continued
+ method161(num a) => null; //# 161: continued
+ method162(int a) => null; //# 162: continued
+ method163(String a) => null; //# 163: continued
+ method165(covariant dynamic a) => null; //# 165: continued
+ method166(covariant num a) => null; //# 166: continued
+ method167(covariant int a) => null; //# 167: continued
+ method168(covariant String a) => null; //# 168: continued
+ method169(dynamic a) => null; //# 169: continued
+ method170(num a) => null; //# 170: continued
+ method171(int a) => null; //# 171: continued
+ method172(String a) => null; //# 172: continued
+ method175(covariant dynamic a) => null; //# 175: continued
+ method176(covariant num a) => null; //# 176: continued
+ method177(covariant int a) => null; //# 177: continued
+ method178(covariant String a) => null; //# 178: continued
+ method179(dynamic a) => null; //# 179: continued
+ method180(num a) => null; //# 180: continued
+ method181(int a) => null; //# 181: continued
+ method182(String a) => null; //# 182: continued
+ method183(covariant dynamic a) => null; //# 183: continued
+ method184(covariant num a) => null; //# 184: continued
+ method185(covariant int a) => null; //# 185: continued
+ method186(covariant String a) => null; //# 186: continued
+ method187(dynamic a) => null; //# 187: continued
+ method188(num a) => null; //# 188: continued
+ method189(int a) => null; //# 189: continued
+ method190(String a) => null; //# 190: continued
+ method193(covariant dynamic a) => null; //# 193: continued
+ method194(covariant num a) => null; //# 194: continued
+ method195(covariant int a) => null; //# 195: continued
+ method196(covariant String a) => null; //# 196: continued
+ method197(dynamic a) => null; //# 197: continued
+ method198(num a) => null; //# 198: continued
+ method199(int a) => null; //# 199: continued
+ method200(String a) => null; //# 200: continued
+ method201(covariant dynamic a) => null; //# 201: continued
+ method202(covariant num a) => null; //# 202: continued
+ method203(covariant int a) => null; //# 203: continued
+ method204(covariant String a) => null; //# 204: continued
+ method205(dynamic a) => null; //# 205: continued
+ method206(num a) => null; //# 206: continued
+ method207(int a) => null; //# 207: continued
+ method208(String a) => null; //# 208: continued
+ method209(covariant dynamic a) => null; //# 209: continued
+ method210(covariant num a) => null; //# 210: continued
+ method211(covariant int a) => null; //# 211: continued
+ method212(covariant String a) => null; //# 212: continued
+ method213(dynamic a) => null; //# 213: continued
+ method214(num a) => null; //# 214: continued
+ method215(int a) => null; //# 215: continued
+ method216(String a) => null; //# 216: continued
+ method217(covariant dynamic a) => null; //# 217: continued
+ method218(covariant num a) => null; //# 218: continued
+ method219(covariant int a) => null; //# 219: continued
+ method220(covariant String a) => null; //# 220: continued
+ method221(dynamic a) => null; //# 221: continued
+ method222(num a) => null; //# 222: continued
+ method223(int a) => null; //# 223: continued
+ method224(String a) => null; //# 224: continued
+ method225(covariant dynamic a) => null; //# 225: continued
+ method226(covariant num a) => null; //# 226: continued
+ method227(covariant int a) => null; //# 227: continued
+ method228(covariant String a) => null; //# 228: continued
+ method229(dynamic a) => null; //# 229: continued
+ method230(num a) => null; //# 230: continued
+ method231(int a) => null; //# 231: continued
+ method232(String a) => null; //# 232: continued
+ method233(covariant dynamic a) => null; //# 233: continued
+ method234(covariant num a) => null; //# 234: continued
+ method235(covariant int a) => null; //# 235: continued
+ method236(covariant String a) => null; //# 236: continued
+ method237(dynamic a) => null; //# 237: continued
+ method238(num a) => null; //# 238: continued
+ method239(int a) => null; //# 239: continued
+ method240(String a) => null; //# 240: continued
+ method244(covariant dynamic a) => null; //# 244: continued
+ method245(covariant num a) => null; //# 245: continued
+ method246(covariant int a) => null; //# 246: continued
+ method247(covariant String a) => null; //# 247: continued
+ method248(dynamic a) => null; //# 248: continued
+ method249(num a) => null; //# 249: continued
+ method250(int a) => null; //# 250: continued
+ method251(String a) => null; //# 251: continued
+ method252(covariant dynamic a) => null; //# 252: continued
+ method253(covariant num a) => null; //# 253: continued
+ method254(covariant int a) => null; //# 254: continued
+ method255(covariant String a) => null; //# 255: continued
+ method256(dynamic a) => null; //# 256: continued
+ method257(num a) => null; //# 257: continued
+ method258(int a) => null; //# 258: continued
+ method259(String a) => null; //# 259: continued
+ method260(covariant dynamic a) => null; //# 260: continued
+ method261(covariant num a) => null; //# 261: continued
+ method262(covariant int a) => null; //# 262: continued
+ method263(covariant String a) => null; //# 263: continued
+ method264(dynamic a) => null; //# 264: continued
+ method265(num a) => null; //# 265: continued
+ method266(int a) => null; //# 266: continued
+ method267(String a) => null; //# 267: continued
+ method269(covariant dynamic a) => null; //# 269: continued
+ method270(covariant num a) => null; //# 270: continued
+ method271(covariant int a) => null; //# 271: continued
+ method272(covariant String a) => null; //# 272: continued
+ method273(dynamic a) => null; //# 273: continued
+ method274(num a) => null; //# 274: continued
+ method275(int a) => null; //# 275: continued
+ method276(String a) => null; //# 276: continued
+ method277(covariant dynamic a) => null; //# 277: continued
+ method278(covariant num a) => null; //# 278: continued
+ method279(covariant int a) => null; //# 279: continued
+ method280(covariant String a) => null; //# 280: continued
+ method281(dynamic a) => null; //# 281: continued
+ method282(num a) => null; //# 282: continued
+ method283(int a) => null; //# 283: continued
+ method284(String a) => null; //# 284: continued
+ method287(covariant dynamic a) => null; //# 287: continued
+ method288(covariant num a) => null; //# 288: continued
+ method289(covariant int a) => null; //# 289: continued
+ method290(covariant String a) => null; //# 290: continued
+ method291(dynamic a) => null; //# 291: continued
+ method292(num a) => null; //# 292: continued
+ method293(int a) => null; //# 293: continued
+ method294(String a) => null; //# 294: continued
+ method295(covariant dynamic a) => null; //# 295: continued
+ method296(covariant num a) => null; //# 296: continued
+ method297(covariant int a) => null; //# 297: continued
+ method298(covariant String a) => null; //# 298: continued
+ method299(dynamic a) => null; //# 299: continued
+ method300(num a) => null; //# 300: continued
+ method301(int a) => null; //# 301: continued
+ method302(String a) => null; //# 302: continued
+ method303(covariant dynamic a) => null; //# 303: continued
+ method304(covariant num a) => null; //# 304: continued
+ method305(covariant int a) => null; //# 305: continued
+ method306(covariant String a) => null; //# 306: continued
+ method307(dynamic a) => null; //# 307: continued
+ method308(num a) => null; //# 308: continued
+ method309(int a) => null; //# 309: continued
+ method310(String a) => null; //# 310: continued
+ method312(covariant dynamic a) => null; //# 312: continued
+ method313(covariant num a) => null; //# 313: continued
+ method314(covariant int a) => null; //# 314: continued
+ method315(covariant String a) => null; //# 315: continued
+ method316(dynamic a) => null; //# 316: continued
+ method317(num a) => null; //# 317: continued
+ method318(int a) => null; //# 318: continued
+ method319(String a) => null; //# 319: continued
+ method320(covariant dynamic a) => null; //# 320: continued
+ method321(covariant num a) => null; //# 321: continued
+ method322(covariant int a) => null; //# 322: continued
+ method323(covariant String a) => null; //# 323: continued
+ method324(dynamic a) => null; //# 324: continued
+ method325(num a) => null; //# 325: continued
+ method326(int a) => null; //# 326: continued
+ method327(String a) => null; //# 327: continued
+ method328(covariant dynamic a) => null; //# 328: continued
+ method329(covariant num a) => null; //# 329: continued
+ method330(covariant int a) => null; //# 330: continued
+ method331(covariant String a) => null; //# 331: continued
+ method332(dynamic a) => null; //# 332: continued
+ method333(num a) => null; //# 333: continued
+ method334(int a) => null; //# 334: continued
+ method335(String a) => null; //# 335: continued
+ method337(covariant dynamic a) => null; //# 337: continued
+ method338(covariant num a) => null; //# 338: continued
+ method339(covariant int a) => null; //# 339: continued
+ method340(covariant String a) => null; //# 340: continued
+ method341(dynamic a) => null; //# 341: continued
+ method342(num a) => null; //# 342: continued
+ method343(int a) => null; //# 343: continued
+ method344(String a) => null; //# 344: continued
+ method347(covariant dynamic a) => null; //# 347: continued
+ method348(covariant num a) => null; //# 348: continued
+ method349(covariant int a) => null; //# 349: continued
+ method350(covariant String a) => null; //# 350: continued
+ method351(dynamic a) => null; //# 351: continued
+ method352(num a) => null; //# 352: continued
+ method353(int a) => null; //# 353: continued
+ method354(String a) => null; //# 354: continued
+ method355(covariant dynamic a) => null; //# 355: continued
+ method356(covariant num a) => null; //# 356: continued
+ method357(covariant int a) => null; //# 357: continued
+ method358(covariant String a) => null; //# 358: continued
+ method359(dynamic a) => null; //# 359: continued
+ method360(num a) => null; //# 360: continued
+ method361(int a) => null; //# 361: continued
+ method362(String a) => null; //# 362: continued
+ method365(covariant dynamic a) => null; //# 365: continued
+ method366(covariant num a) => null; //# 366: continued
+ method367(covariant int a) => null; //# 367: continued
+ method368(covariant String a) => null; //# 368: continued
+ method369(dynamic a) => null; //# 369: continued
+ method370(num a) => null; //# 370: continued
+ method371(int a) => null; //# 371: continued
+ method372(String a) => null; //# 372: continued
+}
diff --git a/tests/language_2/override_inheritance_setter_test.dart b/tests/language_2/override_inheritance_setter_test.dart
new file mode 100644
index 0000000..f709c75
--- /dev/null
+++ b/tests/language_2/override_inheritance_setter_test.dart
@@ -0,0 +1,32 @@
+main() {
+ new C();
+}
+
+class A {
+ void set setter1(num x) {} //# 001: compile-time error
+ void set setter2(num x) {} //# 002: compile-time error
+ void set setter3(num x) {} //# 003: ok
+ void set setter4(num x) {} //# 004: compile-time error
+ void set setter5(num x) {} //# 005: ok
+ void set setter6(num x) {} //# 006: compile-time error
+ void set setter7(num x) {} //# 007: ok
+}
+
+class B extends A {
+ void set setter1(covariant dynamic x) {} //# 001: continued
+ void set setter2(int x) {} //# 002: continued
+ void set setter3(covariant dynamic x) {} //# 003: continued
+ void set setter4(dynamic x) {} //# 004: continued
+ void set setter5(covariant dynamic x) {} //# 005: continued
+ covariant dynamic setter6; //# 006: continued
+ covariant dynamic setter7; //# 007: continued
+}
+
+class C extends B {
+ void set setter1(String x) {} //# 001: continued
+ void set setter3(num x) {} //# 003: continued
+ void set setter4(int x) {} //# 004: continued
+ void set setter5(int x) {} //# 005: continued
+ void set setter6(String x) {} //# 006: continued
+ void set setter7(int x) {} //# 007: continued
+}