From 0fb8a42af9786a59c278d0b97709d0bd3432280a Mon Sep 17 00:00:00 2001 From: Konstantin Shcheglov Date: Wed, 2 Apr 2025 12:17:39 -0700 Subject: [PATCH] Fine. Support for top-level setters. Many existing manifest tests involving top level variables were changed to use `final` variables, so that the test expectations don't need to contain distracting references to top level setters. Change-Id: I5a641c2d446f366435a127d66e951d78d784d0b2 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/419983 Reviewed-by: Paul Berry Commit-Queue: Konstantin Shcheglov --- .../lib/src/fine/library_manifest.dart | 48 ++++ pkg/analyzer/lib/src/fine/manifest_item.dart | 81 +++++- .../test/src/dart/analysis/driver_test.dart | 247 ++++++++++++------ .../src/dart/analysis/result_printer.dart | 10 + 4 files changed, 300 insertions(+), 86 deletions(-) diff --git a/pkg/analyzer/lib/src/fine/library_manifest.dart b/pkg/analyzer/lib/src/fine/library_manifest.dart index 5b8b2b1927d..90ce5fa51fc 100644 --- a/pkg/analyzer/lib/src/fine/library_manifest.dart +++ b/pkg/analyzer/lib/src/fine/library_manifest.dart @@ -325,6 +325,23 @@ class LibraryManifestBuilder { newItems[lookupName] = item; } + void _addTopLevelSetter({ + required EncodeContext encodingContext, + required Map newItems, + required SetterElementImpl element, + required LookupName lookupName, + }) { + var item = _getOrBuildElementItem(element, () { + return TopLevelSetterItem.fromElement( + name: lookupName, + id: ManifestItemId.generate(), + context: encodingContext, + element: element, + ); + }); + newItems[lookupName] = item; + } + /// Fill `result` with new library manifests. /// We reuse existing items when they fully match. /// We build new items for mismatched elements. @@ -357,6 +374,13 @@ class LibraryManifestBuilder { element: element, lookupName: lookupName, ); + case SetterElementImpl(): + _addTopLevelSetter( + encodingContext: encodingContext, + newItems: newItems, + element: element, + lookupName: lookupName, + ); case TopLevelFunctionElementImpl(): _addTopLevelFunction( encodingContext: encodingContext, @@ -524,6 +548,10 @@ class _LibraryMatch { if (!_matchTopGetter(name: name, element: element)) { structureMismatched.add(element); } + case SetterElementImpl(): + if (!_matchTopSetter(name: name, element: element)) { + structureMismatched.add(element); + } case TopLevelFunctionElementImpl(): if (!_matchTopFunction(name: name, element: element)) { structureMismatched.add(element); @@ -718,4 +746,24 @@ class _LibraryMatch { refExternalIds.addAll(matchContext.externalIds); return true; } + + bool _matchTopSetter({ + required LookupName? name, + required SetterElementImpl element, + }) { + var item = manifest.items[name]; + if (item is! TopLevelSetterItem) { + return false; + } + + var matchContext = item.match(element); + if (matchContext == null) { + return false; + } + + itemMap[element] = item; + refElementsMap[element] = matchContext.elementList; + refExternalIds.addAll(matchContext.externalIds); + return true; + } } diff --git a/pkg/analyzer/lib/src/fine/manifest_item.dart b/pkg/analyzer/lib/src/fine/manifest_item.dart index e8b9075ece8..613b4c2b2a6 100644 --- a/pkg/analyzer/lib/src/fine/manifest_item.dart +++ b/pkg/analyzer/lib/src/fine/manifest_item.dart @@ -514,7 +514,7 @@ class TopLevelGetterItem extends TopLevelItem { sink.writeUri(libraryUri); name.write(sink); id.write(sink); - sink.writeList(metadata, (annotation) => annotation.write(sink)); + metadata.writeList(sink); returnType.write(sink); } } @@ -546,15 +546,88 @@ sealed class TopLevelItem extends ManifestItem { return TopLevelFunctionItem.read(reader); case _ManifestItemKind.topLevelGetter: return TopLevelGetterItem.read(reader); + case _ManifestItemKind.topLevelSetter: + return TopLevelSetterItem.read(reader); } } } +class TopLevelSetterItem extends TopLevelItem { + final List metadata; + final ManifestType valueType; + + TopLevelSetterItem({ + required super.libraryUri, + required super.name, + required super.id, + required this.metadata, + required this.valueType, + }); + + factory TopLevelSetterItem.fromElement({ + required LookupName name, + required ManifestItemId id, + required EncodeContext context, + required SetterElementImpl element, + }) { + return TopLevelSetterItem( + libraryUri: element.library2.uri, + name: name, + id: id, + metadata: element.metadata2.annotations.map((annotation) { + return ManifestAnnotation.encode(context, annotation); + }).toFixedList(), + valueType: element.formalParameters[0].type.encode(context), + ); + } + + factory TopLevelSetterItem.read(SummaryDataReader reader) { + return TopLevelSetterItem( + libraryUri: reader.readUri(), + name: LookupName.read(reader), + id: ManifestItemId.read(reader), + metadata: reader.readTypedList(() => ManifestAnnotation.read(reader)), + valueType: ManifestType.read(reader), + ); + } + + MatchContext? match(SetterElementImpl element) { + var context = MatchContext(parent: null); + + var annotations = element.metadata2.annotations; + if (annotations.length != metadata.length) { + return null; + } + for (var i = 0; i < metadata.length; i++) { + if (!metadata[i].match(context, annotations[i])) { + return null; + } + } + + if (!valueType.match(context, element.formalParameters[0].type)) { + return null; + } + + return context; + } + + @override + void write(BufferedSink sink) { + sink.writeEnum(_ManifestItemKind.topLevelSetter); + sink.writeUri(libraryUri); + name.write(sink); + id.write(sink); + metadata.writeList(sink); + valueType.write(sink); + } +} + enum _ManifestItemKind { class_, export_, topLevelFunction, topLevelGetter, + topLevelSetter, } enum _ManifestItemKind2 { @@ -562,3 +635,9 @@ enum _ManifestItemKind2 { instanceMethod, interfaceConstructor, } + +extension ListOfManifestAnnotationExtension on List { + void writeList(BufferedSink sink) { + sink.writeList(this, (x) => x.write(sink)); + } +} diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart index 6d0fb4d21f2..fb5700550fa 100644 --- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart +++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart @@ -9861,6 +9861,81 @@ double get a => 0; ); } + test_manifest_topLevelSetter_add() async { + await _runLibraryManifestScenario( + initialCode: r''' +set a(int _) {} +''', + expectedInitialEvents: r''' +[operation] linkLibraryCycle SDK +[operation] linkLibraryCycle + package:test/test.dart + manifest + a=: #M0 +''', + updatedCode: r''' +set a(int _) {} +set b(int _) {} +''', + expectedUpdatedEvents: r''' +[operation] linkLibraryCycle + package:test/test.dart + manifest + a=: #M0 + b=: #M1 +''', + ); + } + + test_manifest_topLevelSetter_body() async { + await _runLibraryManifestScenario( + initialCode: r''' +set a(int _) { 0; } +''', + expectedInitialEvents: r''' +[operation] linkLibraryCycle SDK +[operation] linkLibraryCycle + package:test/test.dart + manifest + a=: #M0 +''', + updatedCode: r''' +set a(int _) { 1; } +''', + expectedUpdatedEvents: r''' +[operation] readLibraryCycleBundle + package:test/test.dart +''', + ); + } + + test_manifest_topLevelSetter_valueType() async { + configuration.withElementManifests = true; + await _runLibraryManifestScenario( + initialCode: r''' +set a(int _) {} +''', + expectedInitialEvents: r''' +[operation] linkLibraryCycle SDK +[operation] linkLibraryCycle + package:test/test.dart + manifest + a=: #M0 + valueType: int @ dart:core +''', + updatedCode: r''' +set a(double _) {} +''', + expectedUpdatedEvents: r''' +[operation] linkLibraryCycle + package:test/test.dart + manifest + a=: #M1 + valueType: double @ dart:core +''', + ); + } + test_manifest_topLevelVariable_add() async { await _runLibraryManifestScenario( initialCode: r''' @@ -9946,6 +10021,7 @@ int? a; package:test/test.dart manifest a: #M0 + a=: #M1 ''', updatedCode: r''' double? a; @@ -9954,7 +10030,8 @@ double? a; [operation] linkLibraryCycle package:test/test.dart manifest - a: #M1 + a: #M2 + a=: #M3 ''', ); } @@ -9962,7 +10039,7 @@ double? a; test_manifest_type_dynamicType() async { await _runLibraryManifestScenario( initialCode: r''' -dynamic a = 0; +final dynamic a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -9972,7 +10049,7 @@ dynamic a = 0; a: #M0 ''', updatedCode: r''' -dynamic a = 0; +final dynamic a = 0; final b = 0; ''', expectedUpdatedEvents: r''' @@ -9988,7 +10065,7 @@ final b = 0; test_manifest_type_dynamicType_to_interfaceType() async { await _runLibraryManifestScenario( initialCode: r''' -dynamic a = 0; +final dynamic a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -9998,7 +10075,7 @@ dynamic a = 0; a: #M0 ''', updatedCode: r''' -int a = 0; +final int a = 0; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10012,7 +10089,7 @@ int a = 0; test_manifest_type_functionType() async { await _runLibraryManifestScenario( initialCode: r''' -int Function() a; +final int Function() a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10022,7 +10099,7 @@ int Function() a; a: #M0 ''', updatedCode: r''' -int Function() a; +final int Function() a; final b = 0; ''', expectedUpdatedEvents: r''' @@ -10038,7 +10115,7 @@ final b = 0; test_manifest_type_functionType_named() async { await _runLibraryManifestScenario( initialCode: r''' -void Function({int p1}) a; +final void Function({int p1}) a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10048,7 +10125,7 @@ void Function({int p1}) a; a: #M0 ''', updatedCode: r''' -void Function({int p1}) a; +final void Function({int p1}) a; final b = 0; ''', expectedUpdatedEvents: r''' @@ -10064,7 +10141,7 @@ final b = 0; test_manifest_type_functionType_named_add() async { await _runLibraryManifestScenario( initialCode: r''' -void Function({int p1}) a; +final void Function({int p1}) a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10074,7 +10151,7 @@ void Function({int p1}) a; a: #M0 ''', updatedCode: r''' -void Function({int p1, double p2}) a; +final void Function({int p1, double p2}) a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10088,7 +10165,7 @@ void Function({int p1, double p2}) a; test_manifest_type_functionType_named_remove() async { await _runLibraryManifestScenario( initialCode: r''' -void Function({int p1, double p2}) a; +final void Function({int p1, double p2}) a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10098,7 +10175,7 @@ void Function({int p1, double p2}) a; a: #M0 ''', updatedCode: r''' -void Function({int p1}) a; +final void Function({int p1}) a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10112,7 +10189,7 @@ void Function({int p1}) a; test_manifest_type_functionType_named_toPositional() async { await _runLibraryManifestScenario( initialCode: r''' -void Function({int p}) a; +final void Function({int p}) a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10122,7 +10199,7 @@ void Function({int p}) a; a: #M0 ''', updatedCode: r''' -void Function(int p) a; +final void Function(int p) a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10136,7 +10213,7 @@ void Function(int p) a; test_manifest_type_functionType_named_toRequiredFalse() async { await _runLibraryManifestScenario( initialCode: r''' -void Function({required int p1}) a; +final void Function({required int p1}) a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10146,7 +10223,7 @@ void Function({required int p1}) a; a: #M0 ''', updatedCode: r''' -void Function({int p1}) a; +final void Function({int p1}) a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10160,7 +10237,7 @@ void Function({int p1}) a; test_manifest_type_functionType_named_toRequiredTrue() async { await _runLibraryManifestScenario( initialCode: r''' -void Function({int p1}) a; +final void Function({int p1}) a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10170,7 +10247,7 @@ void Function({int p1}) a; a: #M0 ''', updatedCode: r''' -void Function({required int p1}) a; +final void Function({required int p1}) a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10184,7 +10261,7 @@ void Function({required int p1}) a; test_manifest_type_functionType_named_type() async { await _runLibraryManifestScenario( initialCode: r''' -void Function({int p1}) a; +final void Function({int p1}) a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10194,7 +10271,7 @@ void Function({int p1}) a; a: #M0 ''', updatedCode: r''' -void Function({double p1}) a; +final void Function({double p1}) a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10208,7 +10285,7 @@ void Function({double p1}) a; test_manifest_type_functionType_nullabilitySuffix() async { await _runLibraryManifestScenario( initialCode: r''' -int Function() a; +final int Function() a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10218,7 +10295,7 @@ int Function() a; a: #M0 ''', updatedCode: r''' -int Function()? a; +final int Function()? a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10232,7 +10309,7 @@ int Function()? a; test_manifest_type_functionType_positional() async { await _runLibraryManifestScenario( initialCode: r''' -void Function(int p1) a; +final void Function(int p1) a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10242,7 +10319,7 @@ void Function(int p1) a; a: #M0 ''', updatedCode: r''' -void Function(int p1) a; +final void Function(int p1) a; final b = 0; ''', expectedUpdatedEvents: r''' @@ -10258,7 +10335,7 @@ final b = 0; test_manifest_type_functionType_positional_add() async { await _runLibraryManifestScenario( initialCode: r''' -void Function(int p1) a; +final void Function(int p1) a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10268,7 +10345,7 @@ void Function(int p1) a; a: #M0 ''', updatedCode: r''' -void Function(int p1, double p2) a; +final void Function(int p1, double p2) a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10282,7 +10359,7 @@ void Function(int p1, double p2) a; test_manifest_type_functionType_positional_remove() async { await _runLibraryManifestScenario( initialCode: r''' -void Function(int p1, double p2) a; +final void Function(int p1, double p2) a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10292,7 +10369,7 @@ void Function(int p1, double p2) a; a: #M0 ''', updatedCode: r''' -void Function(int p1) a; +final void Function(int p1) a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10306,7 +10383,7 @@ void Function(int p1) a; test_manifest_type_functionType_positional_toNamed() async { await _runLibraryManifestScenario( initialCode: r''' -void Function(int p) a; +final void Function(int p) a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10316,7 +10393,7 @@ void Function(int p) a; a: #M0 ''', updatedCode: r''' -void Function({int p}) a; +final void Function({int p}) a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10330,7 +10407,7 @@ void Function({int p}) a; test_manifest_type_functionType_positional_toRequiredFalse() async { await _runLibraryManifestScenario( initialCode: r''' -void Function(int p1) a; +final void Function(int p1) a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10340,7 +10417,7 @@ void Function(int p1) a; a: #M0 ''', updatedCode: r''' -void Function([int p1]) a; +final void Function([int p1]) a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10354,7 +10431,7 @@ void Function([int p1]) a; test_manifest_type_functionType_positional_toRequiredTrue() async { await _runLibraryManifestScenario( initialCode: r''' -void Function([int p1]) a; +final void Function([int p1]) a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10364,7 +10441,7 @@ void Function([int p1]) a; a: #M0 ''', updatedCode: r''' -void Function(int p1) a; +final void Function(int p1) a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10378,7 +10455,7 @@ void Function(int p1) a; test_manifest_type_functionType_positional_type() async { await _runLibraryManifestScenario( initialCode: r''' -void Function(int p1) a; +final void Function(int p1) a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10388,7 +10465,7 @@ void Function(int p1) a; a: #M0 ''', updatedCode: r''' -void Function(double p1) a; +final void Function(double p1) a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10402,7 +10479,7 @@ void Function(double p1) a; test_manifest_type_functionType_returnType() async { await _runLibraryManifestScenario( initialCode: r''' -int Function() a; +final int Function() a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10412,7 +10489,7 @@ int Function() a; a: #M0 ''', updatedCode: r''' -double Function() a; +final double Function() a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10426,7 +10503,7 @@ double Function() a; test_manifest_type_functionType_typeParameter() async { await _runLibraryManifestScenario( initialCode: r''' -T Function() a; +final T Function() a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10436,7 +10513,7 @@ T Function() a; a: #M0 ''', updatedCode: r''' -T Function() a; +final T Function() a; final b = 0; ''', expectedUpdatedEvents: r''' @@ -10452,7 +10529,7 @@ final b = 0; test_manifest_type_functionType_typeParameter_add() async { await _runLibraryManifestScenario( initialCode: r''' -void Function() a; +final void Function() a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10462,7 +10539,7 @@ void Function() a; a: #M0 ''', updatedCode: r''' -void Function() a; +final void Function() a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10476,7 +10553,7 @@ void Function() a; test_manifest_type_functionType_typeParameter_bound() async { await _runLibraryManifestScenario( initialCode: r''' -T Function() a; +final T Function() a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10486,7 +10563,7 @@ T Function() a; a: #M0 ''', updatedCode: r''' -T Function() a; +final T Function() a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10500,7 +10577,7 @@ T Function() a; test_manifest_type_functionType_typeParameter_remove() async { await _runLibraryManifestScenario( initialCode: r''' -void Function() a; +final void Function() a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10510,7 +10587,7 @@ void Function() a; a: #M0 ''', updatedCode: r''' -void Function() a; +final void Function() a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10524,7 +10601,7 @@ void Function() a; test_manifest_type_interfaceType_element() async { await _runLibraryManifestScenario( initialCode: r''' -int a = 0; +final int a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10534,7 +10611,7 @@ int a = 0; a: #M0 ''', updatedCode: r''' -double a = 0; +final double a = 0; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10548,7 +10625,7 @@ double a = 0; test_manifest_type_interfaceType_nullabilitySuffix() async { await _runLibraryManifestScenario( initialCode: r''' -int a = 0; +final int a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10558,7 +10635,7 @@ int a = 0; a: #M0 ''', updatedCode: r''' -int? a = 0; +final int? a = 0; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10572,7 +10649,7 @@ int? a = 0; test_manifest_type_interfaceType_typeArguments() async { await _runLibraryManifestScenario( initialCode: r''' -List a = 0; +final List a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10582,7 +10659,7 @@ List a = 0; a: #M0 ''', updatedCode: r''' -List a = 0; +final List a = 0; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10596,7 +10673,7 @@ List a = 0; test_manifest_type_invalidType() async { await _runLibraryManifestScenario( initialCode: r''' -NotType a = 0; +final NotType a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10606,7 +10683,7 @@ NotType a = 0; a: #M0 ''', updatedCode: r''' -NotType a = 0; +final NotType a = 0; final b = 0; ''', expectedUpdatedEvents: r''' @@ -10622,7 +10699,7 @@ final b = 0; test_manifest_type_neverType() async { await _runLibraryManifestScenario( initialCode: r''' -Never a; +final Never a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10632,7 +10709,7 @@ Never a; a: #M0 ''', updatedCode: r''' -Never a; +final Never a; final b = 0; ''', expectedUpdatedEvents: r''' @@ -10648,7 +10725,7 @@ final b = 0; test_manifest_type_neverType_nullabilitySuffix() async { await _runLibraryManifestScenario( initialCode: r''' -Never a; +final Never a; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10658,7 +10735,7 @@ Never a; a: #M0 ''', updatedCode: r''' -Never? a; +final Never? a; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10672,7 +10749,7 @@ Never? a; test_manifest_type_recordType_namedFields() async { await _runLibraryManifestScenario( initialCode: r''' -({int f1}) a = 0; +final ({int f1}) a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10682,7 +10759,7 @@ Never? a; a: #M0 ''', updatedCode: r''' -({int f1}) a = 0; +final ({int f1}) a = 0; final b = 0; ''', expectedUpdatedEvents: r''' @@ -10698,7 +10775,7 @@ final b = 0; test_manifest_type_recordType_namedFields_add() async { await _runLibraryManifestScenario( initialCode: r''' -({int f1}) a = 0; +final ({int f1}) a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10708,7 +10785,7 @@ final b = 0; a: #M0 ''', updatedCode: r''' -({int f1, double f2}) a = 0; +final ({int f1, double f2}) a = 0; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10722,7 +10799,7 @@ final b = 0; test_manifest_type_recordType_namedFields_name() async { await _runLibraryManifestScenario( initialCode: r''' -({int f1}) a = 0; +final ({int f1}) a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10732,7 +10809,7 @@ final b = 0; a: #M0 ''', updatedCode: r''' -({int f2}) a = 0; +final ({int f2}) a = 0; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10746,7 +10823,7 @@ final b = 0; test_manifest_type_recordType_namedFields_remove() async { await _runLibraryManifestScenario( initialCode: r''' -({int f1, double f2}) a = 0; +final ({int f1, double f2}) a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10756,7 +10833,7 @@ final b = 0; a: #M0 ''', updatedCode: r''' -({int f1}) a = 0; +final ({int f1}) a = 0; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10770,7 +10847,7 @@ final b = 0; test_manifest_type_recordType_namedFields_reorder() async { await _runLibraryManifestScenario( initialCode: r''' -({int f1, double f2}) a = 0; +final ({int f1, double f2}) a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10780,7 +10857,7 @@ final b = 0; a: #M0 ''', updatedCode: r''' -({double f2, int f1}) a = 0; +final ({double f2, int f1}) a = 0; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10794,7 +10871,7 @@ final b = 0; test_manifest_type_recordType_namedFields_type() async { await _runLibraryManifestScenario( initialCode: r''' -({int f1}) a = 0; +final ({int f1}) a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10804,7 +10881,7 @@ final b = 0; a: #M0 ''', updatedCode: r''' -({double f1}) a = 0; +final ({double f1}) a = 0; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10818,7 +10895,7 @@ final b = 0; test_manifest_type_recordType_nullabilitySuffix() async { await _runLibraryManifestScenario( initialCode: r''' -(int,) a = 0; +final (int,) a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10828,7 +10905,7 @@ final b = 0; a: #M0 ''', updatedCode: r''' -(int,)? a = 0; +final (int,)? a = 0; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10842,7 +10919,7 @@ final b = 0; test_manifest_type_recordType_positionalFields() async { await _runLibraryManifestScenario( initialCode: r''' -(int,) a = 0; +final (int,) a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10852,7 +10929,7 @@ final b = 0; a: #M0 ''', updatedCode: r''' -(int,) a = 0; +final (int,) a = 0; final b = 0; ''', expectedUpdatedEvents: r''' @@ -10868,7 +10945,7 @@ final b = 0; test_manifest_type_recordType_positionalFields_add() async { await _runLibraryManifestScenario( initialCode: r''' -(int,) a = 0; +final (int,) a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10878,7 +10955,7 @@ final b = 0; a: #M0 ''', updatedCode: r''' -(int, double) a = 0; +final (int, double) a = 0; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10892,7 +10969,7 @@ final b = 0; test_manifest_type_recordType_positionalFields_name() async { await _runLibraryManifestScenario( initialCode: r''' -(int x,) a = 0; +final (int x,) a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10902,7 +10979,7 @@ final b = 0; a: #M0 ''', updatedCode: r''' -(int y,) a = 0; +final (int y,) a = 0; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10916,7 +10993,7 @@ final b = 0; test_manifest_type_recordType_positionalFields_remove() async { await _runLibraryManifestScenario( initialCode: r''' -(int, double) a = 0; +final (int, double) a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10926,7 +11003,7 @@ final b = 0; a: #M0 ''', updatedCode: r''' -(int,) a = 0; +final (int,) a = 0; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10940,7 +11017,7 @@ final b = 0; test_manifest_type_recordType_positionalFields_type() async { await _runLibraryManifestScenario( initialCode: r''' -(int,) a = 0; +final (int,) a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10950,7 +11027,7 @@ final b = 0; a: #M0 ''', updatedCode: r''' -(double,) a = 0; +final (double,) a = 0; ''', expectedUpdatedEvents: r''' [operation] linkLibraryCycle @@ -10964,7 +11041,7 @@ final b = 0; test_manifest_type_voidType() async { await _runLibraryManifestScenario( initialCode: r''' -void a = 0; +final void a = 0; ''', expectedInitialEvents: r''' [operation] linkLibraryCycle SDK @@ -10974,7 +11051,7 @@ void a = 0; a: #M0 ''', updatedCode: r''' -void a = 0; +final void a = 0; final b = 0; ''', expectedUpdatedEvents: r''' diff --git a/pkg/analyzer/test/src/dart/analysis/result_printer.dart b/pkg/analyzer/test/src/dart/analysis/result_printer.dart index 66abac2788c..fad83139f2f 100644 --- a/pkg/analyzer/test/src/dart/analysis/result_printer.dart +++ b/pkg/analyzer/test/src/dart/analysis/result_printer.dart @@ -742,6 +742,8 @@ class LibraryManifestPrinter { _writeTopLevelFunctionItem(topLevelItem); case TopLevelGetterItem(): _writeTopLevelGetterItem(topLevelItem); + case TopLevelSetterItem(): + _writeTopLevelSetterItem(topLevelItem); } }); } @@ -821,6 +823,14 @@ class LibraryManifestPrinter { } } + void _writeTopLevelSetterItem(TopLevelSetterItem item) { + if (configuration.withElementManifests) { + sink.withIndent(() { + _writeNamedType('valueType', item.valueType); + }); + } + } + void _writeType(ManifestType type) { void writeNullabilitySuffix() { if (type.nullabilitySuffix == NullabilitySuffix.question) {