Skip to content

Commit 3f07a8f

Browse files
[jnigen] Add the ability to rename constructors (#1970)
1 parent 6290151 commit 3f07a8f

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

pkgs/jnigen/lib/src/bindings/renamer.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ class _MethodRenamer implements Visitor<Method, void> {
236236
@override
237237
void visit(Method node) {
238238
final name = _preprocess(
239-
node.isConstructor ? 'new' : node.userDefinedName ?? node.name);
239+
node.userDefinedName ?? (node.isConstructor ? 'new' : node.name));
240240
final sig = node.javaSig;
241241
// If node is in super class, assign its number, overriding it.
242242
final superClass =

pkgs/jnigen/lib/src/elements/j_elements.dart

+2
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ class Method implements Element {
7070

7171
String get originalName => _method.name;
7272

73+
bool get isConstructor => _method.isConstructor;
74+
7375
@override
7476
void accept(Visitor visitor) {
7577
visitor.visitMethod(this);

pkgs/jnigen/test/user_visitors.dart

+6
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ class UserRenamer extends Visitor {
6767
if (method.originalName.contains('Foo')) {
6868
method.name = method.originalName.replaceAll('Foo', 'Bar');
6969
}
70+
if (method.isConstructor) {
71+
method.name = 'constructor';
72+
}
7073
}
7174

7275
@override
@@ -172,6 +175,7 @@ void main() {
172175
ast.Param(name: 'Foo', type: ast.TypeUsage.object),
173176
ast.Param(name: 'Foo1', type: ast.TypeUsage.object),
174177
]),
178+
ast.Method(name: '<init>', returnType: ast.TypeUsage.object)
175179
],
176180
),
177181
});
@@ -190,6 +194,8 @@ void main() {
190194
expect(classes.decls['Foo']?.methods.finalNames,
191195
[r'Bar$2', r'Bar$3', r'Bar1$2', r'Bar1$3']);
192196

197+
expect(classes.decls['y.Foo']?.methods.finalNames, [r'Bar', 'constructor']);
198+
193199
expect(classes.decls['y.Foo']?.methods.first.params.finalNames,
194200
['Bar', 'Bar1']);
195201
});

0 commit comments

Comments
 (0)