| 84 | } |
| 85 | |
| 86 | std::optional<SourceLocation> parsePosition( |
| 87 | FileRepository const& _fileRepository, |
| 88 | std::string const& _sourceUnitName, |
| 89 | Json const& _position |
| 90 | ) |
| 91 | { |
| 92 | if (!_fileRepository.sourceUnits().count(_sourceUnitName)) |
| 93 | return std::nullopt; |
| 94 | |
| 95 | if (std::optional<LineColumn> lineColumn = parseLineColumn(_position)) |
| 96 | if (std::optional<int> const offset = CharStream::translateLineColumnToPosition( |
| 97 | _fileRepository.sourceUnits().at(_sourceUnitName), |
| 98 | *lineColumn |
| 99 | )) |
| 100 | return SourceLocation{*offset, *offset, std::make_shared<std::string>(_sourceUnitName)}; |
| 101 | return std::nullopt; |
| 102 | } |
| 103 | |
| 104 | std::optional<SourceLocation> parseRange(FileRepository const& _fileRepository, std::string const& _sourceUnitName, Json const& _range) |
| 105 | { |
no test coverage detected