| // Copyright (c) 2012, 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 "package:expect/expect.dart"; |
| |
| class A { |
| Map? a; |
| Comparator? b; |
| // This code exhibited a bug in dart2js, where the type of [a] was inferred to |
| // be [Comparator] or null; |
| A() |
| : b = null, |
| a = null; |
| } |
| |
| main() { |
| Expect.throws(bar); |
| } |
| |
| bar() { |
| // We would create a typed selector for the call to foo, where the |
| // receiver type is a typedef. Some code in the dart2js backend were |
| // not dealing correctly with typedefs and lead the compiler to |
| // crash. |
| new A().a?.foo(); |
| // ^^^ |
| // [analyzer] COMPILE_TIME_ERROR.UNDEFINED_METHOD |
| // [cfe] The method 'foo' isn't defined for the class 'Map<dynamic, dynamic>'. |
| } |