mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 17:17:44 +00:00
LibIDL: Avoid unnecessary copies of imported paths
This commit is contained in:
parent
fe9e09fa3a
commit
72756f09f4
1 changed files with 15 additions and 13 deletions
|
@ -942,21 +942,23 @@ Interface& Parser::parse()
|
||||||
top_level_resolved_imports().set(this_module, &interface);
|
top_level_resolved_imports().set(this_module, &interface);
|
||||||
|
|
||||||
Vector<Interface&> imports;
|
Vector<Interface&> imports;
|
||||||
HashTable<DeprecatedString> required_imported_paths;
|
{
|
||||||
while (lexer.consume_specific("#import")) {
|
HashTable<DeprecatedString> required_imported_paths;
|
||||||
consume_whitespace();
|
while (lexer.consume_specific("#import")) {
|
||||||
assert_specific('<');
|
consume_whitespace();
|
||||||
auto path = lexer.consume_until('>');
|
assert_specific('<');
|
||||||
lexer.ignore();
|
auto path = lexer.consume_until('>');
|
||||||
auto maybe_interface = resolve_import(path);
|
lexer.ignore();
|
||||||
if (maybe_interface.has_value()) {
|
auto maybe_interface = resolve_import(path);
|
||||||
for (auto& entry : maybe_interface.value().required_imported_paths)
|
if (maybe_interface.has_value()) {
|
||||||
required_imported_paths.set(entry);
|
for (auto& entry : maybe_interface.value().required_imported_paths)
|
||||||
imports.append(maybe_interface.release_value());
|
required_imported_paths.set(entry);
|
||||||
|
imports.append(maybe_interface.release_value());
|
||||||
|
}
|
||||||
|
consume_whitespace();
|
||||||
}
|
}
|
||||||
consume_whitespace();
|
interface.required_imported_paths = move(required_imported_paths);
|
||||||
}
|
}
|
||||||
interface.required_imported_paths = required_imported_paths;
|
|
||||||
|
|
||||||
parse_non_interface_entities(true, interface);
|
parse_non_interface_entities(true, interface);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue