diff --git a/src/flatc.cpp b/src/flatc.cpp index fc3cc9221..ae2aa5548 100644 --- a/src/flatc.cpp +++ b/src/flatc.cpp @@ -519,7 +519,7 @@ int FlatCompiler::Compile(int argc, const char **argv) { } if ((is_schema || is_binary_schema) && !conform_to_schema.empty()) { auto err = parser->ConformTo(conform_parser); - if (!err.empty()) Error("schemas don\'t conform: " + err); + if (!err.empty()) Error("schemas don\'t conform: " + err, false); } if (schema_binary || opts.binary_schema_gen_embed) { parser->Serialize(); diff --git a/src/idl_parser.cpp b/src/idl_parser.cpp index a6fad123a..f100a6a99 100644 --- a/src/idl_parser.cpp +++ b/src/idl_parser.cpp @@ -2478,8 +2478,7 @@ bool Parser::SupportsDefaultVectorsAndStrings() const { } bool Parser::SupportsAdvancedUnionFeatures() const { - return opts.lang_to_generate != 0 && - (opts.lang_to_generate & + return (opts.lang_to_generate & ~(IDLOptions::kCpp | IDLOptions::kTs | IDLOptions::kPhp | IDLOptions::kJava | IDLOptions::kCSharp | IDLOptions::kKotlin | IDLOptions::kBinary | IDLOptions::kSwift)) == 0; @@ -3255,7 +3254,7 @@ CheckedError Parser::ParseRoot(const char *source, const char **include_paths, for (auto val_it = enum_def.Vals().begin(); val_it != enum_def.Vals().end(); ++val_it) { auto &val = **val_it; - if (!SupportsAdvancedUnionFeatures() && + if (!(opts.lang_to_generate != 0 && SupportsAdvancedUnionFeatures()) && (IsStruct(val.union_type) || IsString(val.union_type))) return Error( "only tables can be union elements in the generated language: " +