// Copyright (c) 2014, 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.

library services.completion.sorter;

import 'package:analysis_server/src/protocol.dart';
import 'package:analysis_server/src/provisional/completion/completion_dart.dart';

/**
 * The abstract class `ContributionSorter` defines the behavior of objects
 * that are used to adjust the relevance of an existing list of suggestions.
 * This is a long-lived object that should not maintain state between
 * calls to it's [sort] method.
 */
abstract class ContributionSorter {
  /**
   * After [CompletionSuggestion]s have been computed,
   * this method is called to adjust the relevance of those suggestions.
   * The compilation unit and completion node
   * in the given completion context may not be resolved.
   * This method should execute quickly and not block.
   */
  void sort(DartCompletionRequest request,
      Iterable<CompletionSuggestion> suggestions);
}
