| // Copyright (c) 2025, 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. |
| |
| void main() { |
| final list = <Base>[A1(), A2()]; |
| for (final entry in list) { |
| // The polymorphic dispatcher for `doit()` will be inlined as there's only |
| // one method marked with `@pragma('wasm:static-dispatch')`. |
| // |
| // This inlining used to trigger a bug, this is a regression test for |
| // this bug. |
| entry.doit(); |
| } |
| } |
| |
| class Base { |
| void doit() { |
| print('Base.doit()'); |
| } |
| } |
| |
| class A1 extends Base { |
| void doit() { |
| print('A1.doit()'); |
| } |
| } |
| |
| class A2 extends Base { |
| @pragma('wasm:static-dispatch') |
| void doit() { |
| print('A2.doit()'); |
| } |
| } |