Support import if single items.
This commit is contained in:
parent
99b8086ad2
commit
97f3a01dc5
|
|
@ -82,15 +82,32 @@ void pform_package_import(const struct vlltype&, const char*pkg_name, const char
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
perm_string use_ident;
|
|
||||||
if (ident) use_ident = lex_strings.make(ident);
|
|
||||||
|
|
||||||
PPackage*pkg = pcur->second;
|
PPackage*pkg = pcur->second;
|
||||||
LexicalScope*scope = pform_peek_scope();
|
LexicalScope*scope = pform_peek_scope();
|
||||||
|
|
||||||
for (map<perm_string,LexicalScope::param_expr_t>::const_iterator cur = pkg->parameters.begin()
|
if (ident) {
|
||||||
; cur != pkg->parameters.end() ; ++cur) {
|
perm_string use_ident = lex_strings.make(ident);
|
||||||
|
|
||||||
|
map<perm_string,LexicalScope::param_expr_t>::const_iterator cur
|
||||||
|
= pkg->parameters.find(use_ident);
|
||||||
|
if (cur == pkg->parameters.end()) {
|
||||||
|
ostringstream msg;
|
||||||
|
msg << "Symbol " << use_ident
|
||||||
|
<< " not found in package " << pcur->first << "." << ends;
|
||||||
|
VLerror(msg.str().c_str());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
scope->parameters[cur->first] = cur->second;
|
scope->parameters[cur->first] = cur->second;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// Handle the pkg::* case by importing everything from
|
||||||
|
// the package.
|
||||||
|
for (map<perm_string,LexicalScope::param_expr_t>::const_iterator cur = pkg->parameters.begin()
|
||||||
|
; cur != pkg->parameters.end() ; ++cur) {
|
||||||
|
|
||||||
|
scope->parameters[cur->first] = cur->second;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue