Include experiments into AnalysisOptions.unlinkedSignature.

Enabled experiments might affect how we parse Dart code, e.g. `?` for
nullable types. So, we need to include at least some experiments into
unlinkedSignature. So, we pessimistically include all of them.

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

Change-Id: Ib6e95fe7f4efaa6e6ada1c3a81d010c89f9676d5
Reviewed-on: https://dart-review.googlesource.com/c/88602
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index b56a2ca..10894cd 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -1750,6 +1750,12 @@
       buffer.addBool(enableLazyAssignmentOperators);
       buffer.addBool(useFastaParser);
 
+      // Append enabled experiments.
+      buffer.addInt(enabledExperiments.length);
+      for (String experimentName in enabledExperiments) {
+        buffer.addString(experimentName);
+      }
+
       // Hash and convert to Uint32List.
       List<int> bytes = buffer.toByteList();
       _unlinkedSignature = new Uint8List.fromList(bytes).buffer.asUint32List();