From 1fa2629dd3d424d2aec207e82e28cd6dceab3d94 Mon Sep 17 00:00:00 2001 From: Liam Appelbe Date: Thu, 31 Aug 2023 14:30:39 +1200 Subject: [PATCH] Better Block names --- lib/src/code_generator/objc_block.dart | 19 +++++++++++++++++++ lib/src/config_provider/config_spec.dart | 2 +- .../sub_parsers/objc_block_parser.dart | 1 - 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/src/code_generator/objc_block.dart b/lib/src/code_generator/objc_block.dart index 883acd73..a2e1c009 100644 --- a/lib/src/code_generator/objc_block.dart +++ b/lib/src/code_generator/objc_block.dart @@ -13,6 +13,19 @@ class ObjCBlock extends BindingType { final ObjCBuiltInFunctions builtInFunctions; ObjCBlock({ + required String usr, + required Type returnType, + required List argTypes, + required ObjCBuiltInFunctions builtInFunctions, + }) : this._( + usr: usr, + name: _getBlockName(returnType, argTypes), + returnType: returnType, + argTypes: argTypes, + builtInFunctions: builtInFunctions, + ); + + ObjCBlock._({ required String usr, required String name, required this.returnType, @@ -24,6 +37,12 @@ class ObjCBlock extends BindingType { name: name, ); + static final _illegalNameChar = RegExp(r'[^0-9a-zA-Z]'); + static String _typeName(Type type) => + type.toString().replaceAll(_illegalNameChar, ''); // .getDartType(w) + static String _getBlockName(Type returnType, List argTypes) => + 'ObjCBlock_${_typeName(returnType)}_${argTypes.map(_typeName).join('_')}'; + @override BindingString toBindingString(Writer w) { final s = StringBuffer(); diff --git a/lib/src/config_provider/config_spec.dart b/lib/src/config_provider/config_spec.dart index c7ed4061..3d67be9d 100644 --- a/lib/src/config_provider/config_spec.dart +++ b/lib/src/config_provider/config_spec.dart @@ -591,7 +591,7 @@ class StringConfigSpec extends ConfigSpec { if (!o.checkType(log: log)) { return false; } - if (_regexp != null && !_regexp.hasMatch(o.value as String)) { + if (!(_regexp?.hasMatch(o.value as String) ?? true)) { if (log) { _logger.severe( "Expected value of key '${o.pathString}' to match pattern $pattern (Input - ${o.value})."); diff --git a/lib/src/header_parser/sub_parsers/objc_block_parser.dart b/lib/src/header_parser/sub_parsers/objc_block_parser.dart index f7ac6628..313de4e1 100644 --- a/lib/src/header_parser/sub_parsers/objc_block_parser.dart +++ b/lib/src/header_parser/sub_parsers/objc_block_parser.dart @@ -32,7 +32,6 @@ ObjCBlock parseObjCBlock(clang_types.CXType cxtype) { return ObjCBlock( usr: usr.toString(), - name: 'ObjCBlock', returnType: returnType, argTypes: argTypes, builtInFunctions: objCBuiltInFunctions,