From e2a8795ec95d224ee3fdb8508b180ae72b4d83c0 Mon Sep 17 00:00:00 2001 From: Marshelino Maged Date: Wed, 5 Feb 2025 13:54:19 +0200 Subject: [PATCH] naming constructors --- pkgs/jnigen/lib/src/bindings/renamer.dart | 2 +- pkgs/jnigen/lib/src/elements/j_elements.dart | 2 ++ pkgs/jnigen/test/user_visitors.dart | 6 ++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pkgs/jnigen/lib/src/bindings/renamer.dart b/pkgs/jnigen/lib/src/bindings/renamer.dart index ef77bd074..b383c45fe 100644 --- a/pkgs/jnigen/lib/src/bindings/renamer.dart +++ b/pkgs/jnigen/lib/src/bindings/renamer.dart @@ -236,7 +236,7 @@ class _MethodRenamer implements Visitor { @override void visit(Method node) { final name = _preprocess( - node.isConstructor ? 'new' : node.userDefinedName ?? node.name); + node.userDefinedName ?? (node.isConstructor ? 'new' : node.name)); final sig = node.javaSig; // If node is in super class, assign its number, overriding it. final superClass = diff --git a/pkgs/jnigen/lib/src/elements/j_elements.dart b/pkgs/jnigen/lib/src/elements/j_elements.dart index 6ee83bc87..6af918422 100644 --- a/pkgs/jnigen/lib/src/elements/j_elements.dart +++ b/pkgs/jnigen/lib/src/elements/j_elements.dart @@ -70,6 +70,8 @@ class Method implements Element { String get originalName => _method.name; + bool get isConstructor => _method.isConstructor; + @override void accept(Visitor visitor) { visitor.visitMethod(this); diff --git a/pkgs/jnigen/test/user_visitors.dart b/pkgs/jnigen/test/user_visitors.dart index 190347a52..13dd62a63 100644 --- a/pkgs/jnigen/test/user_visitors.dart +++ b/pkgs/jnigen/test/user_visitors.dart @@ -67,6 +67,9 @@ class UserRenamer extends Visitor { if (method.originalName.contains('Foo')) { method.name = method.originalName.replaceAll('Foo', 'Bar'); } + if (method.isConstructor) { + method.name = 'constructor'; + } } @override @@ -172,6 +175,7 @@ void main() { ast.Param(name: 'Foo', type: ast.TypeUsage.object), ast.Param(name: 'Foo1', type: ast.TypeUsage.object), ]), + ast.Method(name: '', returnType: ast.TypeUsage.object) ], ), }); @@ -190,6 +194,8 @@ void main() { expect(classes.decls['Foo']?.methods.finalNames, [r'Bar$2', r'Bar$3', r'Bar1$2', r'Bar1$3']); + expect(classes.decls['y.Foo']?.methods.finalNames, [r'Bar', 'constructor']); + expect(classes.decls['y.Foo']?.methods.first.params.finalNames, ['Bar', 'Bar1']); });