| // 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; |
| } |