d: Cache generated import declarations in a hash_map
authorIain Buclaw <ibuclaw@gdcproject.org>
Fri, 11 Mar 2022 22:19:14 +0000 (23:19 +0100)
committerIain Buclaw <ibuclaw@gdcproject.org>
Fri, 11 Mar 2022 22:34:59 +0000 (23:34 +0100)
commit42d9ff3ac845478b7fca20f04ce392204a2d3af9
tree1ac9324cf30c4fad77cb8e77ebb78bf5afcfa6ad
parent7a6ba7c7cb6ff5ac9bbcc747bd5fad957b78fa0a
d: Cache generated import declarations in a hash_map

Originally, these were cached in the front-end AST node field `isym'.
However, this field is due to be removed in the future.

gcc/d/ChangeLog:

* imports.cc (imported_decls): Define.
(class ImportVisitor): Add result_ field.
(ImportVisitor::result): New method.
(ImportVisitor::visit (Module *)): Store decl to result_.
(ImportVisitor::visit (Import *)): Likewise.
(ImportVisitor::visit (AliasDeclaration *)): Don't cache decl in
front-end AST node.
(ImportVisitor::visit (OverDeclaration *)): Likewise.
(ImportVisitor::visit (FuncDeclaration *)): Likewise.
(ImportVisitor::visit (Declaration *)): Likewise.
(build_import_decl): Use imported_decls to cache and lookup built
declarations.
gcc/d/imports.cc