blob: a88c0e5a592a284160cd532d34314e1a0f7b8eef [file] [log] [blame]
// Copyright (c) 2020, 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:dartdoc/src/model/model.dart';
// TODO(jcollins-g): Mix-in ExtensionTarget on Method, ModelFunction, Typedef,
// and other possible documented symbols that could be extended (#2701).
mixin ExtensionTarget on ModelElement {
bool get hasModifiers;
bool get hasPotentiallyApplicableExtensions =>
potentiallyApplicableExtensions.isNotEmpty;
List<Extension> _potentiallyApplicableExtensions;
Iterable<Extension> get potentiallyApplicableExtensions {
if (_potentiallyApplicableExtensions == null) {
_potentiallyApplicableExtensions = packageGraph.documentedExtensions
.where((e) => e.couldApplyTo(this))
.toList(growable: false)
..sort(byName);
}
return _potentiallyApplicableExtensions;
}
}