// Copyright 2019 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_TORQUE_SERVER_DATA_H_ #define V8_TORQUE_SERVER_DATA_H_ #include #include #include "src/base/macros.h" #include "src/base/optional.h" #include "src/torque/source-positions.h" namespace v8 { namespace internal { namespace torque { // The definition of the token in the first element, can be found at the second. using DefinitionMapping = std::pair; // TODO(szuend): Support overlapping source positions when we start adding them. using Definitions = std::vector; using DefinitionsMap = std::map; // This contextual class holds all the necessary data to answer incoming // LSP requests. It is reset for each compilation step and all information // is calculated eagerly during compilation. class LanguageServerData : public ContextualClass { public: LanguageServerData() = default; V8_EXPORT_PRIVATE static void AddDefinition(SourcePosition token, SourcePosition definition); V8_EXPORT_PRIVATE static base::Optional FindDefinition( SourceId source, LineAndColumn pos); private: DefinitionsMap definitions_map_; }; } // namespace torque } // namespace internal } // namespace v8 #endif // V8_TORQUE_SERVER_DATA_H_