This is an automated email from the ASF dual-hosted git repository.

chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fory.git


The following commit(s) were added to refs/heads/main by this push:
     new b32f3a8a6 fix(dart): fix dart ci (#3586)
b32f3a8a6 is described below

commit b32f3a8a6eb3dd97193b09763b834231034ae9e3
Author: Shawn Yang <[email protected]>
AuthorDate: Mon Apr 20 00:52:58 2026 +0800

    fix(dart): fix dart ci (#3586)
    
    ## Why?
    
    
    
    ## What does this PR do?
    
    
    
    ## Related issues
    
    
    
    ## AI Contribution Checklist
    
    
    
    - [ ] Substantial AI assistance was used in this PR: `yes` / `no`
    - [ ] If `yes`, I included a completed [AI Contribution
    
Checklist](https://github.com/apache/fory/blob/main/AI_POLICY.md#9-contributor-checklist-for-ai-assisted-prs)
    in this PR description and the required `AI Usage Disclosure`.
    - [ ] If `yes`, my PR description includes the required `ai_review`
    summary and screenshot evidence of the final clean AI review results
    from both fresh reviewers on the current PR diff or current HEAD after
    the latest code changes.
    
    
    
    ## Does this PR introduce any user-facing change?
    
    
    
    - [ ] Does this PR introduce any public API change?
    - [ ] Does this PR introduce any binary protocol compatibility change?
    
    ## Benchmark
---
 .../fory/lib/src/codegen/fory_generator.dart       | 200 ++++++++++-----------
 dart/packages/fory/pubspec.yaml                    |   6 +-
 2 files changed, 94 insertions(+), 112 deletions(-)

diff --git a/dart/packages/fory/lib/src/codegen/fory_generator.dart 
b/dart/packages/fory/lib/src/codegen/fory_generator.dart
index eaf4c9b34..e792995c7 100644
--- a/dart/packages/fory/lib/src/codegen/fory_generator.dart
+++ b/dart/packages/fory/lib/src/codegen/fory_generator.dart
@@ -26,32 +26,29 @@ class DebugGeneratedFieldTypeSpec {
 }
 
 final class ForyGenerator extends Generator {
-  static const TypeChecker _foryStructChecker =
-      TypeChecker.typeNamed(ForyStruct, inPackage: 'fory');
-  static const TypeChecker _foryFieldChecker =
-      TypeChecker.typeNamed(ForyField, inPackage: 'fory');
-  static const TypeChecker _foryUnionChecker =
-      TypeChecker.typeNamed(ForyUnion, inPackage: 'fory');
-  static const TypeChecker _listTypeChecker =
-      TypeChecker.typeNamed(ListType, inPackage: 'fory');
-  static const TypeChecker _mapTypeChecker =
-      TypeChecker.typeNamed(MapType, inPackage: 'fory');
-  static const TypeChecker _refOptionChecker =
-      TypeChecker.typeNamed(RefOption, inPackage: 'fory');
-  static const TypeChecker _nullableOptionChecker =
-      TypeChecker.typeNamed(NullableOption, inPackage: 'fory');
-  static const TypeChecker _int32Checker =
-      TypeChecker.typeNamed(Int32Type, inPackage: 'fory');
-  static const TypeChecker _int64Checker =
-      TypeChecker.typeNamed(Int64Type, inPackage: 'fory');
-  static const TypeChecker _uint8Checker =
-      TypeChecker.typeNamed(Uint8Type, inPackage: 'fory');
-  static const TypeChecker _uint16Checker =
-      TypeChecker.typeNamed(Uint16Type, inPackage: 'fory');
-  static const TypeChecker _uint32Checker =
-      TypeChecker.typeNamed(Uint32Type, inPackage: 'fory');
-  static const TypeChecker _uint64Checker =
-      TypeChecker.typeNamed(Uint64Type, inPackage: 'fory');
+  static final TypeChecker _foryStructChecker = TypeChecker.fromRuntime(
+    ForyStruct,
+  );
+  static final TypeChecker _foryFieldChecker = TypeChecker.fromRuntime(
+    ForyField,
+  );
+  static final TypeChecker _foryUnionChecker = TypeChecker.fromRuntime(
+    ForyUnion,
+  );
+  static final TypeChecker _listTypeChecker = 
TypeChecker.fromRuntime(ListType);
+  static final TypeChecker _mapTypeChecker = TypeChecker.fromRuntime(MapType);
+  static final TypeChecker _refOptionChecker = TypeChecker.fromRuntime(
+    RefOption,
+  );
+  static final TypeChecker _nullableOptionChecker = TypeChecker.fromRuntime(
+    NullableOption,
+  );
+  static final TypeChecker _int32Checker = TypeChecker.fromRuntime(Int32Type);
+  static final TypeChecker _int64Checker = TypeChecker.fromRuntime(Int64Type);
+  static final TypeChecker _uint8Checker = TypeChecker.fromRuntime(Uint8Type);
+  static final TypeChecker _uint16Checker = 
TypeChecker.fromRuntime(Uint16Type);
+  static final TypeChecker _uint32Checker = 
TypeChecker.fromRuntime(Uint32Type);
+  static final TypeChecker _uint64Checker = 
TypeChecker.fromRuntime(Uint64Type);
 
   final Map<String, String> _importPrefixByLibraryIdentifier =
       <String, String>{};
@@ -73,11 +70,13 @@ final class ForyGenerator extends Generator {
     final generatedApiName = '${helperBaseName}Fory';
 
     final enumSpecs = enumElements.map(_analyzeEnum).toList(growable: false);
-    final structSpecs =
-        annotatedClasses.map(_analyzeStruct).toList(growable: false);
+    final structSpecs = annotatedClasses
+        .map(_analyzeStruct)
+        .toList(growable: false);
     final output = StringBuffer()
       ..writeln(
-          '// ignore_for_file: implementation_imports, 
invalid_use_of_internal_member, unused_element, unnecessary_null_comparison')
+        '// ignore_for_file: implementation_imports, 
invalid_use_of_internal_member, unused_element, unnecessary_null_comparison',
+      )
       ..writeln();
 
     for (final enumSpec in enumSpecs) {
@@ -121,7 +120,8 @@ final class ForyGenerator extends Generator {
 
   void _buildImportPrefixMap(LibraryReader library) {
     _importPrefixByLibraryIdentifier.clear();
-    for (final import in library.element.firstFragment.libraryImports) {
+    for (final import
+        in library.element.definingCompilationUnit.libraryImports) {
       final importedLibrary = import.importedLibrary;
       final prefix = import.prefix?.element.displayName;
       if (importedLibrary == null || prefix == null || prefix.isEmpty) {
@@ -196,8 +196,9 @@ final class ForyGenerator extends Generator {
     }
     if (_isList(type) || _isSet(type)) {
       final argument = (type as InterfaceType).typeArguments.single;
-      final elementSpec =
-          typeSpec is _ListTypeSpecInfo ? typeSpec.element : null;
+      final elementSpec = typeSpec is _ListTypeSpecInfo
+          ? typeSpec.element
+          : null;
       return _GeneratedFieldTypeSpec(
         typeLiteral: _typeReferenceLiteral(type),
         typeId: _typeIdFor(type),
@@ -258,10 +259,12 @@ final class ForyGenerator extends Generator {
     List<_GeneratedFieldSpec> fields,
   ) {
     final unnamedConstructor = element.unnamedConstructor;
-    final hasZeroArgConstructor = unnamedConstructor != null &&
+    final hasZeroArgConstructor =
+        unnamedConstructor != null &&
         !unnamedConstructor.isFactory &&
-        unnamedConstructor.formalParameters
-            .every((parameter) => parameter.isOptional);
+        unnamedConstructor.parameters.every(
+          (parameter) => parameter.isOptional,
+        );
     if (hasZeroArgConstructor && fields.every((field) => field.writable)) {
       return const _ConstructorPlan.mutable();
     }
@@ -279,7 +282,7 @@ final class ForyGenerator extends Generator {
     };
     final arguments = <_ConstructorArgumentSpec>[];
     final constructorFieldNames = <String>{};
-    for (final parameter in unnamedConstructor.formalParameters) {
+    for (final parameter in unnamedConstructor.parameters) {
       final parameterName = parameter.displayName;
       final field = fieldByName[parameterName];
       if (field == null) {
@@ -367,8 +370,9 @@ final class ForyGenerator extends Generator {
     final hasRuntimeFastPath = structSpec.fields.any(
       (field) => !_usesDirectGeneratedBasicFastPath(field),
     );
-    final directCursorRuns =
-        _directGeneratedWriteReservationRuns(structSpec.fields);
+    final directCursorRuns = _directGeneratedWriteReservationRuns(
+      structSpec.fields,
+    );
     final directCursorRunByStart = <int, _DirectGeneratedWriteReservationRun>{
       for (final run in directCursorRuns) run.start: run,
     };
@@ -430,9 +434,7 @@ final class ForyGenerator extends Generator {
       ..writeln(
         'final GeneratedStructRegistration<${structSpec.name}> 
$registrationName = GeneratedStructRegistration<${structSpec.name}>(',
       )
-      ..writeln(
-        '  fieldWritersBySlot: <_${structSpec.name}FieldWriter>[',
-      );
+      ..writeln('  fieldWritersBySlot: <_${structSpec.name}FieldWriter>[');
     for (var index = 0; index < structSpec.fields.length; index += 1) {
       output.writeln('    _write${structSpec.name}Field$index,');
     }
@@ -456,9 +458,7 @@ final class ForyGenerator extends Generator {
     }
     output
       ..writeln('  type: ${structSpec.name},')
-      ..writeln(
-        '  serializerFactory: _${structSpec.name}ForySerializer.new,',
-      )
+      ..writeln('  serializerFactory: _${structSpec.name}ForySerializer.new,')
       ..writeln('  evolving: ${structSpec.evolving},')
       ..writeln('  fields: $metadataListName,')
       ..writeln(');')
@@ -533,9 +533,7 @@ final class ForyGenerator extends Generator {
       ..writeln('      return;')
       ..writeln('    }')
       ..writeln('    final writers = $registrationName.fieldWritersBySlot;')
-      ..writeln(
-        '    for (final field in slots.orderedFields) {',
-      )
+      ..writeln('    for (final field in slots.orderedFields) {')
       ..writeln('      writers[field.slot](context, field, value);')
       ..writeln('    }')
       ..writeln('  }')
@@ -601,9 +599,7 @@ final class ForyGenerator extends Generator {
           final field = structSpec.fields[index];
           final readerFunctionName = field.readerFunctionName(structSpec.name);
           final rawValueName = 'raw${structSpec.name}$index';
-          output.writeln(
-            '    if (slots.containsSlot($index)) {',
-          );
+          output.writeln('    if (slots.containsSlot($index)) {');
           output.writeln(
             '      final $rawValueName = slots.valueForSlot($index);',
           );
@@ -667,8 +663,9 @@ final class ForyGenerator extends Generator {
           ..writeln('      context.reference(value);');
         for (final fieldName
             in structSpec.constructorPlan.postConstructionFieldNames) {
-          final field =
-              structSpec.fields.firstWhere((item) => item.name == fieldName);
+          final field = structSpec.fields.firstWhere(
+            (item) => item.name == fieldName,
+          );
           output.writeln('      value.${field.name} = ${field.localName};');
         }
         output.writeln('      return value;');
@@ -685,9 +682,7 @@ final class ForyGenerator extends Generator {
           final field = structSpec.fields[index];
           final readerFunctionName = field.readerFunctionName(structSpec.name);
           final rawValueName = 'raw${structSpec.name}$index';
-          output.writeln(
-            '    if (slots.containsSlot($index)) {',
-          );
+          output.writeln('    if (slots.containsSlot($index)) {');
           output.writeln(
             '      final $rawValueName = slots.valueForSlot($index);',
           );
@@ -705,8 +700,9 @@ final class ForyGenerator extends Generator {
           ..writeln('    context.reference(value);');
         for (final fieldName
             in structSpec.constructorPlan.postConstructionFieldNames) {
-          final field =
-              structSpec.fields.firstWhere((item) => item.name == fieldName);
+          final field = structSpec.fields.firstWhere(
+            (item) => item.name == fieldName,
+          );
           output.writeln('    value.${field.name} = ${field.localName};');
         }
         output.writeln('    return value;');
@@ -773,7 +769,8 @@ final class ForyGenerator extends Generator {
       )
       ..writeln('    }')
       ..writeln(
-          '    if (hasNamed && (namespace == null || typeName == null)) {')
+        '    if (hasNamed && (namespace == null || typeName == null)) {',
+      )
       ..writeln(
         "      throw ArgumentError('Both namespace and typeName are required 
for named registration.');",
       )
@@ -830,8 +827,10 @@ final class ForyGenerator extends Generator {
         positionalArguments.add(field.localName);
       }
     }
-    final arguments =
-        <String>[...positionalArguments, ...namedArguments].join(', ');
+    final arguments = <String>[
+      ...positionalArguments,
+      ...namedArguments,
+    ].join(', ');
     return '${structSpec.name}($arguments)';
   }
 
@@ -901,8 +900,9 @@ GeneratedFieldType(
       nullable: fieldType.nullable,
       ref: fieldType.ref,
       dynamic: fieldType.dynamic,
-      arguments:
-          fieldType.arguments.map(_fromDebugFieldType).toList(growable: false),
+      arguments: fieldType.arguments
+          .map(_fromDebugFieldType)
+          .toList(growable: false),
     );
   }
 
@@ -942,10 +942,7 @@ GeneratedFieldType(
         nonNullableType,
         nonNullableFieldType,
         valueExpression,
-        nullExpression: _nullExpression(
-          nonNullableType,
-          errorTarget: 'value',
-        ),
+        nullExpression: _nullExpression(nonNullableType, errorTarget: 'value'),
       );
       return '$valueExpression == null ? $nullExpression : $converted';
     }
@@ -972,10 +969,7 @@ GeneratedFieldType(
         elementType,
         elementFieldType,
         'item',
-        nullExpression: _nullExpression(
-          elementType,
-          errorTarget: 'list item',
-        ),
+        nullExpression: _nullExpression(elementType, errorTarget: 'list item'),
       );
       return 'List<${_typeCodeString(elementType)}>.of((($valueExpression as 
List)).map((item) => $convertedElement))';
     }
@@ -989,10 +983,7 @@ GeneratedFieldType(
         elementType,
         elementFieldType,
         'item',
-        nullExpression: _nullExpression(
-          elementType,
-          errorTarget: 'set item',
-        ),
+        nullExpression: _nullExpression(elementType, errorTarget: 'set item'),
       );
       return 'Set<${_typeCodeString(elementType)}>.of((($valueExpression as 
Set)).map((item) => $convertedElement))';
     }
@@ -1010,19 +1001,13 @@ GeneratedFieldType(
         keyType,
         keyFieldType,
         'key',
-        nullExpression: _nullExpression(
-          keyType,
-          errorTarget: 'map key',
-        ),
+        nullExpression: _nullExpression(keyType, errorTarget: 'map key'),
       );
       final convertedValue = _conversionExpressionForType(
         valueType,
         valueFieldType,
         'value',
-        nullExpression: _nullExpression(
-          valueType,
-          errorTarget: 'map value',
-        ),
+        nullExpression: _nullExpression(valueType, errorTarget: 'map value'),
       );
       return 'Map<${_typeCodeString(keyType)}, 
${_typeCodeString(valueType)}>.of((($valueExpression as Map)).map((key, value) 
=> MapEntry($convertedKey, $convertedValue)))';
     }
@@ -1077,9 +1062,7 @@ GeneratedFieldType(
         field.fieldType.typeId == TypeIds.enumById;
   }
 
-  bool _usesDirectGeneratedDeclaredReadFastPath(
-    _GeneratedFieldSpec field,
-  ) {
+  bool _usesDirectGeneratedDeclaredReadFastPath(_GeneratedFieldSpec field) {
     if (field.fieldType.nullable ||
         field.fieldType.ref ||
         field.fieldType.dynamic == true) {
@@ -1116,9 +1099,7 @@ GeneratedFieldType(
   }
 
   List<_DirectGeneratedWriteReservationRun>
-      _directGeneratedWriteReservationRuns(
-    List<_GeneratedFieldSpec> fields,
-  ) {
+  _directGeneratedWriteReservationRuns(List<_GeneratedFieldSpec> fields) {
     final runs = <_DirectGeneratedWriteReservationRun>[];
     int? start;
     var bytes = 0;
@@ -1534,7 +1515,8 @@ GeneratedFieldType(
   }
 
   _GeneratedFieldTypeSpec _nonNullableFieldType(
-      _GeneratedFieldTypeSpec fieldType) {
+    _GeneratedFieldTypeSpec fieldType,
+  ) {
     if (!fieldType.nullable) {
       return fieldType;
     }
@@ -1689,7 +1671,8 @@ GeneratedFieldType(
     if (leftCompressed != rightCompressed) {
       return leftCompressed ? 1 : -1;
     }
-    final sizeCompare = _primitiveSize(right.fieldType.typeId) -
+    final sizeCompare =
+        _primitiveSize(right.fieldType.typeId) -
         _primitiveSize(left.fieldType.typeId);
     if (sizeCompare != 0) {
       return sizeCompare;
@@ -1720,10 +1703,7 @@ GeneratedFieldType(
     return left.name.compareTo(right.name);
   }
 
-  int _compareOtherFields(
-    _GeneratedFieldSpec left,
-    _GeneratedFieldSpec right,
-  ) {
+  int _compareOtherFields(_GeneratedFieldSpec left, _GeneratedFieldSpec right) 
{
     final keyCompare = left.sortKey.compareTo(right.sortKey);
     if (keyCompare != 0) {
       return keyCompare;
@@ -1845,9 +1825,9 @@ GeneratedFieldType(
         'tagged' => TypeIds.taggedInt64,
         'fixed' => TypeIds.int64,
         _ => throw InvalidGenerationSourceError(
-            'Unsupported Int64Type encoding: $encodingValue.',
-            element: field,
-          ),
+          'Unsupported Int64Type encoding: $encodingValue.',
+          element: field,
+        ),
       };
       return _IntegerAnnotationSpec(typeId: typeId);
     }
@@ -1879,9 +1859,9 @@ GeneratedFieldType(
         'tagged' => TypeIds.taggedUint64,
         'fixed' => TypeIds.uint64,
         _ => throw InvalidGenerationSourceError(
-            'Unsupported Uint64Type encoding: $encodingValue.',
-            element: field,
-          ),
+          'Unsupported Uint64Type encoding: $encodingValue.',
+          element: field,
+        ),
       };
       return _IntegerAnnotationSpec(typeId: typeId);
     }
@@ -1917,8 +1897,9 @@ GeneratedFieldType(
     final options = _readTypeOptions(reader);
     final keyObj = reader.peek('key');
     final valueObj = reader.peek('value');
-    final key =
-        keyObj != null && !keyObj.isNull ? _readTypeSpecObj(keyObj) : null;
+    final key = keyObj != null && !keyObj.isNull
+        ? _readTypeSpecObj(keyObj)
+        : null;
     final value = valueObj != null && !valueObj.isNull
         ? _readTypeSpecObj(valueObj)
         : null;
@@ -2066,8 +2047,8 @@ GeneratedFieldType(
     final method = element.getMethod('fromRawValue');
     if (method == null ||
         !method.isStatic ||
-        method.formalParameters.length != 1 ||
-        !method.formalParameters.single.type.isDartCoreInt) {
+        method.parameters.length != 1 ||
+        !method.parameters.single.type.isDartCoreInt) {
       return false;
     }
     return method.returnType.element == element;
@@ -2187,8 +2168,9 @@ GeneratedFieldType(
       if (nonNullable.typeArguments.isEmpty) {
         return baseName;
       }
-      final typeArguments =
-          nonNullable.typeArguments.map(_typeCodeString).join(', ');
+      final typeArguments = nonNullable.typeArguments
+          .map(_typeCodeString)
+          .join(', ');
       return '$baseName<$typeArguments>';
     }
     return nonNullable.getDisplayString();
@@ -2317,9 +2299,9 @@ final class _ConstructorPlan {
   final List<String> postConstructionFieldNames;
 
   const _ConstructorPlan.mutable()
-      : mode = _ConstructorMode.mutable,
-        arguments = const <_ConstructorArgumentSpec>[],
-        postConstructionFieldNames = const <String>[];
+    : mode = _ConstructorMode.mutable,
+      arguments = const <_ConstructorArgumentSpec>[],
+      postConstructionFieldNames = const <String>[];
 
   const _ConstructorPlan.constructor({
     required this.arguments,
diff --git a/dart/packages/fory/pubspec.yaml b/dart/packages/fory/pubspec.yaml
index 7860a9e7f..801474c5e 100644
--- a/dart/packages/fory/pubspec.yaml
+++ b/dart/packages/fory/pubspec.yaml
@@ -28,11 +28,11 @@ environment:
   sdk: ^3.6.1
 
 dependencies:
-  analyzer: ^12.1.0
-  build: ^4.0.5
+  analyzer: '>=6.5.0 <8.0.0'
+  build: ^2.4.1
   build_config: ^1.1.0
   meta: ^1.14.0
-  source_gen: ^4.2.2
+  source_gen: ^2.0.0
 
 dev_dependencies:
   build_runner: ^2.4.13


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to