Skip to content

Commit

Permalink
Fix narrowing conversion lint (#47740)
Browse files Browse the repository at this point in the history
Internally we have a lint that surfaces this as a warning. Googlers, please refer to go/al-rule/NarrowingConversion.

Related: b/309552840

When we do:
```
coords.toolMajor = (float) (double) coordsList.get(3) * density;
```

`coordsList.get(3)` is casted to a `double`, then a `float`, before the multiplication happens. 

I don't think this is intentional. The intention of the code here seems to be:

- Cast to a `double`: `coordsList` is a `List<Object>` so the cast narrows the value
- Cast to a `float`: To fit the resulting value into [`coords.toolMajor`](https://developer.android.com/reference/android/view/MotionEvent.PointerCoords#toolMajor), which is a `float`.

As such, add parenthesis to address this.

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
  • Loading branch information
jiahaog authored Nov 8, 2023
1 parent b6acdc7 commit 5833714
Showing 1 changed file with 6 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1027,12 +1027,12 @@ private static PointerCoords parsePointerCoords(Object rawCoords, float density)
coords.orientation = (float) (double) coordsList.get(0);
coords.pressure = (float) (double) coordsList.get(1);
coords.size = (float) (double) coordsList.get(2);
coords.toolMajor = (float) (double) coordsList.get(3) * density;
coords.toolMinor = (float) (double) coordsList.get(4) * density;
coords.touchMajor = (float) (double) coordsList.get(5) * density;
coords.touchMinor = (float) (double) coordsList.get(6) * density;
coords.x = (float) (double) coordsList.get(7) * density;
coords.y = (float) (double) coordsList.get(8) * density;
coords.toolMajor = (float) ((double) coordsList.get(3) * density);
coords.toolMinor = (float) ((double) coordsList.get(4) * density);
coords.touchMajor = (float) ((double) coordsList.get(5) * density);
coords.touchMinor = (float) ((double) coordsList.get(6) * density);
coords.x = (float) ((double) coordsList.get(7) * density);
coords.y = (float) ((double) coordsList.get(8) * density);
return coords;
}

Expand Down

0 comments on commit 5833714

Please sign in to comment.