Include presence of a variable initializer into API signature.

VariableElement.initializer is either null or non-null, depending on
the presence of absence of the initializer.

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

Change-Id: I33defcad4a16d1d6e6896f10e312570099177f89
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107186
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index f95a185..fb120f5 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -95,7 +95,7 @@
   /**
    * The version of data format, should be incremented on every format change.
    */
-  static const int DATA_VERSION = 84;
+  static const int DATA_VERSION = 85;
 
   /**
    * The number of exception contexts allowed to write. Once this field is
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 dfbaf6a..6fce596 100644
--- a/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart
@@ -105,6 +105,7 @@
       signature.addInt(variableList.variables.length);
       for (var variable in variableList.variables) {
         addTokens(variable.beginToken, variable.name.endToken);
+        signature.addBool(variable.initializer != null);
         addToken(variable.endToken.next); // `,` or `;`
       }
     }
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 8222c70..f7562ed 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
@@ -226,11 +226,11 @@
   test_class_field_withType() {
     assertSameSignature(r'''
 class C {
-  int a = 1, b, c = 3;
+  int a = 1;
 }
 ''', r'''
 class C {
-  int a = 0, b = 2, c;
+  int a = 2;
 }
 ''');
   }
@@ -744,11 +744,11 @@
   test_mixin_field_withType() {
     assertSameSignature(r'''
 mixin M {
-  int a = 1, b, c = 3;
+  int a = 1;
 }
 ''', r'''
 mixin M {
-  int a = 0, b = 2, c;
+  int a = 2;
 }
 ''');
   }
@@ -819,9 +819,9 @@
 
   test_topLevelVariable_withType() {
     assertSameSignature(r'''
-int a = 1, b, c = 3;
+int a = 1;
 ''', r'''
-int a = 0, b = 2, c;
+int a = 2;
 ''');
   }
 
@@ -841,6 +841,22 @@
 ''');
   }
 
+  test_topLevelVariable_withType_initializer_add() {
+    assertNotSameSignature(r'''
+int a;
+''', r'''
+int a = 1;
+''');
+  }
+
+  test_topLevelVariable_withType_initializer_remove() {
+    assertNotSameSignature(r'''
+int a = 1;
+''', r'''
+int a;
+''');
+  }
+
   test_typedef_generic_parameters_type() {
     assertNotSameSignature(r'''
 typedef F = void Function(int);