[all-commits] [llvm/llvm-project] 4317ee: [clangd] Make use of preamble bounds from the patc...

kadir çetinkaya via All-commits all-commits at lists.llvm.org
Wed Jun 17 09:34:39 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 4317ee27bd64759b922438659f5b6883c0fbe404
      https://github.com/llvm/llvm-project/commit/4317ee27bd64759b922438659f5b6883c0fbe404
  Author: Kadir Cetinkaya <kadircet at google.com>
  Date:   2020-06-17 (Wed, 17 Jun 2020)

  Changed paths:
    M clang-tools-extra/clangd/ParsedAST.cpp
    M clang-tools-extra/clangd/Preamble.cpp
    M clang-tools-extra/clangd/Preamble.h
    M clang-tools-extra/clangd/unittests/ParsedASTTests.cpp
    M clang-tools-extra/clangd/unittests/PreambleTests.cpp

  Log Message:
  -----------
  [clangd] Make use of preamble bounds from the patch inside ReplayPreamble

Summary:
Clangd was using bounds from the stale preamble, which might result in
crashes. For example:
```
 #include "a.h"
 #include "b.h" // this line is newly inserted
 #include "c.h"
```

PreambleBounds for the baseline only contains first two lines, but
ReplayPreamble logic contains an include from the third line. This would
result in a crash as we only lex preamble part of the current file
during ReplayPreamble.

This patch adds a `preambleBounds` method to PreamblePatch, which can be
used to figure out preamble bounds for the current version of the file.
Then uses it when attaching ReplayPreamble, so that it can lex the
up-to-date preamble region.

Reviewers: sammccall

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D81964




More information about the All-commits mailing list