@@ -107,6 +107,20 @@ void EnvironmentOptions::CheckOptions(std::vector<std::string>* errors) {
107
107
108
108
namespace options_parser {
109
109
110
+ // Explicitly access the singelton instances in their dependancy order.
111
+ // This was moved here to workaround a compiler bug.
112
+ // Refs: https://github.com/nodejs/node/issues/25593
113
+
114
+ #if HAVE_INSPECTOR
115
+ const DebugOptionsParser DebugOptionsParser::instance;
116
+ #endif // HAVE_INSPECTOR
117
+
118
+ const EnvironmentOptionsParser EnvironmentOptionsParser::instance;
119
+
120
+ const PerIsolateOptionsParser PerIsolateOptionsParser::instance;
121
+
122
+ const PerProcessOptionsParser PerProcessOptionsParser::instance;
123
+
110
124
// XXX: If you add an option here, please also add it to doc/node.1 and
111
125
// doc/api/cli.md
112
126
// TODO(addaleax): Make that unnecessary.
@@ -143,10 +157,6 @@ DebugOptionsParser::DebugOptionsParser() {
143
157
AddAlias (" --debug-brk=" , { " --inspect-port" , " --debug-brk" });
144
158
}
145
159
146
- #if HAVE_INSPECTOR
147
- const DebugOptionsParser DebugOptionsParser::instance;
148
- #endif // HAVE_INSPECTOR
149
-
150
160
EnvironmentOptionsParser::EnvironmentOptionsParser () {
151
161
AddOption (" --experimental-modules" ,
152
162
" experimental ES Module support and caching modules" ,
@@ -282,8 +292,6 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
282
292
#endif // HAVE_INSPECTOR
283
293
}
284
294
285
- const EnvironmentOptionsParser EnvironmentOptionsParser::instance;
286
-
287
295
PerIsolateOptionsParser::PerIsolateOptionsParser () {
288
296
AddOption (" --track-heap-objects" ,
289
297
" track heap object allocations for heap snapshots" ,
@@ -341,8 +349,6 @@ PerIsolateOptionsParser::PerIsolateOptionsParser() {
341
349
&PerIsolateOptions::get_per_env_options);
342
350
}
343
351
344
- const PerIsolateOptionsParser PerIsolateOptionsParser::instance;
345
-
346
352
PerProcessOptionsParser::PerProcessOptionsParser () {
347
353
AddOption (" --title" ,
348
354
" the process title to use on startup" ,
@@ -449,8 +455,6 @@ PerProcessOptionsParser::PerProcessOptionsParser() {
449
455
&PerProcessOptions::get_per_isolate_options);
450
456
}
451
457
452
- const PerProcessOptionsParser PerProcessOptionsParser::instance;
453
-
454
458
inline std::string RemoveBrackets (const std::string& host) {
455
459
if (!host.empty () && host.front () == ' [' && host.back () == ' ]' )
456
460
return host.substr (1 , host.size () - 2 );
0 commit comments