From f06118ef8f58cf602218fc5fd86c63ac0697d235 Mon Sep 17 00:00:00 2001 From: Aske Simon Christensen Date: Fri, 20 Apr 2018 12:57:19 +0000 Subject: [PATCH] Dart 2 fixes to various tests. All fixes are related to the requirement that a concrete class must implement its entire interface or have a non-trivial noSuchMethod implementation. Change-Id: I015e0565e5dd9cfa324c38bb43696e365c58329a Reviewed-on: https://dart-review.googlesource.com/51880 Commit-Queue: Aske Simon Christensen Reviewed-by: Dmitry Stefantsov --- .../test/fasta/super_mixins_test.dart | 2 + runtime/vm/isolate_reload_test.cc | 12 +++--- .../dart2js/model/subtypeset_test.dart | 4 +- tests/language_2/language_2_analyzer.status | 25 +---------- tests/language_2/language_2_dart2js.status | 4 +- tests/language_2/language_2_dartdevc.status | 43 ++++++++++--------- tests/language_2/language_2_kernel.status | 3 +- .../language_2/language_2_precompiled.status | 1 - tests/language_2/language_2_vm.status | 3 +- .../override_inheritance_abstract_test.dart | 6 +-- ...rride_inheritance_no_such_method_test.dart | 12 ++---- tests/language_2/syntax_test.dart | 12 ++++-- 12 files changed, 53 insertions(+), 74 deletions(-) diff --git a/pkg/front_end/test/fasta/super_mixins_test.dart b/pkg/front_end/test/fasta/super_mixins_test.dart index d0ad9ebd471..17a4f92e956 100644 --- a/pkg/front_end/test/fasta/super_mixins_test.dart +++ b/pkg/front_end/test/fasta/super_mixins_test.dart @@ -60,6 +60,8 @@ class NotMixin extends A with B { super.foo(value); super.quux(); } + + void foo(String value) {} } void main() { diff --git a/runtime/vm/isolate_reload_test.cc b/runtime/vm/isolate_reload_test.cc index f65c9e4a3d3..20edba6e8e8 100644 --- a/runtime/vm/isolate_reload_test.cc +++ b/runtime/vm/isolate_reload_test.cc @@ -2254,7 +2254,7 @@ TEST_CASE(IsolateReload_DirectSubclasses_Success) { intptr_t saved_subclass_count = subclasses.Length(); const char* kScript = - "class AIterator extends Iterator {\n" + "abstract class AIterator extends Iterator {\n" "}\n" "main() {\n" " return 1;\n" @@ -2275,7 +2275,7 @@ TEST_CASE(IsolateReload_DirectSubclasses_Success) { const char* kReloadScript = "class AIterator {\n" "}\n" - "class BIterator extends Iterator {\n" + "abstract class BIterator extends Iterator {\n" "}\n" "main() {\n" " return 2;\n" @@ -2310,7 +2310,7 @@ TEST_CASE(IsolateReload_DirectSubclasses_GhostSubclass) { intptr_t saved_subclass_count = subclasses.Length(); const char* kScript = - "class AIterator extends Iterator {\n" + "abstract class AIterator extends Iterator {\n" "}\n" "main() {\n" " return 1;\n" @@ -2329,7 +2329,7 @@ TEST_CASE(IsolateReload_DirectSubclasses_GhostSubclass) { EXPECT_STREQ("AIterator", name.ToCString()); const char* kReloadScript = - "class BIterator extends Iterator {\n" + "abstract class BIterator extends Iterator {\n" "}\n" "main() {\n" " return 2;\n" @@ -2369,7 +2369,7 @@ TEST_CASE(IsolateReload_DirectSubclasses_Failure) { intptr_t saved_subclass_count = subclasses.Length(); const char* kScript = - "class AIterator extends Iterator {\n" + "abstract class AIterator extends Iterator {\n" "}\n" "class Foo {\n" " final a;\n" @@ -2394,7 +2394,7 @@ TEST_CASE(IsolateReload_DirectSubclasses_Failure) { // Attempt to reload with a bogus script. const char* kReloadScript = - "class BIterator extends Iterator {\n" + "abstract class BIterator extends Iterator {\n" "}\n" "class Foo {\n" " final a kjsdf ksjdf ;\n" // When we refinalize, we get an error. diff --git a/tests/compiler/dart2js/model/subtypeset_test.dart b/tests/compiler/dart2js/model/subtypeset_test.dart index 10cef63dfae..cbaf315fa5c 100644 --- a/tests/compiler/dart2js/model/subtypeset_test.dart +++ b/tests/compiler/dart2js/model/subtypeset_test.dart @@ -42,8 +42,8 @@ runTests(CompileMode compileMode, {bool strongMode: false}) async { class E extends C implements B {} class F extends C {} class G extends C {} - class H implements C {} - class I implements H {} + abstract class H implements C {} + abstract class I implements H {} """, mainSource: r""" main() { diff --git a/tests/language_2/language_2_analyzer.status b/tests/language_2/language_2_analyzer.status index 0ed2de857ec..ecb9a0ea765 100644 --- a/tests/language_2/language_2_analyzer.status +++ b/tests/language_2/language_2_analyzer.status @@ -140,7 +140,6 @@ switch3_negative_test: CompileTimeError switch4_negative_test: CompileTimeError switch5_negative_test: CompileTimeError switch7_negative_test: CompileTimeError -syntax_test/none: Fail # Issue 11575 test_negative_test: CompileTimeError try_catch_on_syntax_test/10: MissingCompileTimeError try_catch_on_syntax_test/11: MissingCompileTimeError @@ -539,7 +538,6 @@ override_inheritance_abstract_test/23: MissingCompileTimeError override_inheritance_abstract_test/24: MissingCompileTimeError override_inheritance_abstract_test/25: MissingCompileTimeError override_inheritance_abstract_test/26: MissingCompileTimeError -override_inheritance_abstract_test/28: MissingCompileTimeError override_inheritance_field_test/05: MissingCompileTimeError override_inheritance_field_test/07: MissingCompileTimeError override_inheritance_field_test/08: MissingCompileTimeError @@ -1003,7 +1001,6 @@ override_inheritance_abstract_test/23: MissingCompileTimeError override_inheritance_abstract_test/24: MissingCompileTimeError override_inheritance_abstract_test/25: MissingCompileTimeError override_inheritance_abstract_test/26: MissingCompileTimeError -override_inheritance_abstract_test/28: MissingCompileTimeError override_inheritance_field_test/05: MissingCompileTimeError override_inheritance_field_test/07: MissingCompileTimeError override_inheritance_field_test/08: MissingCompileTimeError @@ -1194,25 +1191,6 @@ multiline_newline_test/05r: MissingCompileTimeError multiple_interface_inheritance_test: CompileTimeError # Issue 30552 no_main_test/01: MissingStaticWarning # Issue 28823 no_such_method_negative_test: CompileTimeError -override_inheritance_abstract_test/02: MissingCompileTimeError -override_inheritance_abstract_test/03: MissingCompileTimeError -override_inheritance_abstract_test/04: MissingCompileTimeError -override_inheritance_abstract_test/08: MissingCompileTimeError -override_inheritance_abstract_test/09: MissingCompileTimeError -override_inheritance_abstract_test/10: MissingCompileTimeError -override_inheritance_abstract_test/11: MissingCompileTimeError -override_inheritance_abstract_test/12: MissingCompileTimeError -override_inheritance_abstract_test/13: MissingCompileTimeError -override_inheritance_abstract_test/14: MissingCompileTimeError -override_inheritance_abstract_test/17: MissingCompileTimeError -override_inheritance_abstract_test/19: MissingCompileTimeError -override_inheritance_abstract_test/20: MissingCompileTimeError -override_inheritance_abstract_test/21: MissingCompileTimeError -override_inheritance_abstract_test/22: MissingCompileTimeError -override_inheritance_abstract_test/23: MissingCompileTimeError -override_inheritance_abstract_test/24: MissingCompileTimeError -override_inheritance_abstract_test/25: MissingCompileTimeError -override_inheritance_abstract_test/26: MissingCompileTimeError override_inheritance_field_test/04: CompileTimeError override_inheritance_field_test/06: CompileTimeError override_inheritance_field_test/26: CompileTimeError @@ -1225,7 +1203,6 @@ override_inheritance_field_test/50: CompileTimeError override_inheritance_generic_test/02: CompileTimeError override_inheritance_method_test/28: CompileTimeError override_inheritance_method_test/29: CompileTimeError -override_inheritance_no_such_method_test/13: MissingCompileTimeError parameter_initializer_test: CompileTimeError parser_quirks_test: CompileTimeError prefix13_negative_test: CompileTimeError, OK @@ -1248,6 +1225,8 @@ string_unicode4_negative_test: CompileTimeError super_bound_closure_test/none: CompileTimeError super_setter_test: StaticWarning # Issue 28823 switch_case_test/none: CompileTimeError +syntax_test/60: MissingCompileTimeError +syntax_test/61: MissingCompileTimeError type_promotion_functions_test/01: Pass type_promotion_functions_test/05: Pass type_promotion_functions_test/06: Pass diff --git a/tests/language_2/language_2_dart2js.status b/tests/language_2/language_2_dart2js.status index c680aaa156d..8b7d045a43f 100644 --- a/tests/language_2/language_2_dart2js.status +++ b/tests/language_2/language_2_dart2js.status @@ -1471,6 +1471,7 @@ override_field_test/03: MissingCompileTimeError override_inheritance_abstract_test/02: MissingCompileTimeError override_inheritance_abstract_test/03: MissingCompileTimeError override_inheritance_abstract_test/04: MissingCompileTimeError +override_inheritance_abstract_test/07: MissingCompileTimeError override_inheritance_abstract_test/08: MissingCompileTimeError override_inheritance_abstract_test/09: MissingCompileTimeError override_inheritance_abstract_test/10: MissingCompileTimeError @@ -1514,7 +1515,6 @@ override_inheritance_no_such_method_test/07: MissingCompileTimeError override_inheritance_no_such_method_test/09: MissingCompileTimeError override_inheritance_no_such_method_test/10: MissingCompileTimeError override_inheritance_no_such_method_test/12: MissingCompileTimeError -override_inheritance_no_such_method_test/13: MissingCompileTimeError override_method_with_field_test/01: MissingCompileTimeError parser_quirks_test: CompileTimeError partial_tearoff_instantiation_test/05: Crash # Assertion failure: kind=special,memberName=instantiate,callStructure:CallStructure(arity=0, types=1) @@ -2141,6 +2141,7 @@ override_field_test/03: MissingCompileTimeError override_inheritance_abstract_test/02: MissingCompileTimeError override_inheritance_abstract_test/03: MissingCompileTimeError override_inheritance_abstract_test/04: MissingCompileTimeError +override_inheritance_abstract_test/07: MissingCompileTimeError override_inheritance_abstract_test/08: MissingCompileTimeError override_inheritance_abstract_test/09: MissingCompileTimeError override_inheritance_abstract_test/10: MissingCompileTimeError @@ -2184,7 +2185,6 @@ override_inheritance_no_such_method_test/07: MissingCompileTimeError override_inheritance_no_such_method_test/09: MissingCompileTimeError override_inheritance_no_such_method_test/10: MissingCompileTimeError override_inheritance_no_such_method_test/12: MissingCompileTimeError -override_inheritance_no_such_method_test/13: MissingCompileTimeError override_method_with_field_test/01: MissingCompileTimeError parser_quirks_test: CompileTimeError recursive_generic_test: RuntimeError diff --git a/tests/language_2/language_2_dartdevc.status b/tests/language_2/language_2_dartdevc.status index b259467e71f..1e973db8ec1 100644 --- a/tests/language_2/language_2_dartdevc.status +++ b/tests/language_2/language_2_dartdevc.status @@ -170,7 +170,6 @@ super_operator_index5_test: RuntimeError super_operator_index7_test: RuntimeError super_operator_index8_test: RuntimeError switch_case_test/none: CompileTimeError -syntax_test/none: CompileTimeError truncdiv_test: RuntimeError # Issue 29920 try_catch_on_syntax_test/10: MissingCompileTimeError try_catch_on_syntax_test/11: MissingCompileTimeError @@ -563,6 +562,26 @@ override_field_method4_negative_test: Fail override_field_method5_negative_test: Fail override_field_test/01: MissingCompileTimeError override_field_test/02: MissingCompileTimeError +override_inheritance_abstract_test/02: MissingCompileTimeError +override_inheritance_abstract_test/03: MissingCompileTimeError +override_inheritance_abstract_test/04: MissingCompileTimeError +override_inheritance_abstract_test/07: MissingCompileTimeError +override_inheritance_abstract_test/08: MissingCompileTimeError +override_inheritance_abstract_test/09: MissingCompileTimeError +override_inheritance_abstract_test/10: MissingCompileTimeError +override_inheritance_abstract_test/11: MissingCompileTimeError +override_inheritance_abstract_test/12: MissingCompileTimeError +override_inheritance_abstract_test/13: MissingCompileTimeError +override_inheritance_abstract_test/14: MissingCompileTimeError +override_inheritance_abstract_test/17: MissingCompileTimeError +override_inheritance_abstract_test/19: MissingCompileTimeError +override_inheritance_abstract_test/20: MissingCompileTimeError +override_inheritance_abstract_test/21: MissingCompileTimeError +override_inheritance_abstract_test/22: MissingCompileTimeError +override_inheritance_abstract_test/23: MissingCompileTimeError +override_inheritance_abstract_test/24: MissingCompileTimeError +override_inheritance_abstract_test/25: MissingCompileTimeError +override_inheritance_abstract_test/26: MissingCompileTimeError override_inheritance_field_test/04: CompileTimeError # Issue 31616 override_inheritance_field_test/06: CompileTimeError # Issue 31616 override_inheritance_field_test/26: CompileTimeError # Issue 31616 @@ -786,26 +805,6 @@ number_identity2_test: RuntimeError # Issue 29920; Expect.isTrue(false) fails. numbers_test: RuntimeError # Issue 29920; Expect.equals(expected: , actual: ) fails. overridden_no_such_method_test: RuntimeError # UnimplementedError: JsInstanceMirror.delegate unimplemented; UnimplementedError: JsInstanceMirror.delegate unimplemented override_field_test/03: MissingCompileTimeError -override_inheritance_abstract_test/02: MissingCompileTimeError -override_inheritance_abstract_test/03: MissingCompileTimeError -override_inheritance_abstract_test/04: MissingCompileTimeError -override_inheritance_abstract_test/08: MissingCompileTimeError -override_inheritance_abstract_test/09: MissingCompileTimeError -override_inheritance_abstract_test/10: MissingCompileTimeError -override_inheritance_abstract_test/11: MissingCompileTimeError -override_inheritance_abstract_test/12: MissingCompileTimeError -override_inheritance_abstract_test/13: MissingCompileTimeError -override_inheritance_abstract_test/14: MissingCompileTimeError -override_inheritance_abstract_test/17: MissingCompileTimeError -override_inheritance_abstract_test/19: MissingCompileTimeError -override_inheritance_abstract_test/20: MissingCompileTimeError -override_inheritance_abstract_test/21: MissingCompileTimeError -override_inheritance_abstract_test/22: MissingCompileTimeError -override_inheritance_abstract_test/23: MissingCompileTimeError -override_inheritance_abstract_test/24: MissingCompileTimeError -override_inheritance_abstract_test/25: MissingCompileTimeError -override_inheritance_abstract_test/26: MissingCompileTimeError -override_inheritance_no_such_method_test/13: MissingCompileTimeError parser_quirks_test: CompileTimeError private3_test: RuntimeError # Type 'PrivateSymbol' is not a subtype of type 'Symbol' in strong mode regress_16640_test: RuntimeError # Issue 29920; Uncaught Error: type arguments should not be null: E => { @@ -821,5 +820,7 @@ super_test: RuntimeError # Expect.equals(expected: <0>, actual: <2>) fails. switch_label2_test: RuntimeError # Issue 29920; UnimplementedError: node see https://github.com/dart-lang/sdk/issues/29352 `continue #L1; switch_label_test: RuntimeError # Issue 29920; UnimplementedError: node see https://github.com/dart-lang/sdk/issues/29352 `continue #L1; switch_try_catch_test: RuntimeError # Issue 29920; Expect.throws: Unexpected 'UnimplementedError: node see https://github.com/dart-lang/sdk/issues/29352 `continue #L1; +syntax_test/60: MissingCompileTimeError +syntax_test/61: MissingCompileTimeError truncdiv_test: RuntimeError # Issue 29920; Expect.throws fails: Did not throw vm/*: SkipByDesign # VM only tests.; VM only tests. diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status index d1cd85186fb..23b2b5a8aae 100644 --- a/tests/language_2/language_2_kernel.status +++ b/tests/language_2/language_2_kernel.status @@ -182,6 +182,7 @@ override_field_test/03: MissingCompileTimeError override_inheritance_abstract_test/02: MissingCompileTimeError override_inheritance_abstract_test/03: MissingCompileTimeError override_inheritance_abstract_test/04: MissingCompileTimeError +override_inheritance_abstract_test/07: MissingCompileTimeError override_inheritance_abstract_test/08: MissingCompileTimeError override_inheritance_abstract_test/09: MissingCompileTimeError override_inheritance_abstract_test/10: MissingCompileTimeError @@ -214,7 +215,6 @@ override_inheritance_no_such_method_test/07: MissingCompileTimeError override_inheritance_no_such_method_test/09: MissingCompileTimeError override_inheritance_no_such_method_test/10: MissingCompileTimeError override_inheritance_no_such_method_test/12: MissingCompileTimeError -override_inheritance_no_such_method_test/13: MissingCompileTimeError partial_tearoff_instantiation_test/05: MissingCompileTimeError partial_tearoff_instantiation_test/06: MissingCompileTimeError partial_tearoff_instantiation_test/07: MissingCompileTimeError @@ -1911,7 +1911,6 @@ override_field_method2_negative_test: Fail override_field_method4_negative_test: Fail override_field_method5_negative_test: Fail override_field_test/01: MissingCompileTimeError -override_inheritance_abstract_test/28: MissingCompileTimeError override_inheritance_field_test/05: MissingCompileTimeError override_inheritance_field_test/07: MissingCompileTimeError override_inheritance_field_test/08: MissingCompileTimeError diff --git a/tests/language_2/language_2_precompiled.status b/tests/language_2/language_2_precompiled.status index c188ce897c6..ebe2d0dfd73 100644 --- a/tests/language_2/language_2_precompiled.status +++ b/tests/language_2/language_2_precompiled.status @@ -779,7 +779,6 @@ override_inheritance_abstract_test/23: MissingCompileTimeError override_inheritance_abstract_test/24: MissingCompileTimeError override_inheritance_abstract_test/25: MissingCompileTimeError override_inheritance_abstract_test/26: MissingCompileTimeError -override_inheritance_abstract_test/28: MissingCompileTimeError override_inheritance_field_test/05: MissingCompileTimeError override_inheritance_field_test/07: MissingCompileTimeError override_inheritance_field_test/08: MissingCompileTimeError diff --git a/tests/language_2/language_2_vm.status b/tests/language_2/language_2_vm.status index 3c012b63319..d6f55e65404 100644 --- a/tests/language_2/language_2_vm.status +++ b/tests/language_2/language_2_vm.status @@ -774,6 +774,7 @@ override_field_test/03: MissingCompileTimeError override_inheritance_abstract_test/02: MissingCompileTimeError override_inheritance_abstract_test/03: MissingCompileTimeError override_inheritance_abstract_test/04: MissingCompileTimeError +override_inheritance_abstract_test/07: MissingCompileTimeError override_inheritance_abstract_test/08: MissingCompileTimeError override_inheritance_abstract_test/09: MissingCompileTimeError override_inheritance_abstract_test/10: MissingCompileTimeError @@ -790,7 +791,6 @@ override_inheritance_abstract_test/23: MissingCompileTimeError override_inheritance_abstract_test/24: MissingCompileTimeError override_inheritance_abstract_test/25: MissingCompileTimeError override_inheritance_abstract_test/26: MissingCompileTimeError -override_inheritance_abstract_test/28: MissingCompileTimeError override_inheritance_field_test/05: MissingCompileTimeError override_inheritance_field_test/07: MissingCompileTimeError override_inheritance_field_test/08: MissingCompileTimeError @@ -840,7 +840,6 @@ override_inheritance_no_such_method_test/07: MissingCompileTimeError override_inheritance_no_such_method_test/09: MissingCompileTimeError override_inheritance_no_such_method_test/10: MissingCompileTimeError override_inheritance_no_such_method_test/12: MissingCompileTimeError -override_inheritance_no_such_method_test/13: MissingCompileTimeError override_method_with_field_test/02: MissingCompileTimeError part2_test/01: MissingCompileTimeError positional_parameters_type_test/01: MissingCompileTimeError diff --git a/tests/language_2/override_inheritance_abstract_test.dart b/tests/language_2/override_inheritance_abstract_test.dart index bb6c449d14b..026fcf33647 100644 --- a/tests/language_2/override_inheritance_abstract_test.dart +++ b/tests/language_2/override_inheritance_abstract_test.dart @@ -6,7 +6,7 @@ abstract class A { method1(); //# 01: ok method5(); //# 05: ok method6(); //# 06: ok - method7(); + method7(); //# 07: compile-time error get getter8; //# 08: compile-time error set setter9(_); //# 09: compile-time error method10(); //# 10: compile-time error @@ -44,7 +44,7 @@ abstract class J { var member21; //# 21: continued } -abstract class Class extends A implements I, J { +class Class extends A implements I, J { method1() {} //# 01: continued method2(); //# 02: compile-time error get getter3; //# 03: compile-time error @@ -62,5 +62,5 @@ abstract class Class extends A implements I, J { } main() { - new Class(); //# 28: compile-time error + new Class(); } diff --git a/tests/language_2/override_inheritance_no_such_method_test.dart b/tests/language_2/override_inheritance_no_such_method_test.dart index 1f90b47e264..535f5a4f688 100644 --- a/tests/language_2/override_inheritance_no_such_method_test.dart +++ b/tests/language_2/override_inheritance_no_such_method_test.dart @@ -2,7 +2,7 @@ // 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. -// Test use of @proxy and noSuchMethod in relation to abstract methods in +// Test use of noSuchMethod in relation to abstract methods in // concrete classes. abstract class A { @@ -17,14 +17,9 @@ abstract class I { method11(); //# 11: ok } -@proxy //# 02: compile-time error -@proxy //# 07: continued -@proxy //# 10: continued class Class1 extends A implements I { method1(); //# 01: compile-time error - method2(); //# 02: continued - noSuchMethod(_) => null; //# 03: ok method3(); //# 03: continued @@ -39,11 +34,10 @@ class Class1 extends A implements I { noSuchMethod(_) => null; //# 11: continued } -@proxy //# 12: compile-time error class B { - method12(); //# 12: continued + method12(); //# 12: compile-time error - noSuchMethod(_) => null; //# 13: compile-time error + noSuchMethod(_) => null; //# 13: ok method13(); //# 13: continued } diff --git a/tests/language_2/syntax_test.dart b/tests/language_2/syntax_test.dart index 0982b99da6d..5946a1daaeb 100644 --- a/tests/language_2/syntax_test.dart +++ b/tests/language_2/syntax_test.dart @@ -112,7 +112,9 @@ native 'JSON' //# 32: syntax error class ListFactory implements List native "Array" //# 33: syntax error -{} +{ + noSuchMethod(_) => null; // Allow unimplemented methods +} abstract class I implements UNKNOWN; //# 34: syntax error @@ -138,7 +140,9 @@ hest 'JSON' //# 39: syntax error class XListFactory implements List hest "Array" //# 40: syntax error -{} +{ + noSuchMethod(_) => null; // Allow unimplemented methods +} class YWindow extends DOMWindow for "*Window" //# 41: syntax error @@ -162,7 +166,9 @@ for 'JSON' //# 45: syntax error class YListFactory implements List for "Array" //# 46: syntax error -{} +{ + noSuchMethod(_) => null; // Allow unimplemented methods +} class A { const A()