From 6df9e1c537f566be082aa41c5e35628aa06733fc Mon Sep 17 00:00:00 2001
From: reynolma2 <mreynolds@wavesys.com>
Date: Mon, 9 Mar 2015 11:35:18 -0700
Subject: [PATCH] Update idl_gen_general.cpp

There is a bug in creating a C# table when it includes a field of type 'BOOL'. The problem is that the generate C# code is as follows:
  "bool SampleValue = 0;"
This will fail to compile, because in C# this fails, it needs to be generated as:
 "bool SampleValue = false;"

The error is in line ~510

Change-Id: I77f6eea0f269b0540dbeb462602fc447cb69237d
---
 src/idl_gen_general.cpp | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/idl_gen_general.cpp b/src/idl_gen_general.cpp
index 0336ad8a..bc6f7b93 100644
--- a/src/idl_gen_general.cpp
+++ b/src/idl_gen_general.cpp
@@ -167,6 +167,12 @@ static std::string GenTypeGet(const LanguageParameters &lang,
     : GenTypePointer(lang, type);
 }
 
+static std::string GenDefaultValue(const Value &value) {
+  return value.type.base_type == BASE_TYPE_BOOL
+           ? (value.constant == "0" ? "false" : "true")
+           : value.constant;
+}
+
 static void GenEnum(const LanguageParameters &lang, EnumDef &enum_def,
                     std::string *code_ptr) {
   std::string &code = *code_ptr;
@@ -392,9 +398,7 @@ static void GenStruct(const LanguageParameters &lang, const Parser &parser,
       } else {
         code += offset_prefix + getter;
         code += "(o + bb_pos) : " + default_cast;
-        code += field.value.type.base_type == BASE_TYPE_BOOL
-                ? (field.value.constant == "0" ? "false" : "true")
-                : field.value.constant;
+        code += GenDefaultValue(field.value);
       }
     } else {
       switch (field.value.type.base_type) {
@@ -506,8 +510,9 @@ static void GenStruct(const LanguageParameters &lang, const Parser &parser,
         code += field.name;
         // Java doesn't have defaults, which means this method must always
         // supply all arguments, and thus won't compile when fields are added.
-        if (lang.language != GeneratorOptions::kJava)
-          code += " = " + field.value.constant;
+        if (lang.language != GeneratorOptions::kJava) {
+          code += " = " + GenDefaultValue(field.value);
+        }
       }
       code += ") {\n    builder.";
       code += FunctionStart(lang, 'S') + "tartObject(";
@@ -554,12 +559,7 @@ static void GenStruct(const LanguageParameters &lang, const Parser &parser,
       code += " " + argname + ") { builder." + FunctionStart(lang, 'A') + "dd";
       code += GenMethod(lang, field.value.type) + "(";
       code += NumToString(it - struct_def.fields.vec.begin()) + ", ";
-      code += argname + ", ";
-      if (field.value.type.base_type == BASE_TYPE_BOOL) {
-        code += field.value.constant == "0" ? "false" : "true";
-      } else {
-        code += field.value.constant;
-      }
+      code += argname + ", " + GenDefaultValue(field.value);
       code += "); }\n";
       if (field.value.type.base_type == BASE_TYPE_VECTOR) {
         auto vector_type = field.value.type.VectorType();
-- 
GitLab