|
3 | 3 | import java.util.Arrays; |
4 | 4 | import java.util.List; |
5 | 5 | import java.util.Optional; |
| 6 | +import java.util.stream.Collectors; |
| 7 | +import java.util.stream.Stream; |
| 8 | + |
6 | 9 | import liquidjava.errors.ErrorEmitter; |
7 | 10 | import liquidjava.errors.ErrorHandler; |
8 | 11 | import liquidjava.processor.context.Context; |
@@ -92,8 +95,19 @@ public <R> void visitCtMethod(CtMethod<R> method) { |
92 | 95 | } |
93 | 96 | } else { |
94 | 97 | if (!methodExists(targetType, method)) { |
95 | | - ErrorHandler.printCustomError(method, String.format("Could not find method '%s %s' for '%s'", |
96 | | - method.getType().getSimpleName(), method.getSignature(), prefix), errorEmitter); |
| 98 | + String matchingNames = targetType.getMethods().stream() |
| 99 | + .filter(m -> m.getSimpleName().equals(method.getSimpleName())).map(m -> m.getSignature()) |
| 100 | + .collect(Collectors.joining("\n\t")); |
| 101 | + |
| 102 | + StringBuilder sb = new StringBuilder(); |
| 103 | + sb.append(String.format("Could not find method '%s %s' for '%s'", method.getType().getSimpleName(), |
| 104 | + method.getSignature(), prefix)); |
| 105 | + |
| 106 | + if (!matchingNames.isEmpty()) { |
| 107 | + sb.append("\nPossible matches:\n\t"); |
| 108 | + sb.append(matchingNames); |
| 109 | + } |
| 110 | + ErrorHandler.printCustomError(method, sb.toString(), errorEmitter); |
97 | 111 | return; |
98 | 112 | } |
99 | 113 | } |
|
0 commit comments