blob: 9a1906fa241e3d5e3655dcb063afba7fb0f00b20 [file] [log] [blame]
// 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.
// Regression test for https://github.com/dart-lang/sdk/issues/56412.
//
// The combination of named arguments in any position and finalizables leads
// to nested let expressions. Let expressions introduce scopes. Often variables
// get hoisted into a parent scope which is usually a block. But this specific
// regression test has a variable declaration in a let scope.
// (The bug was that in the compiler, let expressions were not entering scopes.)
import 'dart:ffi';
void main() {
MyFinalizable().myMethod(
namedArgument: Object(),
() {
final error = StateError('Cause crash');
throw error;
},
);
print('done');
}
class MyFinalizable implements Finalizable {
Object myMethod(
Object Function() action, {
Object? namedArgument,
}) {
return Object();
}
}