Skip to content

Commit d3c3acb

Browse files
authored
[swiftgen] Allow user to use custom module function (#2630)
1 parent e78967c commit d3c3acb

File tree

4 files changed

+34
-23
lines changed

4 files changed

+34
-23
lines changed

pkgs/ffigen/lib/src/config_provider/config.dart

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -504,16 +504,14 @@ final class Interfaces extends Declarations {
504504
/// The module that the Objective-C interface belongs to.
505505
final String? Function(Declaration declaration) module;
506506

507-
static String? _moduleDefault(Declaration declaration) => null;
508-
509507
const Interfaces({
510508
super.include,
511509
super.includeMember,
512510
super.includeSymbolAddress,
513511
super.rename,
514512
super.renameMember,
515513
this.includeTransitive = false,
516-
this.module = _moduleDefault,
514+
this.module = noModule,
517515
});
518516

519517
static const excludeAll = Interfaces(include: _excludeAll);
@@ -523,6 +521,8 @@ final class Interfaces extends Declarations {
523521
static Interfaces includeSet(Set<String> names) => Interfaces(
524522
include: (Declaration decl) => names.contains(decl.originalName),
525523
);
524+
525+
static String? noModule(Declaration declaration) => null;
526526
}
527527

528528
/// Configuration for Objective-C protocols.
@@ -536,16 +536,14 @@ final class Protocols extends Declarations {
536536
/// The module that the Objective-C protocol belongs to.
537537
final String? Function(Declaration declaration) module;
538538

539-
static String? _moduleDefault(Declaration declaration) => null;
540-
541539
const Protocols({
542540
super.include,
543541
super.includeMember,
544542
super.includeSymbolAddress,
545543
super.rename,
546544
super.renameMember,
547545
this.includeTransitive = false,
548-
this.module = _moduleDefault,
546+
this.module = noModule,
549547
});
550548

551549
static const excludeAll = Protocols(include: _excludeAll);
@@ -555,6 +553,8 @@ final class Protocols extends Declarations {
555553
static Protocols includeSet(Set<String> names) => Protocols(
556554
include: (Declaration decl) => names.contains(decl.originalName),
557555
);
556+
557+
static String? noModule(Declaration declaration) => null;
558558
}
559559

560560
/// Configuration for outputting bindings.
@@ -697,6 +697,8 @@ extension type Config(FfiGenerator ffiGen) implements FfiGenerator {
697697

698698
Uri get outputObjC => ffiGen.output._objectiveCFile;
699699

700+
BindingStyle get outputStyle => ffiGen.output.style;
701+
700702
SymbolFile? get symbolFile => ffiGen.output.symbolFile;
701703

702704
bool get sort => ffiGen.output.sort;

pkgs/swiftgen/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 0.1.1
2+
3+
- Fix bug where `SwiftGenerator.ffigen.objectiveC.(interfaces|protocols).module`
4+
is ignored.
5+
16
## 0.1.0
27

38
- MVP version.

pkgs/swiftgen/lib/src/generator.dart

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ extension SwiftGenGenerator on SwiftGenerator {
7676
], absTempDir);
7777

7878
void _generateDartFile(Logger logger, String objcHeader) {
79+
final interfaces = ffigen.objectiveC.interfaces;
80+
final protocols = ffigen.objectiveC.protocols;
7981
fg.FfiGenerator(
8082
output: fg.Output(
8183
dartFile: output.dartFile,
@@ -98,24 +100,26 @@ extension SwiftGenGenerator on SwiftGenerator {
98100
typedefs: ffigen.typedefs,
99101
objectiveC: fg.ObjectiveC(
100102
interfaces: fg.Interfaces(
101-
include: ffigen.objectiveC.interfaces.include,
102-
includeMember: ffigen.objectiveC.interfaces.includeMember,
103-
includeSymbolAddress:
104-
ffigen.objectiveC.interfaces.includeSymbolAddress,
105-
rename: ffigen.objectiveC.interfaces.rename,
106-
renameMember: ffigen.objectiveC.interfaces.renameMember,
107-
includeTransitive: ffigen.objectiveC.interfaces.includeTransitive,
108-
module: (_) => output.module,
103+
include: interfaces.include,
104+
includeMember: interfaces.includeMember,
105+
includeSymbolAddress: interfaces.includeSymbolAddress,
106+
rename: interfaces.rename,
107+
renameMember: interfaces.renameMember,
108+
includeTransitive: interfaces.includeTransitive,
109+
module: interfaces.module != fg.Interfaces.noModule
110+
? interfaces.module
111+
: (_) => output.module,
109112
),
110113
protocols: fg.Protocols(
111-
include: ffigen.objectiveC.protocols.include,
112-
includeMember: ffigen.objectiveC.protocols.includeMember,
113-
includeSymbolAddress:
114-
ffigen.objectiveC.protocols.includeSymbolAddress,
115-
rename: ffigen.objectiveC.protocols.rename,
116-
renameMember: ffigen.objectiveC.protocols.renameMember,
117-
includeTransitive: ffigen.objectiveC.protocols.includeTransitive,
118-
module: (_) => output.module,
114+
include: protocols.include,
115+
includeMember: protocols.includeMember,
116+
includeSymbolAddress: protocols.includeSymbolAddress,
117+
rename: protocols.rename,
118+
renameMember: protocols.renameMember,
119+
includeTransitive: protocols.includeTransitive,
120+
module: protocols.module != fg.Protocols.noModule
121+
? protocols.module
122+
: (_) => output.module,
119123
),
120124
categories: ffigen.objectiveC.categories,
121125
externalVersions: ffigen.objectiveC.externalVersions,

pkgs/swiftgen/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
name: swiftgen
66
description: 'A tool for generating bindings that allow interop between Dart and Swift code.'
7-
version: 0.1.0
7+
version: 0.1.1
88
repository: https://github.com/dart-lang/native/tree/main/pkgs/swiftgen
99
issue_tracker: https://github.com/dart-lang/native/issues?q=is%3Aissue+is%3Aopen+label%3Apackage%3Aswiftgen
1010

0 commit comments

Comments
 (0)