Implements type promotion for Java enum (#6382)
authorStefan de Konink <stefan@konink.de>
Tue, 5 Jan 2021 19:11:29 +0000 (20:11 +0100)
committerGitHub <noreply@github.com>
Tue, 5 Jan 2021 19:11:29 +0000 (11:11 -0800)
* Implements type promotion for Java enum as suggested in #3890, #5111, #6369

* After generate_code.sh

src/idl_gen_java.cpp
tests/MyGame/Example/Color.java

index c51f7bc..e80f379 100644 (file)
@@ -316,7 +316,7 @@ class JavaGenerator : public BaseGenerator {
       auto &ev = **it;
       GenComment(ev.doc_comment, code_ptr, &comment_config, "  ");
       code += "  public static final ";
-      code += GenTypeBasic(enum_def.underlying_type);
+      code += GenTypeBasic(DestinationType(enum_def.underlying_type, false));
       code += " ";
       code += ev.name + " = ";
       code += enum_def.ToString(ev);
index 0563c0a..dd19a61 100644 (file)
@@ -7,16 +7,16 @@ package MyGame.Example;
  */
 public final class Color {
   private Color() { }
-  public static final byte Red = 1;
+  public static final int Red = 1;
   /**
    * \brief color Green
    * Green is bit_flag with value (1u << 1)
    */
-  public static final byte Green = 2;
+  public static final int Green = 2;
   /**
    * \brief color Blue (1u << 3)
    */
-  public static final byte Blue = 8;
+  public static final int Blue = 8;
 
   public static final String[] names = { "Red", "Green", "", "", "", "", "", "Blue", };