blob: acd33f37170387f8f15931e0319f39268e226186 [file] [log] [blame]
// Copyright (c) 2016, 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:_fe_analyzer_shared/src/scanner/token.dart'
show CommentToken, Token;
/// Search for the token before [target] starting the search with [start].
/// Return `null` if [target] is a comment token
/// or the previous token cannot be found.
Token? findPrevious(Token start, Token? target) {
if (start == target || target is CommentToken) {
return null;
}
Token token = start is CommentToken ? start.parent! : start;
do {
Token next = token.next!;
if (next == target) {
return token;
}
token = next;
} while (!token.isEof);
return null;
}