aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/torque/server-data.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/torque/server-data.cc')
-rw-r--r--deps/v8/src/torque/server-data.cc24
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