diff options
-rw-r--r-- | src/node_options.cc | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/node_options.cc b/src/node_options.cc index 8bd8b827fa..b7b924501a 100644 --- a/src/node_options.cc +++ b/src/node_options.cc @@ -107,6 +107,20 @@ void EnvironmentOptions::CheckOptions(std::vector<std::string>* errors) { namespace options_parser { +// Explicitly access the singelton instances in their dependancy order. +// This was moved here to workaround a compiler bug. +// Refs: https://github.com/nodejs/node/issues/25593 + +#if HAVE_INSPECTOR +const DebugOptionsParser DebugOptionsParser::instance; +#endif // HAVE_INSPECTOR + +const EnvironmentOptionsParser EnvironmentOptionsParser::instance; + +const PerIsolateOptionsParser PerIsolateOptionsParser::instance; + +const PerProcessOptionsParser PerProcessOptionsParser::instance; + // XXX: If you add an option here, please also add it to doc/node.1 and // doc/api/cli.md // TODO(addaleax): Make that unnecessary. @@ -143,10 +157,6 @@ DebugOptionsParser::DebugOptionsParser() { AddAlias("--debug-brk=", { "--inspect-port", "--debug-brk" }); } -#if HAVE_INSPECTOR -const DebugOptionsParser DebugOptionsParser::instance; -#endif // HAVE_INSPECTOR - EnvironmentOptionsParser::EnvironmentOptionsParser() { AddOption("--experimental-modules", "experimental ES Module support and caching modules", @@ -282,8 +292,6 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() { #endif // HAVE_INSPECTOR } -const EnvironmentOptionsParser EnvironmentOptionsParser::instance; - PerIsolateOptionsParser::PerIsolateOptionsParser() { AddOption("--track-heap-objects", "track heap object allocations for heap snapshots", @@ -341,8 +349,6 @@ PerIsolateOptionsParser::PerIsolateOptionsParser() { &PerIsolateOptions::get_per_env_options); } -const PerIsolateOptionsParser PerIsolateOptionsParser::instance; - PerProcessOptionsParser::PerProcessOptionsParser() { AddOption("--title", "the process title to use on startup", @@ -449,8 +455,6 @@ PerProcessOptionsParser::PerProcessOptionsParser() { &PerProcessOptions::get_per_isolate_options); } -const PerProcessOptionsParser PerProcessOptionsParser::instance; - inline std::string RemoveBrackets(const std::string& host) { if (!host.empty() && host.front() == '[' && host.back() == ']') return host.substr(1, host.size() - 2); |