Upgrading ffigen 15 to 16
Breaking15.0.0 → 16.1.0Breaking2New4Changed3Fixed6
BreakingUpgrade verdict
2 breaking changes.
In plain terms
- By default, transitively included Objective-C interfaces are now generated as stubs rather than fully pulled in. The protocols and categories flags default to false and true respectively, matching previous behavior.
- Objective-C category methods are now generated as Dart extension methods. Instance methods work the same if the extensions are imported, but static methods move from the interface to the category.
Must act 2 items need code or config changes
What you must change
Breaking2
include-transitive-objc-interfaces now defaults to false, generating transitive deps as stubs instead of pulling them all in.
include-transitive-objc-interfacesinclude-transitive-objc-protocolsinclude-transitive-objc-categoriesGenerates ObjC categories as Dart extension methods instead of inserting their methods into the interface.
MyInterface.staticMethodMyCategory.staticMethodobjc-categoriesAPI changes
Generated by DepDelta from published Dart source. Not mixed with prose notes.
- added:
class DeclarationFilters: abstract interface - added:
class ExternalVersions - added:
class Versions - added:
ctor DeclarationFilters({ bool Function(Declaration declaration)? shouldInclude, bool Function(Declaration declaration)? shouldIncludeSymbolAddress, String Function(Declaration declaration)? rename, String Function(Declaration declaration, String member)? renameMember, bool Function(Declaration declaration, String member)? shouldIncludeMember, }) - added:
ctor ExternalVersions({this.ios, this.macos}) - added:
ctor Versions({this.min, this.max}) - added:
enum Language - added:
field ExternalVersions.ios: final Versions? - added:
field ExternalVersions.macos: final Versions? - added:
field Versions.max: final Version? - added:
field Versions.min: final Version? - added:
get Config.includeTransitiveObjCCategories: bool - added:
get Config.includeTransitiveObjCInterfaces: bool - added:
get Config.includeTransitiveObjCProtocols: bool - added:
get Config.objcCategories: DeclarationFilters - added:
get YamlConfig.includeTransitiveObjCCategories: bool - added:
get YamlConfig.includeTransitiveObjCInterfaces: bool - added:
get YamlConfig.includeTransitiveObjCProtocols: bool - added:
get YamlConfig.objcCategories: DeclarationFilters - added:
member Language.c - added:
member Language.objc - added:
method DeclarationFilters.rename(Declaration declaration): String - added:
method DeclarationFilters.renameMember(Declaration declaration, String member): String - added:
method DeclarationFilters.shouldInclude(Declaration declaration): bool - added:
method DeclarationFilters.shouldIncludeMember(Declaration declaration, String member): bool - added:
method DeclarationFilters.shouldIncludeSymbolAddress(Declaration declaration): bool - added:
static field DeclarationFilters.excludeAll: final - added:
static field DeclarationFilters.includeAll: final - added:
static method DeclarationFilters.include(Set<String> names): DeclarationFilters