@@ -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" ,
@@ -275,8 +285,6 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
275
285
#endif // HAVE_INSPECTOR
276
286
}
277
287
278
- const EnvironmentOptionsParser EnvironmentOptionsParser::instance;
279
-
280
288
PerIsolateOptionsParser::PerIsolateOptionsParser () {
281
289
AddOption (" --track-heap-objects" ,
282
290
" track heap object allocations for heap snapshots" ,
@@ -334,8 +342,6 @@ PerIsolateOptionsParser::PerIsolateOptionsParser() {
334
342
&PerIsolateOptions::get_per_env_options);
335
343
}
336
344
337
- const PerIsolateOptionsParser PerIsolateOptionsParser::instance;
338
-
339
345
PerProcessOptionsParser::PerProcessOptionsParser () {
340
346
AddOption (" --title" ,
341
347
" the process title to use on startup" ,
@@ -442,8 +448,6 @@ PerProcessOptionsParser::PerProcessOptionsParser() {
442
448
&PerProcessOptions::get_per_isolate_options);
443
449
}
444
450
445
- const PerProcessOptionsParser PerProcessOptionsParser::instance;
446
-
447
451
inline std::string RemoveBrackets (const std::string& host) {
448
452
if (!host.empty () && host.front () == ' [' && host.back () == ' ]' )
449
453
return host.substr (1 , host.size () - 2 );
0 commit comments