28 error() <<
"unique namespace not supported yet" <<
eom;
34 std::string identifier=
37 symbol_table_baset::symbolst::const_iterator it =
45 error() <<
"namespace alias '" << final_name <<
"' previously declared\n"
46 <<
"location of previous declaration: " << it->second.location
51 if(it->second.type.id()!=ID_namespace)
54 error() <<
"namespace '" << final_name <<
"' previously declared\n"
55 <<
"location of previous declaration: " << it->second.location
66 symbol.base_name=final_name;
73 error() <<
"cpp_typecheckt::convert_namespace: symbol_table.move() failed"
90 for(
auto &item : namespace_spec.
items())
symbol_table_baset & symbol_table
const itemst & items() const
const irep_idt & get_namespace() const
cpp_scopet & new_namespace(const irep_idt &new_scope_name)
cpp_scopet & current_scope()
cpp_scopet & set_scope(const irep_idt &identifier)
void add_using_scope(cpp_scopet &other)
cpp_scopet & resolve_namespace(const cpp_namet &cpp_name)
void convert(cpp_linkage_spect &)
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
const source_locationt & source_location() const
source_locationt source_location
const symbolst & symbols
Read-only field, used to look up symbols given their names.
virtual std::pair< symbolt &, bool > insert(symbolt symbol)=0
Move or copy a new symbol to the symbol table.
The type of an expression, extends irept.
C++ Language Type Checking.
const std::string & id2string(const irep_idt &d)