From e3017029647a88eb6f509ee9744012fffeb0d371 Mon Sep 17 00:00:00 2001 From: Dominic Battre Date: Fri, 21 Oct 2022 18:09:28 +0200 Subject: [PATCH] Make type conversions explicit. (#7595) As Java does not support unsigned integer types, the value types are "rounded up" (an uint32 is represented as a long) but persisted correctly (an uint32 is persisted as 4 bytes). This CL makes a cast operation explicit so that the compiler does not throw warning messages. Co-authored-by: Dominic Battre Co-authored-by: Derek Bailey --- java/pom.xml | 1 - src/idl_gen_java.cpp | 1 + tests/MyGame/Example/StructOfStructs.java | 8 ++++---- tests/MyGame/Example/StructOfStructsOfStructs.java | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/java/pom.xml b/java/pom.xml index e905c65ab..94814c501 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -64,7 +64,6 @@ 8 MyGame/Example/MonsterStorageGrpc.java - MyGame/Example/StructOfStructs** MyGame/OtherNameSpace/TableBT.java diff --git a/src/idl_gen_java.cpp b/src/idl_gen_java.cpp index f5a04d3af..a6dab5956 100644 --- a/src/idl_gen_java.cpp +++ b/src/idl_gen_java.cpp @@ -1893,6 +1893,7 @@ class JavaGenerator : public BaseGenerator { } } else { code += " " + name + " = "; + code += SourceCast(field_type); code += "_o"; for (size_t i = 0; i < array_lengths.size(); ++i) { code += "." + namer_.Method("get", array_lengths[i].name) + "()"; diff --git a/tests/MyGame/Example/StructOfStructs.java b/tests/MyGame/Example/StructOfStructs.java index 424a8a282..32c6e1f46 100644 --- a/tests/MyGame/Example/StructOfStructs.java +++ b/tests/MyGame/Example/StructOfStructs.java @@ -52,12 +52,12 @@ public final class StructOfStructs extends Struct { } public static int pack(FlatBufferBuilder builder, StructOfStructsT _o) { if (_o == null) return 0; - int _a_id = _o.getA().getId(); - int _a_distance = _o.getA().getDistance(); + int _a_id = (int) _o.getA().getId(); + int _a_distance = (int) _o.getA().getDistance(); short _b_a = _o.getB().getA(); byte _b_b = _o.getB().getB(); - int _c_id = _o.getC().getId(); - int _c_distance = _o.getC().getDistance(); + int _c_id = (int) _o.getC().getId(); + int _c_distance = (int) _o.getC().getDistance(); return createStructOfStructs( builder, _a_id, diff --git a/tests/MyGame/Example/StructOfStructsOfStructs.java b/tests/MyGame/Example/StructOfStructsOfStructs.java index 5d5f00f02..ae1f50de9 100644 --- a/tests/MyGame/Example/StructOfStructsOfStructs.java +++ b/tests/MyGame/Example/StructOfStructsOfStructs.java @@ -47,12 +47,12 @@ public final class StructOfStructsOfStructs extends Struct { } public static int pack(FlatBufferBuilder builder, StructOfStructsOfStructsT _o) { if (_o == null) return 0; - int _a_a_id = _o.getA().getA().getId(); - int _a_a_distance = _o.getA().getA().getDistance(); + int _a_a_id = (int) _o.getA().getA().getId(); + int _a_a_distance = (int) _o.getA().getA().getDistance(); short _a_b_a = _o.getA().getB().getA(); byte _a_b_b = _o.getA().getB().getB(); - int _a_c_id = _o.getA().getC().getId(); - int _a_c_distance = _o.getA().getC().getDistance(); + int _a_c_id = (int) _o.getA().getC().getId(); + int _a_c_distance = (int) _o.getA().getC().getDistance(); return createStructOfStructsOfStructs( builder, _a_a_id,