diff options
Diffstat (limited to 'deps/v8/src/torque/server-data.cc')
-rw-r--r-- | deps/v8/src/torque/server-data.cc | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/deps/v8/src/torque/server-data.cc b/deps/v8/src/torque/server-data.cc index 2dc92a4960..2911a2b4cd 100644 --- a/deps/v8/src/torque/server-data.cc +++ b/deps/v8/src/torque/server-data.cc @@ -4,6 +4,9 @@ #include "src/torque/server-data.h" +#include "src/torque/declarable.h" +#include "src/torque/implementation-visitor.h" + namespace v8 { namespace internal { namespace torque { @@ -17,7 +20,12 @@ void LanguageServerData::AddDefinition(SourcePosition token, base::Optional<SourcePosition> LanguageServerData::FindDefinition( SourceId source, LineAndColumn pos) { - for (const DefinitionMapping& mapping : Get().definitions_map_.at(source)) { + if (!source.IsValid()) return base::nullopt; + + auto iter = Get().definitions_map_.find(source); + if (iter == Get().definitions_map_.end()) return base::nullopt; + + for (const DefinitionMapping& mapping : iter->second) { SourcePosition current = mapping.first; if (current.Contains(pos)) return mapping.second; } @@ -25,6 +33,20 @@ base::Optional<SourcePosition> LanguageServerData::FindDefinition( return base::nullopt; } +void LanguageServerData::PrepareAllDeclarableSymbols() { + const std::vector<std::unique_ptr<Declarable>>& all_declarables = + global_context_->declarables_; + + for (const auto& declarable : all_declarables) { + // Class field accessors and implicit specializations are + // auto-generated and should not show up. + if (!declarable->IsUserDefined()) continue; + + SourceId source = declarable->Position().source; + symbols_map_[source].push_back(declarable.get()); + } +} + } // namespace torque } // namespace internal } // namespace v8 |