Previously, get_default_interpreter gave all intermediate levels the
same id as that of the new Bottom level.
However, since issue 3225, there can be more than one Bottom in one
hierarchy since a Bottom context (defined by not having a
\defaultchild) can still have children contexts (of any type it
\accepts even while it would not create them implicitly).
So it is a bad idea to give implicitly created contexts the same id as
any explicitly named context.
warning (_f ("cannot find or create: `%s'", name.c_str ()));
t = unsmob_context_def (this->definition_);
}
-
- Context *tg = create_context (t, context_id, SCM_EOL);
- return tg->get_default_interpreter (context_id);
+ if (scm_is_symbol (t->get_default_child (SCM_EOL)))
+ {
+ Context *tg = create_context (t, "\\new", SCM_EOL);
+ return tg->get_default_interpreter (context_id);
+ }
+ return create_context (t, context_id, SCM_EOL);
}
else if (!context_id.empty () && context_id != id_string ())
{