// 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. // @dart = 2.7 // Derived from tests/web_2/generic_type_error_message_test. import 'package:expect/expect.dart'; /*class: Foo:*/ class Foo {} /*class: Bar:*/ class Bar {} /*class: Baz:explicit=[Baz*],needsArgs*/ class Baz {} @pragma('dart2js:disableFinal') main() { test(new Foo(), Foo, expectTypeArguments: false); // ignore: unnecessary_cast test(new Bar() as Bar, Bar, expectTypeArguments: false); Baz b = new Baz(); dynamic c = b; test(c as Baz, Baz, expectTypeArguments: true); } void test(dynamic object, Type type, {bool expectTypeArguments}) { bool caught = false; try { print(type); object as List; } catch (e) { String expected = '$type'; if (!expectTypeArguments) { expected = expected.substring(0, expected.indexOf('<')); } expected = "'$expected'"; Expect.isTrue(e.toString().contains(expected), 'Expected "$expected" in the message: $e'); caught = true; print(e); } Expect.isTrue(caught); }