|
I had a short look into this; The problem appears to be that in ExecutableMetaData$Builder#findParameterMetaData() we process the executables to be merged in no deterministic order (we're iterating over a hash set). Based on the specific iteration order, once the parameter name from Service#sayHello() is applied and the other time the name from ServiceImpl#sayHello(). Whichever comes first, wins.
So we'd have to define which name is to be applied in this case; I feel it'd make sense to prefer:
-
Any specific name over the default ones (e.g. prefer foo over arg0)
-
The names from super-type methods over the names from sub-type methods (e.g. prefer Service#sayHello() over ServiceImpl#sayHello()
This leaves open the case of two parallel interfaces which I'd leave undefined.
|