diff --git a/tests/corelib_2/apply3_test.dart b/tests/corelib_2/apply3_test.dart index d96fa0d264e..5bf1bcea6dd 100644 --- a/tests/corelib_2/apply3_test.dart +++ b/tests/corelib_2/apply3_test.dart @@ -5,7 +5,6 @@ // Test [Function.apply] on user-defined classes that implement [noSuchMethod]. import "package:expect/expect.dart"; -import 'dart:mirrors'; class F { call([p1]) => "call"; @@ -24,46 +23,12 @@ class H { main() { Expect.equals('call', Function.apply(new F(), [])); Expect.equals('call', Function.apply(new F(), [1])); - Expect.equals('NSM', Function.apply(new F(), [1, 2])); - Expect.equals('NSM', Function.apply(new F(), [1, 2, 3])); + Expect.throwsNoSuchMethodError(() => Function.apply(new F(), [1, 2])); + Expect.throwsNoSuchMethodError(() => Function.apply(new F(), [1, 2, 3])); - var symbol = const Symbol('a'); - var requiredParameters = [1]; - var optionalParameters = new Map()..[symbol] = 42; - Invocation i = - Function.apply(new G(), requiredParameters, optionalParameters); - - Expect.equals(const Symbol('call'), i.memberName); - Expect.listEquals(requiredParameters, i.positionalArguments); - Expect.mapEquals(optionalParameters, i.namedArguments); - Expect.isTrue(i.isMethod); - Expect.isFalse(i.isGetter); - Expect.isFalse(i.isSetter); - Expect.isFalse(i.isAccessor); - - // Check that changing the passed list and map for parameters does - // not affect [i]. - requiredParameters[0] = 42; - optionalParameters[symbol] = 12; - Expect.listEquals([1], i.positionalArguments); - Expect.mapEquals(new Map()..[symbol] = 42, i.namedArguments); - - // Check that using [i] for invocation yields the same [Invocation] - // object. - var mirror = reflect(new G()); - Invocation other = mirror.delegate(i); - Expect.equals(i.memberName, other.memberName); - Expect.listEquals(i.positionalArguments, other.positionalArguments); - Expect.mapEquals(i.namedArguments, other.namedArguments); - Expect.equals(i.isMethod, other.isMethod); - Expect.equals(i.isGetter, other.isGetter); - Expect.equals(i.isSetter, other.isSetter); - Expect.equals(i.isAccessor, other.isAccessor); + Expect.throwsNoSuchMethodError(() => Function.apply(new G(), [1], {#a: 42})); // Test that [i] can be used to hit an existing method. Expect.equals(43, new H().call(1, a: 42)); - Expect.equals(43, Function.apply(new H(), [1], new Map()..[symbol] = 42)); - mirror = reflect(new H()); - Expect.equals(43, mirror.delegate(i)); - Expect.equals(43, mirror.delegate(other)); + Expect.equals(43, Function.apply(new H(), [1], {#a: 42})); } diff --git a/tests/corelib_2/corelib_2.status b/tests/corelib_2/corelib_2.status index d6a5423a255..bf41412340e 100644 --- a/tests/corelib_2/corelib_2.status +++ b/tests/corelib_2/corelib_2.status @@ -22,7 +22,6 @@ apply_generic_function_test: RuntimeError # Issue 32691 error_stack_trace_test/static: MissingCompileTimeError [ $compiler == dartdevk ] -apply3_test: RuntimeError bigint_from_test: RuntimeError # Issue 32589 bool_from_environment2_test/03: Crash int_modulo_arith_test/modPow: RuntimeError @@ -39,7 +38,7 @@ regexp/stack-overflow_test: RuntimeError, OK # Smaller limit with irregex interp regexp/pcre_test: Pass, Slow # Issue 22008 [ $runtime == flutter ] -apply3_test: CompileTimeError # mirrors not supported +apply3_test: RuntimeError bool_from_environment_test: Fail # Flutter Issue 9111 format_exception_test: RuntimeError # Flutter Issue 9111 from_environment_const_type_test/01: Fail # Flutter Issue 9111 @@ -193,8 +192,8 @@ map_test: Crash # tests/corelib_2/map_test.dart:903:7: Internal problem: Unhandl symbol_reserved_word_test/03: RuntimeError # Issue 19972, new Symbol('void') should be allowed. [ $compiler == dart2js && $fast_startup ] -apply3_test: Fail # mirrors not supported -dynamic_nosuchmethod_test: Fail # mirrors not supported +apply3_test: RuntimeError +dynamic_nosuchmethod_test: RuntimeError [ $compiler == dart2js && $fast_startup && $fasta && $strong ] cast_test: RuntimeError @@ -246,7 +245,6 @@ uri_parameters_all_test: RuntimeError uri_test: RuntimeError [ $compiler == dart2js && $fasta && $minified && $strong ] -apply3_test: RuntimeError cast_test: RuntimeError dynamic_nosuchmethod_test: RuntimeError error_stack_trace1_test: RuntimeError # Issue 12399 @@ -314,7 +312,6 @@ bigint_test: Pass, Timeout # Please triage. # ===== dartk + vm status lines ===== [ $compiler == dartk && $runtime == vm && $strong ] -apply3_test: RuntimeError apply_generic_function_test: RuntimeError iterable_fold_test/02: RuntimeError iterable_reduce_test/01: CompileTimeError # Issue 31533 @@ -413,7 +410,6 @@ regress_r21715_test: RuntimeError # Requires fixed-size int64 support. typed_data_with_limited_ints_test: Skip # dart2js and dartdevc don't know about --limit-ints-to-64-bits [ $runtime != none && ($compiler == dartdevc || $compiler == dartdevk) ] -apply3_test: RuntimeError # Issue 29921 bigint_test: Pass, Slow compare_to2_test: RuntimeError # Issue 30170 date_time10_test: RuntimeError # Issue 29921 @@ -594,13 +590,12 @@ from_environment_const_type_undefined_test/14: MissingCompileTimeError from_environment_const_type_undefined_test/16: MissingCompileTimeError iterable_to_set_test: RuntimeError # is-checks do not implement strong mode type system -[ $compiler == dartkp || $compiler == precompiler ] -apply3_test: SkipByDesign -dynamic_nosuchmethod_test: SkipByDesign - [ $compiler == precompiler || $runtime == vm && !$checked && !$strong ] int_parse_radix_test/badTypes: RuntimeError # wrong exception returned +[ $compiler == precompiler || $runtime == vm && !$strong ] +apply3_test: RuntimeError + [ $runtime == dart_precompiled || $runtime == flutter || $runtime == vm ] regexp/global_test: Skip # Issue 21709 regexp/pcre_test: Pass, Slow, Timeout diff --git a/tests/corelib_2/dynamic_nosuchmethod_test.dart b/tests/corelib_2/dynamic_nosuchmethod_test.dart index 730cdbb1e8e..2577b489443 100644 --- a/tests/corelib_2/dynamic_nosuchmethod_test.dart +++ b/tests/corelib_2/dynamic_nosuchmethod_test.dart @@ -3,7 +3,6 @@ // BSD-style license that can be found in the LICENSE file. import "package:expect/expect.dart"; -import 'dart:mirrors'; // Test that noSuchMethod calls behave as expected for dynamic object invocations. class BaseClass { @@ -19,7 +18,9 @@ class ReturnInvocationName extends BaseClass { ReturnInvocationName(this._bar); noSuchMethod(Invocation invocation) { - return MirrorSystem.getName(invocation.memberName); + var name = invocation.memberName.toString(); + var match = new RegExp(r'Symbol\("([^"]+)"\)').matchAsPrefix(name); + return match != null ? match.group(1) : name; } bar() { diff --git a/tests/language_2/const_evaluation_test.dart b/tests/language_2/const_evaluation_test.dart index e176c16b886..cd0353e4768 100644 --- a/tests/language_2/const_evaluation_test.dart +++ b/tests/language_2/const_evaluation_test.dart @@ -5,8 +5,6 @@ // Check that compile-time evaluation of constants is consistent with runtime // evaluation. -import 'dart:mirrors'; - import 'package:expect/expect.dart'; const top_const = identical(-0.0, 0); @@ -38,9 +36,6 @@ class C { Expect.equals(instance_var, local_const); Expect.equals(local_const, local_final); Expect.equals(local_final, local_var); - var metadata = reflectClass(C).metadata[0].reflectee; //# 01: ok - Expect.equals(top_const, metadata); // //# 01: continued - Expect.equals(local_var, metadata); // //# 01: continued } } diff --git a/tests/language_2/field_increment_bailout_test.dart b/tests/language_2/field_increment_bailout_test.dart index 7275f675620..cddb38c1d89 100644 --- a/tests/language_2/field_increment_bailout_test.dart +++ b/tests/language_2/field_increment_bailout_test.dart @@ -4,7 +4,6 @@ // dart2js regression test for issue 8781. -import "dart:mirrors" show reflect; import "package:expect/expect.dart"; class N { @@ -37,17 +36,17 @@ class A { } } -class L { - final list; - L(this.list); - // Use noSuchMethod to defeat type inferencing. - noSuchMethod(mirror) => reflect(list).delegate(mirror); -} - main() { - var o = new A(new N(new L([1]), new L([2]))); + var o = new A(new N(confuse([1]), confuse([2]))); for (var i = 1; i <= 2; i++) Expect.equals(i, o.next()); Expect.equals(null, o.list); } + +// Use confuse to defeat type inferencing. +@NoInline() +@AssumeDynamic() +confuse(x) { + return x; +} diff --git a/tests/language_2/invocation_mirror2_test.dart b/tests/language_2/invocation_mirror2_test.dart index c8264ecc9e7..6f62d6e0da1 100644 --- a/tests/language_2/invocation_mirror2_test.dart +++ b/tests/language_2/invocation_mirror2_test.dart @@ -2,17 +2,10 @@ // 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. -import "dart:mirrors" show reflect; import "package:expect/expect.dart"; -class GetName { - set flif(_) => "flif="; -} - -int getName(im) => reflect(new GetName()).delegate(im); - class C { - var im; + Invocation im; noSuchMethod(im) => this.im = im; flif() {} } @@ -20,6 +13,6 @@ class C { main() { dynamic c = new C(); c.flif = 42; - Expect.equals(42, getName(c.im)); + Expect.equals(const Symbol("flif="), c.im.memberName); Expect.equals(42, c.im.positionalArguments[0]); } diff --git a/tests/language_2/language_2.status b/tests/language_2/language_2.status index 84e6d306a21..71aa79aa3a9 100644 --- a/tests/language_2/language_2.status +++ b/tests/language_2/language_2.status @@ -57,7 +57,6 @@ type_promotion_functions_test: CompileTimeError # Issue 30895: This test require # errors aren't detected by fasta, but reported by back ends as compile-time # errors. [ $compiler != dart2js && $runtime != dart_precompiled && $runtime != vm && $fasta ] -deferred_constraints_constants_test/default_argument2: MissingCompileTimeError function_type_parameter2_negative_test: Fail function_type_parameter_negative_test: Fail implicit_creation/implicit_const_not_default_values_test/e12: MissingCompileTimeError diff --git a/tests/language_2/language_2_analyzer.status b/tests/language_2/language_2_analyzer.status index 748abd0475d..6a6c78e9feb 100644 --- a/tests/language_2/language_2_analyzer.status +++ b/tests/language_2/language_2_analyzer.status @@ -1167,6 +1167,7 @@ string_unicode2_negative_test: CompileTimeError string_unicode3_negative_test: CompileTimeError string_unicode4_negative_test: CompileTimeError super_bound_closure_test/none: CompileTimeError +super_call4_test/01: MissingCompileTimeError super_setter_test: StaticWarning # Issue 28823 switch_case_test/none: CompileTimeError syntax_test/60: MissingCompileTimeError diff --git a/tests/language_2/language_2_dart2js.status b/tests/language_2/language_2_dart2js.status index ee3ad7d443b..2523fdf122d 100644 --- a/tests/language_2/language_2_dart2js.status +++ b/tests/language_2/language_2_dart2js.status @@ -12,7 +12,6 @@ double_identical_test: RuntimeError # Negative and positive zero are distinct, b issue23244_test: RuntimeError # Isolates - enum canonicalization - Issue 23244 library_env_test/has_mirror_support: RuntimeError, OK library_env_test/has_no_html_support: RuntimeError, OK -null_test/mirrors: SkipByDesign # Uses mirrors. vm/*: SkipByDesign # Tests for the VM. [ $compiler != dart2js ] @@ -284,9 +283,6 @@ covariance_type_parameter_test/02: Crash # NoSuchMethodError: The method 'hasSub covariant_override/runtime_check_test: RuntimeError covariant_subtyping_test: RuntimeError cyclic_constructor_test/01: Crash # Stack Overflow -deferred_constraints_constants_test/default_argument2: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary -deferred_constraints_constants_test/none: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary -deferred_constraints_constants_test/reference_after_load: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary deferred_constraints_type_annotation_test/as_operation: MissingCompileTimeError deferred_constraints_type_annotation_test/catch_check: MissingCompileTimeError deferred_constraints_type_annotation_test/is_check: MissingCompileTimeError @@ -469,8 +465,6 @@ not_enough_positional_arguments_test/03: MissingCompileTimeError not_enough_positional_arguments_test/05: MissingCompileTimeError not_enough_positional_arguments_test/06: MissingCompileTimeError not_enough_positional_arguments_test/07: MissingCompileTimeError -null_test/mirrors: RuntimeError -null_test/none: RuntimeError number_identity2_test: RuntimeError numbers_test: RuntimeError, OK # non JS number semantics override_field_method1_negative_test: Fail @@ -561,31 +555,8 @@ issue31596_super_test/05: RuntimeError issue31596_test: RuntimeError [ $compiler == dart2js && $fast_startup ] -const_evaluation_test/*: Fail # mirrors not supported -deferred_constraints_constants_test: Pass # mirrors not supported, passes for the wrong reason -deferred_constraints_constants_test/none: Fail # mirrors not supported -deferred_constraints_constants_test/reference_after_load: Fail # mirrors not supported -enum_mirror_test: Fail # mirrors not supported -field_increment_bailout_test: Fail # mirrors not supported -instance_creation_in_function_annotation_test: Fail # mirrors not supported -invocation_mirror2_test: Fail # mirrors not supported -invocation_mirror_invoke_on2_test: Fail # mirrors not supported -invocation_mirror_invoke_on_test: Fail # mirrors not supported -issue21079_test: Fail # mirrors not supported library_env_test/has_mirror_support: Fail # mirrors not supported library_env_test/has_no_mirror_support: Pass # fails for the wrong reason. -many_overridden_no_such_method_test: Fail # mirrors not supported -no_such_method_test: Fail # mirrors not supported -null_test/0*: Pass # mirrors not supported, fails for the wrong reason -null_test/none: Fail # mirrors not supported -overridden_no_such_method_test: Fail # mirrors not supported -redirecting_factory_reflection_test: Fail # mirrors not supported -regress_13462_0_test: Fail # mirrors not supported -regress_13462_1_test: Fail # mirrors not supported -regress_18535_test: Fail # mirrors not supported -regress_28255_test: Fail # mirrors not supported -super_call4_test: Fail # mirrors not supported -super_getter_setter_test: CompileTimeError vm/reflect_core_vm_test: Fail # mirrors not supported [ $compiler == dart2js && $fast_startup && $fasta && $strong ] @@ -649,9 +620,6 @@ cyclic_type_test/03: RuntimeError cyclic_type_test/04: RuntimeError cyclic_typedef_test/10: Crash # Crash when compiling file:///usr/local/google/home/sra/Dart/sdk/out/ReleaseX64/generated_tests/language_2/cyclic_typedef_test_10.dart, cyclic_typedef_test/11: Crash # Crash when compiling file:///usr/local/google/home/sra/Dart/sdk/out/ReleaseX64/generated_tests/language_2/cyclic_typedef_test_11.dart, -deferred_constraints_constants_test/default_argument2: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary -deferred_constraints_constants_test/none: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary -deferred_constraints_constants_test/reference_after_load: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary deferred_inheritance_constraints_test/extends: MissingCompileTimeError deferred_inheritance_constraints_test/implements: MissingCompileTimeError deferred_inheritance_constraints_test/mixin: MissingCompileTimeError @@ -676,7 +644,6 @@ extract_type_arguments_test: RuntimeError f_bounded_quantification4_test: RuntimeError fauxverride_test/03: MissingCompileTimeError fauxverride_test/05: MissingCompileTimeError -field_increment_bailout_test: RuntimeError field_initialization_order_test/01: MissingCompileTimeError field_initialization_order_test/none: RuntimeError field_override3_test/00: MissingCompileTimeError @@ -851,8 +818,6 @@ nosuchmethod_forwarding/nosuchmethod_forwarding_arguments_test: RuntimeError nosuchmethod_forwarding/nosuchmethod_forwarding_test/05: RuntimeError nosuchmethod_forwarding/nosuchmethod_forwarding_test/06: RuntimeError null_no_such_method_test: CompileTimeError -null_test/mirrors: RuntimeError -null_test/none: RuntimeError number_identity2_test: RuntimeError numbers_test: RuntimeError, OK # non JS number semantics overridden_no_such_method_test: RuntimeError @@ -1073,8 +1038,6 @@ cyclic_typedef_test/10: Crash # Stack Overflow cyclic_typedef_test/11: Crash # Stack Overflow default_factory2_test/01: MissingCompileTimeError default_factory_test/01: MissingCompileTimeError -deferred_constraints_constants_test/none: RuntimeError -deferred_constraints_constants_test/reference_after_load: RuntimeError deferred_inheritance_constraints_test/extends: MissingCompileTimeError deferred_inheritance_constraints_test/implements: MissingCompileTimeError deferred_inheritance_constraints_test/mixin: MissingCompileTimeError @@ -1104,7 +1067,6 @@ factory4_test/00: MissingCompileTimeError fauxverride_test/03: MissingCompileTimeError fauxverride_test/05: MissingCompileTimeError field3_test/01: MissingCompileTimeError -field_increment_bailout_test: RuntimeError field_initialization_order_test/01: MissingCompileTimeError field_initialization_order_test/none: RuntimeError field_override3_test/00: MissingCompileTimeError @@ -1346,8 +1308,6 @@ nosuchmethod_forwarding/nosuchmethod_forwarding_arguments_test: RuntimeError nosuchmethod_forwarding/nosuchmethod_forwarding_test/05: RuntimeError nosuchmethod_forwarding/nosuchmethod_forwarding_test/06: RuntimeError null_no_such_method_test: CompileTimeError -null_test/mirrors: RuntimeError -null_test/none: RuntimeError number_identity2_test: RuntimeError numbers_test: RuntimeError, OK # non JS number semantics operator2_negative_test: Crash # 'file:*/pkg/compiler/lib/src/kernel/env.dart': Failed assertion: line 322 pos 16: '!name.contains('#')': is not true. @@ -1417,8 +1377,6 @@ string_interpolation_and_buffer_test: RuntimeError string_split_test: CompileTimeError string_supertype_checked_test: CompileTimeError super_bound_closure_test/none: CompileTimeError -super_call4_test: CompileTimeError -super_getter_setter_test: CompileTimeError super_no_such_method1_test: CompileTimeError super_no_such_method2_test: CompileTimeError super_no_such_method3_test: CompileTimeError @@ -1654,8 +1612,6 @@ cyclic_typedef_test/10: Crash # Stack Overflow cyclic_typedef_test/11: Crash # Stack Overflow default_factory2_test/01: MissingCompileTimeError default_factory_test/01: MissingCompileTimeError -deferred_constraints_constants_test/none: RuntimeError -deferred_constraints_constants_test/reference_after_load: RuntimeError deferred_inheritance_constraints_test/extends: MissingCompileTimeError deferred_inheritance_constraints_test/implements: MissingCompileTimeError deferred_inheritance_constraints_test/mixin: MissingCompileTimeError @@ -1685,7 +1641,6 @@ factory4_test/00: MissingCompileTimeError fauxverride_test/03: MissingCompileTimeError fauxverride_test/05: MissingCompileTimeError field3_test/01: MissingCompileTimeError -field_increment_bailout_test: RuntimeError field_initialization_order_test/01: MissingCompileTimeError field_initialization_order_test/none: RuntimeError field_override3_test/00: MissingCompileTimeError @@ -1929,8 +1884,6 @@ nosuchmethod_forwarding/nosuchmethod_forwarding_arguments_test: RuntimeError nosuchmethod_forwarding/nosuchmethod_forwarding_test/05: RuntimeError nosuchmethod_forwarding/nosuchmethod_forwarding_test/06: RuntimeError null_no_such_method_test: CompileTimeError -null_test/mirrors: RuntimeError -null_test/none: RuntimeError number_identity2_test: RuntimeError numbers_test: RuntimeError, OK # non JS number semantics overridden_no_such_method_test: RuntimeError @@ -1998,8 +1951,6 @@ string_interpolation_and_buffer_test: RuntimeError string_split_test: CompileTimeError string_supertype_checked_test: CompileTimeError super_bound_closure_test/none: CompileTimeError -super_call4_test: CompileTimeError -super_getter_setter_test: CompileTimeError super_no_such_method1_test: CompileTimeError super_no_such_method2_test: CompileTimeError super_no_such_method3_test: CompileTimeError diff --git a/tests/language_2/language_2_dartdevc.status b/tests/language_2/language_2_dartdevc.status index b35d2efa70d..4e0d8bc6d4b 100644 --- a/tests/language_2/language_2_dartdevc.status +++ b/tests/language_2/language_2_dartdevc.status @@ -157,7 +157,7 @@ string_interpolate_test: CompileTimeError string_split_test: CompileTimeError string_supertype_checked_test: CompileTimeError super_bound_closure_test/none: CompileTimeError -super_call4_test: RuntimeError +super_call4_test/01: MissingCompileTimeError super_no_such_method1_test: RuntimeError super_no_such_method2_test: RuntimeError super_no_such_method3_test: RuntimeError @@ -580,8 +580,6 @@ string_optimizations_test: RuntimeError # Issue 32194 string_split_test: CompileTimeError # Issue 31616 string_supertype_checked_test: CompileTimeError # Issue 31616 super_bound_closure_test/none: CompileTimeError # Issue 31533 -super_call4_test: CompileTimeError -super_getter_setter_test: CompileTimeError super_no_such_method1_test: CompileTimeError super_no_such_method2_test: CompileTimeError super_no_such_method3_test: CompileTimeError @@ -683,7 +681,6 @@ exception_test: RuntimeError # DDC doesn't implement NullThrownError?; Expect.is expect_test: RuntimeError # Issue 29920; Expect.identical did not fail f_bounded_quantification3_test: RuntimeError # Issue 29920; Uncaught Error: type arguments should not be null: (F1, F2) => { field3_test/01: MissingCompileTimeError -field_increment_bailout_test: RuntimeError # Issue 29920; UnimplementedError: JsInstanceMirror.delegate unimplemented field_initialization_order_test/none: RuntimeError # Expect.equals(expected: , actual: ) fails. flatten_test/05: MissingRuntimeError # Issue 29920 flatten_test/08: MissingRuntimeError # Issue 29920 @@ -704,7 +701,6 @@ instance_creation_in_function_annotation_test: RuntimeError # Issue 29920; Unimp int64_literal_test/*: Skip # This is testing Dart 2.0 int64 semantics. integer_division_by_zero_test: RuntimeError # Issue 29920; Expect.throws: Unexpected 'Unsupported operation: Infinity' internal_library_test/02: Crash -invocation_mirror2_test: RuntimeError # UnimplementedError: JsInstanceMirror.delegate unimplemented invocation_mirror_invoke_on2_test: RuntimeError # UnimplementedError: JsInstanceMirror.delegate unimplemented invocation_mirror_invoke_on_test: RuntimeError # UnimplementedError: JsInstanceMirror.delegate unimplemented invocation_mirror_test: RuntimeError # Type 'NativeJavaScriptObject' is not a subtype of type 'int' in strong mode @@ -717,7 +713,6 @@ library_env_test/has_no_html_support: RuntimeError, OK # Intended to fail, bool. local_function2_test/none: RuntimeError # ReferenceError: TToNull is not defined local_function3_test/none: RuntimeError # Expect.equals(expected: , actual: ) fails. local_function_test/none: RuntimeError # Expect.equals(expected: , actual: ) fails. -many_overridden_no_such_method_test: RuntimeError # UnimplementedError: JsInstanceMirror.delegate unimplemented; UnimplementedError: JsInstanceMirror.delegate unimplemented method_override7_test/03: MissingCompileTimeError # Issue 30514 mint_arithmetic_test: RuntimeError # Issue 29920; Expect.equals(expected: <4294967297>, actual: <1>) fails. modulo_test: RuntimeError # Ints and doubles are unified.; Expect.throws fails: Did not throw @@ -728,11 +723,9 @@ multiline_newline_test/05r: MissingCompileTimeError named_parameters_default_eq_test/none: RuntimeError # Expect.isTrue(false) fails. nan_identical_test: RuntimeError # Issue 29920; Unsupported operation: Uint64 accessor not supported by dart2js. nested_switch_label_test: RuntimeError # Issue 29920; UnimplementedError: node see https://github.com/dart-lang/sdk/issues/29352 `continue #L1; -no_such_method_test: RuntimeError # UnimplementedError: JsInstanceMirror.delegate unimplemented null_test/mirrors: RuntimeError # Uses mirrors.; ReferenceError: GenericOfT is not defined 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 parser_quirks_test: CompileTimeError regress_16640_test: RuntimeError # Issue 29920; Uncaught Error: type arguments should not be null: E => { diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status index f53f4b5e12e..55bdd8c6bbd 100644 --- a/tests/language_2/language_2_kernel.status +++ b/tests/language_2/language_2_kernel.status @@ -665,8 +665,6 @@ string_interpolation_and_buffer_test: RuntimeError # Issue 31402 (Return and yie string_split_test: CompileTimeError # Issue 31616 string_supertype_checked_test: CompileTimeError # Issue 31616 super_bound_closure_test/none: CompileTimeError # Issue 31533 -super_call4_test: CompileTimeError -super_getter_setter_test: CompileTimeError super_no_such_method1_test: CompileTimeError super_no_such_method2_test: CompileTimeError super_no_such_method3_test: CompileTimeError @@ -894,10 +892,6 @@ cyclic_typedef_test/11: Crash # Issue 32416. deep_nesting1_negative_test: Skip # Issue 31158 deep_nesting2_negative_test: Skip # Issue 31158 deferred_call_empty_before_load_test: RuntimeError # Fasta/KernelVM bug: Deferred loading kernel issue 30273. -deferred_constraints_constants_test: SkipByDesign -deferred_constraints_constants_test/default_argument2: Pass # Passes by mistake. KernelVM bug: Deferred loading kernel issue 30273. -deferred_constraints_constants_test/none: CompileTimeError # KernelVM bug: Deferred loading kernel issue 30273. -deferred_constraints_constants_test/reference_after_load: CompileTimeError # KernelVM bug: Deferred loading kernel issue 30273. deferred_load_constants_test/none: RuntimeError # KernelVM bug: Deferred loading kernel issue 30273. deferred_load_library_wrong_args_test/01: Pass # Passes by mistake. KernelVM bug: Deferred loading kernel issue 30273. deferred_not_loaded_check_test: RuntimeError # Fasta/KernelVM bug: Deferred loading kernel issue 30273. @@ -1057,8 +1051,6 @@ string_interpolation_and_buffer_test: RuntimeError # Issue 31402 (Return and yie string_split_test: CompileTimeError # Issue 31616 string_supertype_checked_test: CompileTimeError # Issue 31616 super_bound_closure_test/none: CompileTimeError # Issue 31533 -super_call4_test: CompileTimeError -super_getter_setter_test: CompileTimeError super_no_such_method1_test: CompileTimeError super_no_such_method2_test: CompileTimeError super_no_such_method3_test: CompileTimeError @@ -1257,8 +1249,6 @@ string_interpolate_test: CompileTimeError string_split_test: CompileTimeError string_supertype_checked_test: CompileTimeError super_bound_closure_test/none: CompileTimeError -super_call4_test: CompileTimeError -super_getter_setter_test: CompileTimeError super_no_such_method1_test: CompileTimeError super_no_such_method2_test: CompileTimeError super_no_such_method3_test: CompileTimeError @@ -2020,6 +2010,7 @@ string_test/01: MissingCompileTimeError substring_test/01: MissingCompileTimeError super_assign_test/01: MissingCompileTimeError super_bound_closure_test/01: MissingCompileTimeError +super_call4_test/01: MissingCompileTimeError super_operator_index_test/01: MissingCompileTimeError super_operator_index_test/02: MissingCompileTimeError super_operator_index_test/03: MissingCompileTimeError diff --git a/tests/language_2/language_2_precompiled.status b/tests/language_2/language_2_precompiled.status index 1855bdad89a..58fc4e04ece 100644 --- a/tests/language_2/language_2_precompiled.status +++ b/tests/language_2/language_2_precompiled.status @@ -911,8 +911,6 @@ string_test/01: MissingCompileTimeError substring_test/01: MissingCompileTimeError super_assign_test/01: MissingCompileTimeError super_bound_closure_test/01: MissingCompileTimeError -super_call4_test: CompileTimeError -super_getter_setter_test: CompileTimeError super_operator_index_test/01: MissingCompileTimeError super_operator_index_test/02: MissingCompileTimeError super_operator_index_test/03: MissingCompileTimeError diff --git a/tests/language_2/language_2_vm.status b/tests/language_2/language_2_vm.status index 9d7067e287c..eb0dd41a0cb 100644 --- a/tests/language_2/language_2_vm.status +++ b/tests/language_2/language_2_vm.status @@ -919,6 +919,7 @@ string_test/01: MissingCompileTimeError substring_test/01: MissingCompileTimeError super_assign_test/01: MissingCompileTimeError super_bound_closure_test/01: MissingCompileTimeError +super_call4_test/01: MissingCompileTimeError super_operator_index_test/01: MissingCompileTimeError super_operator_index_test/02: MissingCompileTimeError super_operator_index_test/03: MissingCompileTimeError diff --git a/tests/language_2/many_overridden_no_such_method_test.dart b/tests/language_2/many_overridden_no_such_method_test.dart index a9eb62eb3b9..d1230e6ea0a 100644 --- a/tests/language_2/many_overridden_no_such_method_test.dart +++ b/tests/language_2/many_overridden_no_such_method_test.dart @@ -5,7 +5,6 @@ library OverriddenNoSuchMethodTest.dart; -import "dart:mirrors" show reflect; import "package:expect/expect.dart"; part "overridden_no_such_method.dart"; diff --git a/tests/language_2/no_such_method_test.dart b/tests/language_2/no_such_method_test.dart index f9a52b1fa3b..f38285a2487 100644 --- a/tests/language_2/no_such_method_test.dart +++ b/tests/language_2/no_such_method_test.dart @@ -3,34 +3,22 @@ // BSD-style license that can be found in the LICENSE file. // Dart test program testing that NoSuchMethod is properly called. -import "dart:mirrors" show reflect; import "package:expect/expect.dart"; -class GetName { - foo({a, b}) => "foo"; - moo({b}) => "moo"; -} - -String getName(im) => reflect(new GetName()).delegate(im); - class NoSuchMethodTest { foo({a: 10, b: 20}) { return (10 * a) + b; } noSuchMethod(Invocation im) { - Expect.equals("moo", getName(im)); + Expect.equals(#moo, im.memberName); Expect.equals(0, im.positionalArguments.length); Expect.equals(1, im.namedArguments.length); return foo(b: im.namedArguments[const Symbol("b")]); } - - static testMain() { - var obj = new NoSuchMethodTest() as dynamic; - Expect.equals(199, obj.moo(b: 99)); // obj.NoSuchMethod called here. - } } main() { - NoSuchMethodTest.testMain(); + var obj = new NoSuchMethodTest() as dynamic; + Expect.equals(199, obj.moo(b: 99)); // obj.NoSuchMethod called here. } diff --git a/tests/language_2/null_test.dart b/tests/language_2/null_test.dart index ba3459ded00..10e37fa22b8 100644 --- a/tests/language_2/null_test.dart +++ b/tests/language_2/null_test.dart @@ -5,7 +5,6 @@ // VMOptions=--optimization-counter-threshold=5 -import "dart:mirrors"; import "package:expect/expect.dart"; class BadInherit @@ -171,18 +170,6 @@ void test() { Expect.isFalse(compareWithNull(val)); Expect.isTrue(compareWithNull(obj)); - ClassMirror cm = reflectClass(Null); - - InstanceMirror im1 = reflect(null); - Expect.equals(cm, im1.type); - Expect.isTrue(im1.invoke(const Symbol("=="), [null]).reflectee);//# mirrors: ok - Expect.isFalse(im1.invoke(const Symbol("=="), [42]).reflectee); //# mirrors: ok - - InstanceMirror im2 = reflect(obj); - Expect.equals(cm, im2.type); - Expect.isTrue(im2.invoke(const Symbol("=="), [null]).reflectee);//# mirrors: ok - Expect.isFalse(im2.invoke(const Symbol("=="), [42]).reflectee); //# mirrors: ok - // Method/value extraction. The runtimeType was checked above, and operator== // cannot be extracted. // Currently fails in VM. diff --git a/tests/language_2/overridden_no_such_method.dart b/tests/language_2/overridden_no_such_method.dart index c9a98bc8af7..9e866726d1e 100644 --- a/tests/language_2/overridden_no_such_method.dart +++ b/tests/language_2/overridden_no_such_method.dart @@ -5,17 +5,11 @@ part of OverriddenNoSuchMethodTest.dart; -class GetName { - foo(a, b) => "foo"; -} - -String getName(im) => reflect(new GetName()).delegate(im); - class OverriddenNoSuchMethod { OverriddenNoSuchMethod() {} noSuchMethod(Invocation mirror) { - Expect.equals("foo", getName(mirror)); + Expect.equals(#foo, mirror.memberName); // 'foo' was called with two parameters (not counting receiver). List args = mirror.positionalArguments; Expect.equals(2, args.length); diff --git a/tests/language_2/overridden_no_such_method_test.dart b/tests/language_2/overridden_no_such_method_test.dart index 9c7fe12cae7..3aa37be5592 100644 --- a/tests/language_2/overridden_no_such_method_test.dart +++ b/tests/language_2/overridden_no_such_method_test.dart @@ -5,7 +5,6 @@ library OverriddenNoSuchMethodTest.dart; -import "dart:mirrors" show reflect; import "package:expect/expect.dart"; part "overridden_no_such_method.dart"; diff --git a/tests/language_2/super_call4_test.dart b/tests/language_2/super_call4_test.dart index 239339aedcd..dbff2ea8f10 100644 --- a/tests/language_2/super_call4_test.dart +++ b/tests/language_2/super_call4_test.dart @@ -2,7 +2,6 @@ // 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. -import "dart:mirrors" show reflect; import "package:expect/expect.dart"; // Checks that noSuchMethod is resolved in the super class and not in the @@ -16,50 +15,26 @@ class C { bool baz({int b}); bool boz(int a, {int c}); - bool noSuchMethod(Invocation im) { - if (im.memberName == const Symbol('foo')) { - return im.positionalArguments.isEmpty && - im.namedArguments.isEmpty && - reflect(e).delegate(im); - } - if (im.memberName == const Symbol('bar')) { - return im.positionalArguments.length == 1 && - im.namedArguments.isEmpty && - reflect(e).delegate(im); - } - if (im.memberName == const Symbol('baz')) { - return im.positionalArguments.isEmpty && - im.namedArguments.length == 1 && - reflect(e).delegate(im); - } - if (im.memberName == const Symbol('boz')) { - return im.positionalArguments.length == 1 && - im.namedArguments.length == 1 && - reflect(e).delegate(im); - } - return false; - } + bool noSuchMethod(Invocation im) => true; } class D extends C { - bool noSuchMethod(Invocation im) { - return false; - } + bool noSuchMethod(Invocation im) => false; test1() { - return super.foo(); + return super.foo(); //# 01: compile-time error } test2() { - return super.bar(1); + return super.bar(1); //# 01: compile-time error } test3() { - return super.baz(b: 2); + return super.baz(b: 2); //# 01: compile-time error } test4() { - return super.boz(1, c: 2); + return super.boz(1, c: 2); //# 01: compile-time error } } @@ -72,8 +47,8 @@ class E { main() { var d = new D(); - Expect.isTrue(d.test1()); - Expect.isTrue(d.test2()); - Expect.isTrue(d.test3()); - Expect.isTrue(d.test4()); + Expect.isNull(d.test1()); + Expect.isNull(d.test2()); + Expect.isNull(d.test3()); + Expect.isNull(d.test4()); } diff --git a/tests/language_2/super_getter_setter_test.dart b/tests/language_2/super_getter_setter_test.dart deleted file mode 100644 index 736957a9f63..00000000000 --- a/tests/language_2/super_getter_setter_test.dart +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright (c) 2013, 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. - -import 'dart:mirrors'; - -import "package:expect/expect.dart"; - -class A { - var missingSetterField; - var missingGetterField; - var getterInSuperClassField; - var setterInSuperClassField; - var getterSetterField; - var missingAllField; - var indexField = new List(2); - - set setterInSuperClass(a) { - setterInSuperClassField = a; - } - - get getterInSuperClass => getterInSuperClassField; -} - -class B extends A { - get missingSetter => missingSetterField; - get setterInSuperClass => setterInSuperClassField; - - set missingGetter(a) { - missingGetterField = a; - } - - set getterInSuperClass(a) { - getterInSuperClassField = a; - } - - get getterSetter => getterSetterField; - set getterSetter(a) { - getterSetterField = a; - } - - operator [](index) => indexField[index]; - operator []=(index, value) { - indexField[index] = value; - } - - set missingSetter(a); - get missingGetter; - - set missingAll(a); - get missingAll; - - noSuchMethod(Invocation im) { - String name = MirrorSystem.getName(im.memberName); - if (name.startsWith('missingSetter')) { - Expect.isTrue(im.isSetter); - missingSetterField = im.positionalArguments[0]; - } else if (name.startsWith('missingGetter')) { - Expect.isTrue(im.isGetter); - return missingGetterField; - } else if (name.startsWith('missingAll') && im.isGetter) { - return missingAllField; - } else if (name.startsWith('missingAll') && im.isSetter) { - missingAllField = im.positionalArguments[0]; - } else { - Expect.fail('Should not reach here'); - } - } -} - -class C extends B { - test() { - Expect.equals(42, super.missingSetter = 42); - Expect.equals(42, super.missingSetter); - Expect.equals(43, super.missingSetter += 1); - Expect.equals(43, super.missingSetter); - Expect.equals(43, super.missingSetter++); - Expect.equals(44, super.missingSetter); - - Expect.equals(42, super.missingGetter = 42); - Expect.equals(42, super.missingGetter); - Expect.equals(43, super.missingGetter += 1); - Expect.equals(43, super.missingGetter); - Expect.equals(43, super.missingGetter++); - Expect.equals(44, super.missingGetter); - - Expect.equals(42, super.setterInSuperClass = 42); - Expect.equals(42, super.setterInSuperClass); - Expect.equals(43, super.setterInSuperClass += 1); - Expect.equals(43, super.setterInSuperClass); - Expect.equals(43, super.setterInSuperClass++); - Expect.equals(44, super.setterInSuperClass); - - Expect.equals(42, super.getterInSuperClass = 42); - Expect.equals(42, super.getterInSuperClass); - Expect.equals(43, super.getterInSuperClass += 1); - Expect.equals(43, super.getterInSuperClass); - Expect.equals(43, super.getterInSuperClass++); - Expect.equals(44, super.getterInSuperClass); - - Expect.equals(42, super.missingAll = 42); - Expect.equals(42, super.missingAll); - Expect.equals(43, super.missingAll += 1); - Expect.equals(43, super.missingAll); - Expect.equals(43, super.missingAll++); - Expect.equals(44, super.missingAll); - - Expect.equals(42, super[0] = 42); - Expect.equals(42, super[0]); - Expect.equals(43, super[0] += 1); - Expect.equals(43, super[0]); - Expect.equals(43, super[0]++); - Expect.equals(44, super[0]); - - Expect.equals(2, super[0] = 2); - Expect.equals(2, super[0]); - Expect.equals(3, super[0] += 1); - Expect.equals(3, super[0]); - Expect.equals(3, super[0]++); - Expect.equals(4, super[0]); - } -} - -main() { - new C().test(); -} diff --git a/tests/lib_2/html/mirrors_js_typed_interop_test.dart b/tests/lib_2/html/mirrors_js_typed_interop_test.dart index e87729580f6..e4358a7da7c 100644 --- a/tests/lib_2/html/mirrors_js_typed_interop_test.dart +++ b/tests/lib_2/html/mirrors_js_typed_interop_test.dart @@ -1,6 +1,10 @@ // Copyright (c) 2015, 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. +// dartdevcOptions=--emit-metadata + +// TODO(jmesserly): delete this test file once `dart:mirrors` is fully diabled +// in dart4web compilers. @JS() library tests.html.mirrors_js_typed_interop_test; diff --git a/tests/lib_2/lib_2_kernel.status b/tests/lib_2/lib_2_kernel.status index fbfe46a649f..e9c9f60cbcf 100644 --- a/tests/lib_2/lib_2_kernel.status +++ b/tests/lib_2/lib_2_kernel.status @@ -17,6 +17,7 @@ js/*: Skip # TODO(ahe): Make dart:js available. [ $fasta ] isolate/compile_time_error_test/01: MissingCompileTimeError +mirrors/deferred_constraints_constants_test/default_argument2: MissingCompileTimeError mirrors/generic_bounded_by_type_parameter_test/02: MissingCompileTimeError mirrors/generic_bounded_test/01: MissingCompileTimeError mirrors/generic_bounded_test/02: MissingCompileTimeError @@ -95,6 +96,7 @@ isolate/spawn_function_custom_class_test: Pass, Crash, Timeout # Crashes with -- isolate/spawn_uri_nested_vm_test: Pass, Timeout isolate/static_function_test: Skip # Times out. Issue 31855. CompileTimeError. Issue 31402 mirrors/abstract_class_test: RuntimeError +mirrors/apply3_test: RuntimeError mirrors/class_declarations_test/01: RuntimeError # Issue 31402 (Invocation arguments) mirrors/class_declarations_test/none: RuntimeError # Issue 31402 (Invocation arguments) mirrors/class_mirror_location_test: RuntimeError @@ -218,6 +220,7 @@ isolate/request_reply_test: Pass, Timeout isolate/stacktrace_message_test: RuntimeError mirrors/constructor_optional_args_test: RuntimeError mirrors/constructors_test: RuntimeError +mirrors/deferred_constraints_constants_test/default_argument2: Pass mirrors/fake_function_with_call_test: RuntimeError mirrors/generic_superclass_test/01: RuntimeError mirrors/generic_superclass_test/none: RuntimeError @@ -235,6 +238,7 @@ mirrors/null_test: RuntimeError mirrors/operator_test: RuntimeError mirrors/redirecting_factory_different_type_test/02: MissingCompileTimeError mirrors/redirecting_factory_different_type_test/none: RuntimeError +mirrors/redirecting_factory_reflection_test: RuntimeError mirrors/regress_16321_test/none: Crash mirrors/top_level_accessors_test/01: MissingCompileTimeError diff --git a/tests/lib_2/mirrors/apply3_test.dart b/tests/lib_2/mirrors/apply3_test.dart new file mode 100644 index 00000000000..d96fa0d264e --- /dev/null +++ b/tests/lib_2/mirrors/apply3_test.dart @@ -0,0 +1,69 @@ +// Copyright (c) 2013, 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. + +// Test [Function.apply] on user-defined classes that implement [noSuchMethod]. + +import "package:expect/expect.dart"; +import 'dart:mirrors'; + +class F { + call([p1]) => "call"; + noSuchMethod(Invocation invocation) => "NSM"; +} + +class G { + call() => '42'; + noSuchMethod(Invocation invocation) => invocation; +} + +class H { + call(required, {a}) => required + a; +} + +main() { + Expect.equals('call', Function.apply(new F(), [])); + Expect.equals('call', Function.apply(new F(), [1])); + Expect.equals('NSM', Function.apply(new F(), [1, 2])); + Expect.equals('NSM', Function.apply(new F(), [1, 2, 3])); + + var symbol = const Symbol('a'); + var requiredParameters = [1]; + var optionalParameters = new Map()..[symbol] = 42; + Invocation i = + Function.apply(new G(), requiredParameters, optionalParameters); + + Expect.equals(const Symbol('call'), i.memberName); + Expect.listEquals(requiredParameters, i.positionalArguments); + Expect.mapEquals(optionalParameters, i.namedArguments); + Expect.isTrue(i.isMethod); + Expect.isFalse(i.isGetter); + Expect.isFalse(i.isSetter); + Expect.isFalse(i.isAccessor); + + // Check that changing the passed list and map for parameters does + // not affect [i]. + requiredParameters[0] = 42; + optionalParameters[symbol] = 12; + Expect.listEquals([1], i.positionalArguments); + Expect.mapEquals(new Map()..[symbol] = 42, i.namedArguments); + + // Check that using [i] for invocation yields the same [Invocation] + // object. + var mirror = reflect(new G()); + Invocation other = mirror.delegate(i); + Expect.equals(i.memberName, other.memberName); + Expect.listEquals(i.positionalArguments, other.positionalArguments); + Expect.mapEquals(i.namedArguments, other.namedArguments); + Expect.equals(i.isMethod, other.isMethod); + Expect.equals(i.isGetter, other.isGetter); + Expect.equals(i.isSetter, other.isSetter); + Expect.equals(i.isAccessor, other.isAccessor); + + // Test that [i] can be used to hit an existing method. + Expect.equals(43, new H().call(1, a: 42)); + Expect.equals(43, Function.apply(new H(), [1], new Map()..[symbol] = 42)); + mirror = reflect(new H()); + Expect.equals(43, mirror.delegate(i)); + Expect.equals(43, mirror.delegate(other)); +} diff --git a/tests/lib_2/mirrors/const_evaluation_test.dart b/tests/lib_2/mirrors/const_evaluation_test.dart new file mode 100644 index 00000000000..be271334d12 --- /dev/null +++ b/tests/lib_2/mirrors/const_evaluation_test.dart @@ -0,0 +1,21 @@ +// Copyright (c) 2014, 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. + +// Check that compile-time evaluation of constants is consistent with runtime +// evaluation. + +import 'dart:mirrors'; +import 'package:expect/expect.dart'; + +const top_const = identical(-0.0, 0); + +@top_const +class C {} + +void main() { + var local_var = identical(-0.0, 0); + var metadata = reflectClass(C).metadata[0].reflectee; + Expect.equals(top_const, metadata); + Expect.equals(local_var, metadata); +} diff --git a/tests/language_2/deferred_constraints_constants_lib.dart b/tests/lib_2/mirrors/deferred_constraints_constants_lib.dart similarity index 100% rename from tests/language_2/deferred_constraints_constants_lib.dart rename to tests/lib_2/mirrors/deferred_constraints_constants_lib.dart diff --git a/tests/language_2/deferred_constraints_constants_test.dart b/tests/lib_2/mirrors/deferred_constraints_constants_test.dart similarity index 92% rename from tests/language_2/deferred_constraints_constants_test.dart rename to tests/lib_2/mirrors/deferred_constraints_constants_test.dart index c975f51c9b2..053bb816f53 100644 --- a/tests/language_2/deferred_constraints_constants_test.dart +++ b/tests/lib_2/mirrors/deferred_constraints_constants_test.dart @@ -61,9 +61,9 @@ void main() { var h3 = new H3(); // Need to access the metadata to trigger the expected compilation error. - reflectClass(H1).metadata; // metadata1: continued - reflectClass(H2).metadata; // metadata2: continued - reflectClass(H3).metadata; // metadata3: continued + reflectClass(H1).metadata; //# metadata1: continued + reflectClass(H2).metadata; //# metadata2: continued + reflectClass(H3).metadata; //# metadata3: continued asyncEnd(); }); diff --git a/tests/language_2/enum_mirror_test.dart b/tests/lib_2/mirrors/enum_mirror_test.dart similarity index 100% rename from tests/language_2/enum_mirror_test.dart rename to tests/lib_2/mirrors/enum_mirror_test.dart diff --git a/tests/language_2/instance_creation_in_function_annotation_test.dart b/tests/lib_2/mirrors/instance_creation_in_function_annotation_test.dart similarity index 100% rename from tests/language_2/instance_creation_in_function_annotation_test.dart rename to tests/lib_2/mirrors/instance_creation_in_function_annotation_test.dart diff --git a/tests/language_2/invocation_mirror_invoke_on2_test.dart b/tests/lib_2/mirrors/invocation_mirror_invoke_on2_test.dart similarity index 100% rename from tests/language_2/invocation_mirror_invoke_on2_test.dart rename to tests/lib_2/mirrors/invocation_mirror_invoke_on2_test.dart diff --git a/tests/language_2/invocation_mirror_invoke_on_test.dart b/tests/lib_2/mirrors/invocation_mirror_invoke_on_test.dart similarity index 100% rename from tests/language_2/invocation_mirror_invoke_on_test.dart rename to tests/lib_2/mirrors/invocation_mirror_invoke_on_test.dart diff --git a/tests/language_2/issue21079_test.dart b/tests/lib_2/mirrors/issue21079_test.dart similarity index 100% rename from tests/language_2/issue21079_test.dart rename to tests/lib_2/mirrors/issue21079_test.dart diff --git a/tests/lib_2/mirrors/null_test.dart b/tests/lib_2/mirrors/null_test.dart index a1946568a41..de6b459b028 100644 --- a/tests/lib_2/mirrors/null_test.dart +++ b/tests/lib_2/mirrors/null_test.dart @@ -2,13 +2,31 @@ // 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. -library test.null_test; +// VMOptions=--optimization-counter-threshold=5 -import 'dart:mirrors'; +import "dart:mirrors"; +import "package:expect/expect.dart"; -import 'package:expect/expect.dart'; +void main() { + for (int i = 0; i < 10; i++) { + test(); + } +} + +void test() { + ClassMirror cm = reflectClass(Null); + + InstanceMirror im1 = reflect(null); + Expect.equals(cm, im1.type); + Expect.isTrue(im1.invoke(const Symbol("=="), [null]).reflectee); + Expect.isFalse(im1.invoke(const Symbol("=="), [42]).reflectee); + + var obj = confuse(null); // Null value that isn't known at compile-time. + InstanceMirror im2 = reflect(obj); + Expect.equals(cm, im2.type); + Expect.isTrue(im2.invoke(const Symbol("=="), [null]).reflectee); + Expect.isFalse(im2.invoke(const Symbol("=="), [42]).reflectee); -main() { InstanceMirror nullMirror = reflect(null); Expect.isTrue(nullMirror.getField(#hashCode).reflectee is int); Expect.equals(null.hashCode, nullMirror.getField(#hashCode).reflectee); @@ -16,8 +34,8 @@ main() { Expect.isTrue(nullMirror.invoke(#==, [null]).reflectee); Expect.isFalse(nullMirror.invoke(#==, [new Object()]).reflectee); Expect.equals('null', nullMirror.invoke(#toString, []).reflectee); - Expect.throwsNoSuchMethodError(() => nullMirror.invoke(#notDefined, []), - 'noSuchMethod'); + Expect.throwsNoSuchMethodError( + () => nullMirror.invoke(#notDefined, []), 'noSuchMethod'); ClassMirror NullMirror = nullMirror.type; Expect.equals(reflectClass(Null), NullMirror); @@ -38,3 +56,16 @@ main() { } Expect.equals(coreLibrary, NullMirror.owner); } + +// Magic incantation to avoid the compiler recognizing the constant values +// at compile time. If the result is computed at compile time, the dynamic code +// will not be tested. +confuse(x) { + try { + if (new DateTime.now().millisecondsSinceEpoch == 42) x = 42; + throw [x]; + } on dynamic catch (e) { + return e[0]; + } + return 42; +} diff --git a/tests/language_2/redirecting_factory_reflection_test.dart b/tests/lib_2/mirrors/redirecting_factory_reflection_test.dart similarity index 100% rename from tests/language_2/redirecting_factory_reflection_test.dart rename to tests/lib_2/mirrors/redirecting_factory_reflection_test.dart diff --git a/tests/language_2/regress_13462_0_test.dart b/tests/lib_2/mirrors/regress_13462_0_test.dart similarity index 100% rename from tests/language_2/regress_13462_0_test.dart rename to tests/lib_2/mirrors/regress_13462_0_test.dart diff --git a/tests/language_2/regress_13462_1_test.dart b/tests/lib_2/mirrors/regress_13462_1_test.dart similarity index 100% rename from tests/language_2/regress_13462_1_test.dart rename to tests/lib_2/mirrors/regress_13462_1_test.dart diff --git a/tests/language_2/regress_18535_test.dart b/tests/lib_2/mirrors/regress_18535_test.dart similarity index 100% rename from tests/language_2/regress_18535_test.dart rename to tests/lib_2/mirrors/regress_18535_test.dart diff --git a/tests/language_2/regress_28255_test.dart b/tests/lib_2/mirrors/regress_28255_test.dart similarity index 100% rename from tests/language_2/regress_28255_test.dart rename to tests/lib_2/mirrors/regress_28255_test.dart diff --git a/tools/testing/dart/compiler_configuration.dart b/tools/testing/dart/compiler_configuration.dart index 0b5b805e6b9..4bc4061f9e6 100644 --- a/tools/testing/dart/compiler_configuration.dart +++ b/tools/testing/dart/compiler_configuration.dart @@ -135,6 +135,7 @@ abstract class CompilerConfiguration { List vmOptions, List sharedOptions, List dart2jsOptions, + List ddcOptions, List args) { return sharedOptions.toList()..addAll(args); } @@ -350,7 +351,7 @@ class ComposedCompilerConfiguration extends CompilerConfiguration { } List computeCompilerArguments( - vmOptions, sharedOptions, dart2jsOptions, args) { + vmOptions, sharedOptions, dart2jsOptions, ddcOptions, args) { // The result will be passed as an input to [extractArguments] // (i.e. the arguments to the [PipelineCommand]). return []..addAll(vmOptions)..addAll(sharedOptions)..addAll(args); @@ -446,6 +447,7 @@ class Dart2jsCompilerConfiguration extends Dart2xCompilerConfiguration { List vmOptions, List sharedOptions, List dart2jsOptions, + List ddcOptions, List args) { return [] ..addAll(sharedOptions) @@ -493,8 +495,9 @@ class DevCompilerConfiguration extends CompilerConfiguration { List vmOptions, List sharedOptions, List dart2jsOptions, + List ddcOptions, List args) { - var result = sharedOptions.toList(); + var result = sharedOptions.toList()..addAll(ddcOptions); // The file being compiled is the last argument. result.add(args.last); @@ -580,8 +583,9 @@ class DevKernelCompilerConfiguration extends CompilerConfiguration { List vmOptions, List sharedOptions, List dart2jsOptions, + List ddcOptions, List args) { - var result = sharedOptions.toList(); + var result = sharedOptions.toList()..addAll(ddcOptions); // The file being compiled is the last argument. result.add(args.last); @@ -863,7 +867,7 @@ class PrecompilerCompilerConfiguration extends CompilerConfiguration } List computeCompilerArguments( - vmOptions, sharedOptions, dart2jsOptions, originalArguments) { + vmOptions, sharedOptions, dart2jsOptions, ddcOptions, originalArguments) { List args = []; if (_isChecked) { args.add('--enable_asserts'); @@ -939,7 +943,7 @@ class AppJitCompilerConfiguration extends CompilerConfiguration { } List computeCompilerArguments( - vmOptions, sharedOptions, dart2jsOptions, originalArguments) { + vmOptions, sharedOptions, dart2jsOptions, ddcOptions, originalArguments) { var args = []; if (_isChecked) { args.add('--enable_asserts'); @@ -1194,6 +1198,7 @@ class FastaCompilerConfiguration extends CompilerConfiguration { List vmOptions, List sharedOptions, List dart2jsOptions, + List ddcOptions, List args) { var arguments = []; for (var argument in args) { diff --git a/tools/testing/dart/test_suite.dart b/tools/testing/dart/test_suite.dart index 479c94f2409..8260858e870 100644 --- a/tools/testing/dart/test_suite.dart +++ b/tools/testing/dart/test_suite.dart @@ -883,12 +883,13 @@ class StandardTestSuite extends TestSuite { var compilerConfiguration = configuration.compilerConfiguration; var sharedOptions = info.optionsFromFile['sharedOptions'] as List; var dart2jsOptions = info.optionsFromFile['dart2jsOptions'] as List; + var ddcOptions = info.optionsFromFile['ddcOptions'] as List; var compileTimeArguments = []; String tempDir; if (compilerConfiguration.hasCompiler) { compileTimeArguments = compilerConfiguration.computeCompilerArguments( - vmOptions, sharedOptions, dart2jsOptions, args); + vmOptions, sharedOptions, dart2jsOptions, ddcOptions, args); // Avoid doing this for analyzer. var path = info.filePath; if (vmOptionsVariant != 0) { @@ -1460,6 +1461,7 @@ class StandardTestSuite extends TestSuite { List dartOptions; List sharedOptions; List dart2jsOptions; + List ddcOptions; Map environment; String packageRoot; String packages; @@ -1489,6 +1491,7 @@ class StandardTestSuite extends TestSuite { dartOptions = singleListOfOptions('DartOptions'); sharedOptions = singleListOfOptions('SharedOptions'); dart2jsOptions = singleListOfOptions('dart2jsOptions'); + ddcOptions = singleListOfOptions('dartdevcOptions'); matches = environmentRegExp.allMatches(contents); for (var match in matches) { @@ -1587,6 +1590,7 @@ class StandardTestSuite extends TestSuite { "vmOptions": result, "sharedOptions": sharedOptions ?? [], "dart2jsOptions": dart2jsOptions ?? [], + "ddcOptions": ddcOptions ?? [], "dartOptions": dartOptions, "environment": environment, "packageRoot": packageRoot,