On Wed, 31 May 2023 09:23:38 GMT, Prasanta Sadhukhan <psadhuk...@openjdk.org> wrote:
>> Yet `equals` currently just compares `svalue`… It looks weird. > > It might looks weird but it is the one which is working. > For example, for `{"font-size: 42px", "font-size: 22px"}` > > `value` is 0.0 > `svalue` is 42px, 22px > `index` false > `lu.units` px > so if I check > > > return val instanceof CSS.FontSize size > && value == size.value > && index == size.index > && Objects.equals(lu, size.lu); > > > > it will return equals `true `even though it should not be equal which is why > I used `svalue` This is why you have to compare the entire value of `LengthUnit` as [I described above](https://github.com/openjdk/jdk/pull/13405#discussion_r1211318063). >From a quick debugging session, `"font-size: 42px"` is parsed into the >following values: CSS$FontSize value = 0.0 index = false svalue = "42px" lu = {CSS$LengthUnit@1594} "0 42.0" type = 0 value = 42.0 units = "px" `"font-size: 22px"` is parsed into: CSS$FontSize value = 0.0 index = false svalue = "22px" lu = {CSS$LengthUnit@1594} "0 22.0" type = 0 value = 22.0 units = "px" So [the implementation I suggested today](https://github.com/openjdk/jdk/pull/13405#discussion_r1211318063) for `FontSize.equals` and `LengthUnit.equals` handles it correctly. The one that [I suggested last week](https://github.com/openjdk/jdk/pull/13405#discussion_r1200351364) which avoids implementing `LengthUnit.equals` does not work because it takes into account only the `units` field of the `LengthUnit` object. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/13405#discussion_r1211390695