Files
sdk/pkg/dynamic_modules/test/data/extend_class2/main.dart
T
Devon Carew 3c973fb292 [lints] address diagnostics related to strict_top_level_inference
Change-Id: I228058202855900f0adba73c1ab04d35180a6e5d
Tested: this is an analyzer diagnostic only change
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/414900
Reviewed-by: Nate Bosch <nbosch@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Nate Biggs <natebiggs@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2025-03-17 08:27:57 -07:00

36 lines
1.1 KiB
Dart

// Copyright (c) 2024, 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 '../../common/testing.dart' as helper;
import 'package:expect/expect.dart';
import 'shared/shared.dart' show Base, Child1;
class Child extends Base {
@override
int method2() => 4;
}
/// A dynamic module is allowed to extend a class in the dynamic interface and
/// override its members.
///
/// This is similar to the `extend_class` test case, but includes more nuance,
/// like extending a non-leaf class that already was used in the program, since
/// that may affect dispatch logic based on some backends.
void main() async {
Base o = Child1();
Expect.equals(1, o.method1());
Expect.equals(3, o.method2());
Expect.equals(3, indirect(o));
Expect.equals(4, indirect(Child()));
o = (await helper.load('entry1.dart')) as Base;
Expect.equals(1, o.method1());
Expect.equals(2, o.method2());
Expect.equals(2, indirect(o));
helper.done();
}
@pragma('vm:never-inline')
int indirect(Base a) => a.method2();