v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
server-data.cc
Go to the documentation of this file.
1// Copyright 2019 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
6
7#include <optional>
8
9#include "src/base/macros.h"
12
14
15namespace v8::internal::torque {
16
18 SourcePosition definition) {
19 Get().definitions_map_[token.source].emplace_back(token, definition);
20}
21
22std::optional<SourcePosition> LanguageServerData::FindDefinition(
23 SourceId source, LineAndColumn pos) {
24 if (!source.IsValid()) return std::nullopt;
25
26 auto iter = Get().definitions_map_.find(source);
27 if (iter == Get().definitions_map_.end()) return std::nullopt;
28
29 for (const DefinitionMapping& mapping : iter->second) {
30 SourcePosition current = mapping.first;
31 if (current.Contains(pos)) return mapping.second;
32 }
33
34 return std::nullopt;
35}
36
38 const std::vector<std::unique_ptr<Declarable>>& all_declarables =
39 global_context_->declarables_;
40
41 for (const auto& declarable : all_declarables) {
42 // Class field accessors and implicit specializations are
43 // auto-generated and should not show up.
44 if (!declarable->IsUserDefined()) continue;
45
46 SourceId source = declarable->Position().source;
47 symbols_map_[source].push_back(declarable.get());
48 }
49}
50
51} // namespace v8::internal::torque
SourcePosition pos
static VarType & Get()
Definition contextual.h:64
static V8_EXPORT_PRIVATE std::optional< SourcePosition > FindDefinition(SourceId source, LineAndColumn pos)
static V8_EXPORT_PRIVATE void AddDefinition(SourcePosition token, SourcePosition definition)
std::unique_ptr< GlobalContext > global_context_
Definition server-data.h:67
#define EXPORT_CONTEXTUAL_VARIABLE(VarName)
Definition contextual.h:94
InstructionOperand source
std::pair< SourcePosition, SourcePosition > DefinitionMapping
Definition server-data.h:22