// Copyright (c) 2017, 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. /// Test that checks that we are not added $isFunction properties on closure /// classes. import 'package:compiler/src/commandline_options.dart'; import 'package:compiler/src/compiler.dart'; import 'package:compiler/src/js_emitter/model.dart'; import 'package:compiler/src/js_model/js_strategy.dart'; import 'package:expect/async_helper.dart'; import 'package:expect/expect.dart'; import 'package:compiler/src/util/memory_compiler.dart'; const String SOURCE = ''' import 'dart:isolate'; main(arg) {} '''; main() { runTest() async { List options = [Flags.enableCheckedMode]; CompilationResult result = await runCompiler( memorySourceFiles: {'main.dart': SOURCE}, options: options, ); Expect.isTrue(result.isSuccess); Compiler compiler = result.compiler!; Program program = compiler.backendStrategy.emitterTask.emitter.programForTesting!; JsBackendStrategy backendStrategy = compiler.backendStrategy; var name = backendStrategy.namerForTesting.operatorIs( compiler.backendClosedWorldForTesting!.commonElements.functionClass, ); for (Fragment fragment in program.fragments) { for (Library library in fragment.libraries) { for (Class cls in library.classes) { if (!cls.element.isClosure) continue; for (StubMethod stub in cls.isChecks) { Expect.notEquals( stub.name!.key, name.key, "Unexpected ${name.key} stub on $cls", ); } } } } } asyncTest(() async { print('--test from kernel------------------------------------------------'); await runTest(); }); }