const char *const func_name = "std::terminate()";
scoped_restore_current_program_space restore_pspace;
- scoped_restore_current_language save_language;
- set_language (language_cplus);
+ scoped_restore_current_language save_language (language_cplus);
for (struct program_space *pspace : program_spaces)
{
{
}
+scoped_restore_current_language::scoped_restore_current_language
+ (enum language lang)
+ : scoped_restore_current_language ()
+{
+ set_language (lang);
+}
+
scoped_restore_current_language::~scoped_restore_current_language ()
{
/* If both are NULL, then that means dont_restore was called. */
public:
scoped_restore_current_language ();
+
+ /* Set the current language as well. */
+ explicit scoped_restore_current_language (enum language lang);
+
~scoped_restore_current_language ();
scoped_restore_current_language (scoped_restore_current_language &&other)
std::optional<scoped_restore_current_language> lang_saver;
if (parse->language != language_unknown)
- {
- lang_saver.emplace ();
- set_language (parse->language);
- }
+ lang_saver.emplace (parse->language);
current_context = parse;
expression_context_pc, flags, *stringptr,
completer != nullptr, tracker);
- scoped_restore_current_language lang_saver;
- set_language (lang->la_language);
+ scoped_restore_current_language lang_saver (lang->la_language);
try
{
{
std::optional<scoped_restore_current_language> lang_saver;
if (current_language->la_language != lang)
- {
- lang_saver.emplace ();
- set_language (lang);
- }
+ lang_saver.emplace (lang);
return parse_expression (string);
}
But use only real languages, not placeholders. */
if (symtab->language () != language_unknown)
{
- scoped_restore_current_language save_lang;
- set_language (symtab->language ());
+ scoped_restore_current_language save_lang (symtab->language ());
dump_symtab_1 (symtab, outfile);
}
else