blob: 2e2623d90790072a7782942089f5efb1ebe30d27 [file] [log] [blame]
// Copyright (c) 2015, 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 analysis_server.analysis.navigation_core;
import 'package:analysis_server/src/protocol.dart'
show ElementKind, Location, NavigationRegion, NavigationTarget;
import 'package:analyzer/src/generated/engine.dart' show AnalysisContext;
import 'package:analyzer/src/generated/source.dart' show Source;
/**
* An object used to produce navigation regions.
*
* Clients are expected to subtype this class when implementing plugins.
*/
abstract class NavigationContributor {
/**
* Contribute navigation regions for a subset of the content of the given
* [source] into the given [collector]. The subset is specified by the
* [offset] and [length]. The [context] can be used to access analysis results.
*/
void computeNavigation(NavigationCollector collector, AnalysisContext context,
Source source, int offset, int length);
}
/**
* An object that [NavigationContributor]s use to record navigation regions.
*
* Clients are not expected to subtype this class.
*/
abstract class NavigationCollector {
/**
* Record a new navigation region with the given [offset] and [length] that
* should navigate to the given [targetLocation].
*/
void addRegion(
int offset, int length, ElementKind targetKind, Location targetLocation);
}