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