// Copyright (c) 2018, 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 'package:front_end/src/fasta/kernel/utils.dart' show serializeComponent; import 'package:kernel/kernel.dart' show Class, Component, EmptyStatement, Library, Procedure, Reference; List postProcess(Component c) { c.libraries.sort((l1, l2) { return "${l1.fileUri}".compareTo("${l2.fileUri}"); }); c.computeCanonicalNames(); for (Library library in c.libraries) { library.additionalExports.sort((Reference r1, Reference r2) { return "${r1.canonicalName}".compareTo("${r2.canonicalName}"); }); } return serializeComponent(c); } void throwOnEmptyMixinBodies(Component component) { int empty = countEmptyMixinBodies(component); if (empty != 0) { throw "Expected 0 empty bodies in mixins, but found $empty"; } } int countEmptyMixinBodies(Component component) { int empty = 0; for (Library lib in component.libraries) { for (Class c in lib.classes) { if (c.isAnonymousMixin) { for (Procedure p in c.procedures) { if (p.function.body is EmptyStatement) { empty++; } } } } } return empty; }