warnOnElement method

void warnOnElement(
  1. Warnable warnable,
  2. PackageWarning kind,
  3. {String message,
  4. Iterable<Locatable> referredFrom,
  5. Iterable<String> extendedDebug}
)

Implementation

void warnOnElement(Warnable warnable, PackageWarning kind,
    {String message,
    Iterable<Locatable> referredFrom,
    Iterable<String> extendedDebug}) {
  var newEntry = Tuple3(warnable?.element, kind, message);
  if (_warnAlreadySeen.contains(newEntry)) {
    return;
  }
  // Warnings can cause other warnings.  Queue them up via the stack but
  // don't allow warnings we're already working on to get in there.
  _warnAlreadySeen.add(newEntry);
  _warnOnElement(warnable, kind,
      message: message,
      referredFrom: referredFrom,
      extendedDebug: extendedDebug);
  _warnAlreadySeen.remove(newEntry);
}