Commit 3bfc86ea authored by Edward's avatar Edward Committed by Wouter van Oortmerssen

[Dart]fix: segment fault with empty namespace when generating dart file (#5507)

* fix: segment fault with empty namespace when generating dart file

* fix: compile err

* fix: compile err

* fix: imported file names

* fix test issues

* fix some language style issues
parent c0282873
...@@ -71,7 +71,9 @@ class DartGenerator : public BaseGenerator { ...@@ -71,7 +71,9 @@ class DartGenerator : public BaseGenerator {
"// ignore_for_file: unused_import, unused_field, " "// ignore_for_file: unused_import, unused_field, "
"unused_local_variable\n\n"; "unused_local_variable\n\n";
code += "library " + kv->first + ";\n\n"; if (!kv->first.empty()) {
code += "library " + kv->first + ";\n\n";
}
code += "import 'dart:typed_data' show Uint8List;\n"; code += "import 'dart:typed_data' show Uint8List;\n";
code += "import 'package:flat_buffers/flat_buffers.dart' as " + _kFb + code += "import 'package:flat_buffers/flat_buffers.dart' as " + _kFb +
...@@ -85,7 +87,7 @@ class DartGenerator : public BaseGenerator { ...@@ -85,7 +87,7 @@ class DartGenerator : public BaseGenerator {
++kv2) { ++kv2) {
if (kv2->first != kv->first) { if (kv2->first != kv->first) {
code += "import '" + code += "import '" +
GeneratedFileName("./", file_name_ + "_" + kv2->first) + GeneratedFileName("./", file_name_ + (!kv2->first.empty() ? "_" + kv2->first : "")) +
"' as " + ImportAliasName(kv2->first) + ";\n"; "' as " + ImportAliasName(kv2->first) + ";\n";
} }
} }
...@@ -93,7 +95,7 @@ class DartGenerator : public BaseGenerator { ...@@ -93,7 +95,7 @@ class DartGenerator : public BaseGenerator {
code += kv->second; code += kv->second;
if (!SaveFile( if (!SaveFile(
GeneratedFileName(path_, file_name_ + "_" + kv->first).c_str(), GeneratedFileName(path_, file_name_ + (!kv->first.empty() ? "_" + kv->first : "")).c_str(),
code, false)) { code, false)) {
return false; return false;
} }
...@@ -115,6 +117,9 @@ class DartGenerator : public BaseGenerator { ...@@ -115,6 +117,9 @@ class DartGenerator : public BaseGenerator {
} }
static std::string BuildNamespaceName(const Namespace &ns) { static std::string BuildNamespaceName(const Namespace &ns) {
if (ns.components.empty()) {
return "";
}
std::stringstream sstream; std::stringstream sstream;
std::copy(ns.components.begin(), ns.components.end() - 1, std::copy(ns.components.begin(), ns.components.end() - 1,
std::ostream_iterator<std::string>(sstream, ".")); std::ostream_iterator<std::string>(sstream, "."));
...@@ -142,7 +147,7 @@ class DartGenerator : public BaseGenerator { ...@@ -142,7 +147,7 @@ class DartGenerator : public BaseGenerator {
auto noext = flatbuffers::StripExtension(it->second); auto noext = flatbuffers::StripExtension(it->second);
auto basename = flatbuffers::StripPath(noext); auto basename = flatbuffers::StripPath(noext);
*code += "import '" + GeneratedFileName("", basename + "_" + the_namespace) + "';\n"; *code += "import '" + GeneratedFileName("", basename + (the_namespace == "" ? "" : "_" + the_namespace)) + "';\n";
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment