The JLS says that primitive and String constants must be
inlined at compile time (IIRC, always worth checking...)
Object based constants are not inlined, so should cause the
error in clirr if moved.
Thus although ReferenceMap.HARD, .WEAK and .SOFT have
been deleted, this causes no binary incompatibility (they are
int constants). (The constants can be removed completely
without binary incompatibility - in this case, they actually
moved to a superclass)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Clirr 0.4 differentiates between binary and source
compatibility ("bc" and "sc").
Removing a field that is a compile time constant is marked
as a bc warning and a sc error.
Not closing this request because I think we are not handling
"moved to superclass" correctly.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Logged In: YES
user_id=401384
You mean that compile time constants are inlined into the
client code and removing them will not affect compiled clients?
Which constant in ReferenceMap do you mean?
Logged In: YES
user_id=408725
The JLS says that primitive and String constants must be
inlined at compile time (IIRC, always worth checking...)
Object based constants are not inlined, so should cause the
error in clirr if moved.
Thus although ReferenceMap.HARD, .WEAK and .SOFT have
been deleted, this causes no binary incompatibility (they are
int constants). (The constants can be removed completely
without binary incompatibility - in this case, they actually
moved to a superclass)
Logged In: YES
user_id=401384
Clirr 0.4 differentiates between binary and source
compatibility ("bc" and "sc").
Removing a field that is a compile time constant is marked
as a bc warning and a sc error.
Not closing this request because I think we are not handling
"moved to superclass" correctly.