diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md index 916106ed846e..3e91849f4e73 100644 --- a/packages/pigeon/CHANGELOG.md +++ b/packages/pigeon/CHANGELOG.md @@ -1,3 +1,9 @@ +## 27.3.1 + +* Updates `analyzer` dependency to support versions 13 and 14. +* Updates minimum Dart SDK constraint to 3.11.0. + + ## 27.3.0 * Adds support for sharing constants across platforms. diff --git a/packages/pigeon/lib/src/generator_tools.dart b/packages/pigeon/lib/src/generator_tools.dart index 0438945a8edc..61dc1237cfaa 100644 --- a/packages/pigeon/lib/src/generator_tools.dart +++ b/packages/pigeon/lib/src/generator_tools.dart @@ -15,7 +15,7 @@ import 'generator.dart'; /// The current version of pigeon. /// /// This must match the version in pubspec.yaml. -const String pigeonVersion = '27.3.0'; +const String pigeonVersion = '27.3.1'; /// Default plugin package name. const String defaultPluginPackageName = 'dev.flutter.pigeon'; diff --git a/packages/pigeon/lib/src/pigeon_lib_internal.dart b/packages/pigeon/lib/src/pigeon_lib_internal.dart index d1a12fd93988..f3f537bc3d8d 100644 --- a/packages/pigeon/lib/src/pigeon_lib_internal.dart +++ b/packages/pigeon/lib/src/pigeon_lib_internal.dart @@ -1312,13 +1312,13 @@ class RootBuilder extends dart_ast_visitor.RecursiveAstVisitor { Object _expressionToMap(dart_ast.Expression expression) { if (expression is dart_ast.MethodInvocation) { final result = {}; - for (final dart_ast.Expression argument in expression.argumentList.arguments) { - if (argument is dart_ast.NamedExpression) { - result[argument.name.label.name] = _expressionToMap(argument.expression); + for (final dart_ast.Argument argument in expression.argumentList.arguments) { + if (argument is dart_ast.NamedArgument) { + result[argument.name.lexeme] = _expressionToMap(argument.argumentExpression); } else { _errors.add( Error( - message: 'expected NamedExpression but found $expression', + message: 'expected NamedArgument but found $argument', lineNumber: calculateLineNumber(source, argument.offset), ), ); @@ -1518,17 +1518,19 @@ class RootBuilder extends dart_ast_visitor.RecursiveAstVisitor { @override Object? visitAnnotation(dart_ast.Annotation node) { if (node.name.name == 'ConfigurePigeon') { - if (node.arguments == null) { + final dart_ast.ArgumentList? arguments = node.arguments; + if (arguments == null) { _errors.add( Error( message: 'ConfigurePigeon expects a PigeonOptions() call.', lineNumber: calculateLineNumber(source, node.offset), ), ); + } else { + final pigeonOptionsMap = + _expressionToMap(arguments.arguments.first.argumentExpression) as Map; + _pigeonOptions = pigeonOptionsMap; } - final pigeonOptionsMap = - _expressionToMap(node.arguments!.arguments.first) as Map; - _pigeonOptions = pigeonOptionsMap; } node.visitChildren(this); return null; @@ -1555,11 +1557,13 @@ class RootBuilder extends dart_ast_visitor.RecursiveAstVisitor { (dart_ast.Annotation element) => element.name.name == 'HostApi', ); String? dartHostTestHandler; - if (hostApi.arguments != null) { - for (final dart_ast.Expression expression in hostApi.arguments!.arguments) { - if (expression is dart_ast.NamedExpression) { - if (expression.name.label.name == 'dartHostTestHandler') { - final dart_ast.Expression dartHostTestHandlerExpression = expression.expression; + final dart_ast.ArgumentList? arguments = hostApi.arguments; + if (arguments != null) { + for (final dart_ast.Argument argument in arguments.arguments) { + if (argument is dart_ast.NamedArgument) { + if (argument.name.lexeme == 'dartHostTestHandler') { + final dart_ast.Expression dartHostTestHandlerExpression = + argument.argumentExpression; if (dartHostTestHandlerExpression is dart_ast.SimpleStringLiteral) { dartHostTestHandler = dartHostTestHandlerExpression.value; } @@ -1586,9 +1590,12 @@ class RootBuilder extends dart_ast_visitor.RecursiveAstVisitor { ); final annotationMap = {}; - for (final dart_ast.Expression expression in proxyApiAnnotation.arguments!.arguments) { - if (expression is dart_ast.NamedExpression) { - annotationMap[expression.name.label.name] = _expressionToMap(expression.expression); + final dart_ast.ArgumentList? arguments = proxyApiAnnotation.arguments; + if (arguments != null) { + for (final dart_ast.Argument argument in arguments.arguments) { + if (argument is dart_ast.NamedArgument) { + annotationMap[argument.name.lexeme] = _expressionToMap(argument.argumentExpression); + } } } @@ -1677,9 +1684,12 @@ class RootBuilder extends dart_ast_visitor.RecursiveAstVisitor { ); final annotationMap = {}; - for (final dart_ast.Expression expression in annotation.arguments!.arguments) { - if (expression is dart_ast.NamedExpression) { - annotationMap[expression.name.label.name] = _expressionToMap(expression.expression); + final dart_ast.ArgumentList? arguments = annotation.arguments; + if (arguments != null) { + for (final dart_ast.Argument argument in arguments.arguments) { + if (argument is dart_ast.NamedArgument) { + annotationMap[argument.name.lexeme] = _expressionToMap(argument.argumentExpression); + } } } @@ -1744,8 +1754,6 @@ class RootBuilder extends dart_ast_visitor.RecursiveAstVisitor { String? defaultValue, }) { final dart_ast.NamedType? parameter = _getFirstChildOfType(formalParameter); - final dart_ast.SimpleFormalParameter? simpleFormalParameter = - _getFirstChildOfType(formalParameter); if (parameter != null) { final String argTypeBaseName = _getNamedTypeQualifiedName(parameter); final isNullable = parameter.question != null; @@ -1764,21 +1772,7 @@ class RootBuilder extends dart_ast_visitor.RecursiveAstVisitor { isOptional: isOptional ?? formalParameter.isOptional, isPositional: isPositional ?? formalParameter.isPositional, isRequired: isRequired ?? formalParameter.isRequired, - defaultValue: defaultValue, - ); - } else if (simpleFormalParameter != null) { - String? defaultValue; - if (formalParameter is dart_ast.DefaultFormalParameter) { - defaultValue = formalParameter.defaultValue?.toString(); - } - - return _formalParameterToPigeonParameter( - simpleFormalParameter, - isNamed: simpleFormalParameter.isNamed, - isOptional: simpleFormalParameter.isOptional, - isPositional: simpleFormalParameter.isPositional, - isRequired: simpleFormalParameter.isRequired, - defaultValue: defaultValue, + defaultValue: defaultValue ?? formalParameter.defaultClause?.value.toString(), ); } else { return Parameter( @@ -1836,9 +1830,9 @@ class RootBuilder extends dart_ast_visitor.RecursiveAstVisitor { )?.arguments; final String? taskQueueTypeName = taskQueueArguments == null ? null - : _getFirstChildOfType( + : _getFirstChildOfType( taskQueueArguments, - )?.expression.asNullable()?.name; + )?.argumentExpression.asNullable()?.name; final TaskQueueType taskQueueType = _stringToEnum(TaskQueueType.values, taskQueueTypeName) ?? TaskQueueType.serial; @@ -2077,10 +2071,8 @@ class RootBuilder extends dart_ast_visitor.RecursiveAstVisitor { ); } else { for (final dart_ast.FormalParameter param in node.parameters.parameters) { - if (param is dart_ast.DefaultFormalParameter) { - if (param.name != null && param.defaultValue != null) { - _currentClassDefaultValues[param.name!.toString()] = param.defaultValue!.toString(); - } + if (param.name != null && param.defaultClause != null) { + _currentClassDefaultValues[param.name!.lexeme] = param.defaultClause!.value.toString(); } } } @@ -2115,9 +2107,9 @@ class RootBuilder extends dart_ast_visitor.RecursiveAstVisitor { )?.arguments; final String? taskQueueTypeName = taskQueueArguments == null ? null - : _getFirstChildOfType( + : _getFirstChildOfType( taskQueueArguments, - )?.expression.asNullable()?.name; + )?.argumentExpression.asNullable()?.name; final TaskQueueType taskQueueType = _stringToEnum(TaskQueueType.values, taskQueueTypeName) ?? TaskQueueType.serial; diff --git a/packages/pigeon/pubspec.yaml b/packages/pigeon/pubspec.yaml index af91648dcb59..906c49b8cfc0 100644 --- a/packages/pigeon/pubspec.yaml +++ b/packages/pigeon/pubspec.yaml @@ -2,13 +2,13 @@ name: pigeon description: Code generator tool to make communication between Flutter and the host platform type-safe and easier. repository: https://github.com/flutter/packages/tree/main/packages/pigeon issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+pigeon%22 -version: 27.3.0 # This must match the version in lib/src/generator_tools.dart +version: 27.3.1 # This must match the version in lib/src/generator_tools.dart environment: - sdk: ^3.10.0 + sdk: ^3.11.0 dependencies: - analyzer: ">=10.0.0 <13.0.0" + analyzer: ">=13.0.0 <15.0.0" args: ^2.5.0 code_builder: ^4.10.0 collection: ^1.15.0