From 2685901866b30943c52cce327ff266552b1c2bf7 Mon Sep 17 00:00:00 2001 From: EotT123 <32986779+EotT123@users.noreply.github.com> Date: Tue, 14 Jan 2025 04:56:39 +0100 Subject: [PATCH] Finding duplicate methods doesn't work when using 'smart' static methods (#658) * Finding duplicate methods doesn't work when using 'smart' static methods * fix * small change --------- Co-authored-by: EotT123 --- .../src/main/java/manifold/ext/ExtCodeGen.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/manifold-deps-parent/manifold-ext/src/main/java/manifold/ext/ExtCodeGen.java b/manifold-deps-parent/manifold-ext/src/main/java/manifold/ext/ExtCodeGen.java index 62cbf5931..f05e90242 100644 --- a/manifold-deps-parent/manifold-ext/src/main/java/manifold/ext/ExtCodeGen.java +++ b/manifold-deps-parent/manifold-ext/src/main/java/manifold/ext/ExtCodeGen.java @@ -584,7 +584,7 @@ private boolean warnIfDuplicate( AbstractSrcMethod method, SrcClass extendedType return true; } - private AbstractSrcMethod findMethod( AbstractSrcMethod method, SrcClass extendedType ) + private AbstractSrcMethod findMethod( AbstractSrcMethod method, SrcClass extendedType ) { if( extendedType == null ) { @@ -592,17 +592,23 @@ private AbstractSrcMethod findMethod( AbstractSrcMethod method, SrcClass extende } AbstractSrcMethod duplicate = null; + int paramsToSubtract = 0; + if( !method.getParameters().isEmpty() ) + { + SrcParameter firstParam = method.getParameters().get(0); + paramsToSubtract = firstParam.hasAnnotation( This.class ) || firstParam.hasAnnotation( ThisClass.class ) ? 1 : 0; + } outer: for( AbstractSrcMethod m: extendedType.getMethods() ) { - if( m.getSimpleName().equals( method.getSimpleName() ) && m.getParameters().size() == method.getParameters().size()-1 ) + if( m.getSimpleName().equals( method.getSimpleName() ) && m.getParameters().size() == method.getParameters().size()-paramsToSubtract ) { List parameters = method.getParameters(); List params = m.getParameters(); - for( int i = 1; i < parameters.size(); i++ ) + for( int i = paramsToSubtract; i < parameters.size(); i++ ) { SrcParameter param = (SrcParameter)parameters.get( i ); - SrcParameter p = (SrcParameter)params.get( i-1 ); + SrcParameter p = (SrcParameter)params.get( i-paramsToSubtract ); if( !param.getType().equals( p.getType() ) ) { continue outer;