0e040b80fd
Running with dynamic modules means that closure invocation shapes cannot be statically known. A closure can flow between any modules and can then be invoked with a shape that's unknown to the module that defines the closure. Given this, our 2 options are to generate code for every invocation shape or invoke the closure as if we don't know it's shape (dynamic invocation). The former would scale exponentially relative to the number of named parameters so is not practical. The latter generates slower, bigger code but is the more practical of the 2. Change-Id: I5e3613d23662e5b2213fdaa725642678fe26e43a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/421920 Reviewed-by: Martin Kustermann <kustermann@google.com> Reviewed-by: Ömer Ağacan <omersa@google.com>
18 lines
606 B
Dart
18 lines
606 B
Dart
// 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.
|
|
|
|
import '../../common/testing.dart' as helper;
|
|
import 'package:expect/expect.dart';
|
|
|
|
import 'shared/shared.dart';
|
|
|
|
/// A dynamic module is allowed to extend a class in the dynamic interface and
|
|
/// override its members.
|
|
void main() async {
|
|
final c = (await helper.load('entry1.dart')) as int Function(int, int);
|
|
Expect.equals(1, c1(0));
|
|
Expect.equals(49, c(0, 0));
|
|
helper.done();
|
|
}
|