Stop adding tokens to unit API signature at EOF.

R=brianwilkerson@google.com, danrubel@google.com

Fixes https://github.com/dart-lang/sdk/issues/34850
Change-Id: Iaa4a537ee7f69446129663467241cc8a8498d57b
Reviewed-on: https://dart-review.googlesource.com/c/80680
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart b/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart
index 95fea50..ffd8229 100644
--- a/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart
@@ -70,13 +70,23 @@
     if (begin is CommentToken) {
       begin = (begin as CommentToken).parent;
     }
+
     Token token = begin;
     while (token != null) {
       addToken(token);
+
       if (token == end) {
         break;
       }
-      token = token.next;
+
+      var nextToken = token.next;
+
+      // Stop if EOF.
+      if (nextToken == token) {
+        break;
+      }
+
+      token = nextToken;
     }
   }
 
diff --git a/pkg/analyzer/test/src/dart/analysis/unlinked_api_signature_test.dart b/pkg/analyzer/test/src/dart/analysis/unlinked_api_signature_test.dart
index 1510b74..25fa645 100644
--- a/pkg/analyzer/test/src/dart/analysis/unlinked_api_signature_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/unlinked_api_signature_test.dart
@@ -752,6 +752,16 @@
 ''');
   }
 
+  test_issue34850() {
+    assertNotSameSignature(r'''
+foo
+Future<List<int>> bar() {}
+''', r'''
+foo
+Future<List<int>> bar() async {}
+''');
+  }
+
   test_mixin_field_withoutType() {
     assertNotSameSignature(r'''
 mixin M {