I debugged this and found that in
|
public boolean isGenerateWithInterface() { |
|
ensureTypeIntrospected(); |
|
String relative = typeWith().relative(); |
|
return implementedInterfacesNames.contains(relative); |
|
} |
it is checked that the relative interface name (ie, without the package) is contained inside the implemented interfaces, but in
|
for (TypeMirror m : e.getInterfaces()) { |
|
collectUnresolvedInterface(m, context); |
|
collectInterfacesMirrors(m, context); |
|
} |
|
} |
the full qualified name is added for already existing interfaces. Because of that the processor never finds the relative interface name within the full qualified names and the with type is not regenerated when the value type changes.
I debugged this and found that in
immutables/value-processor/src/org/immutables/value/processor/meta/ValueType.java
Lines 613 to 617 in e3c35de
it is checked that the relative interface name (ie, without the package) is contained inside the implemented interfaces, but in
immutables/generator/src/org/immutables/generator/TypeHierarchyCollector.java
Lines 204 to 208 in e3c35de
the full qualified name is added for already existing interfaces. Because of that the processor never finds the relative interface name within the full qualified names and the with type is not regenerated when the value type changes.