hokein added a comment.

In D147686#4248330 <https://reviews.llvm.org/D147686#4248330>, @kadircet wrote:

> could you give some more details about the crash, so that we actually now 
> where to fix it? e.g. is it token buffers missing the spelled token at that 
> offset somehow ? or is it AST reporting a weird source locations for 
> user-defined literals and we need to do some sort of post processing (or 
> maybe it should've been filtered all together). as doing it like this will 
> imply us completely eating such diagnostics.

sorry, for not giving more details. See the other comment.



================
Comment at: clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp:450
+    void test() {
+      1s;
+    }
----------------
here is the `UserDefinedLiteral` AST node:

```
`-UserDefinedLiteral 0x5556682e4500 <line:46:3> 'int'
      |-ImplicitCastExpr 0x5556682e44e8 <col:4> 'int (*)(unsigned long long)' 
<FunctionToPointerDecay>
      | `-DeclRefExpr 0x5556682e44a0 <col:4> 'int (unsigned long long)' lvalue 
Function 0x5556682e4290 'operator""s' 'int (unsigned long long)'
      `-IntegerLiteral 0x5556682e4480 <col:3> 'unsigned long long' 1
```

The source location of the `UserDefinedLiteral` points to `^1s`, while the 
source location of the inner `DeclRefExpr` points to `1^s` (1 offset shift). In 
the token buffer, we only have a single spelled token `1s`, thus 
`AST.getTokens().spelledTokenAt` can not find any token that starts at `1^s` 
source loc.


================
Comment at: clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp:458
+  auto Findings = computeIncludeCleanerFindings(AST);
+  EXPECT_THAT(Findings.MissingIncludes, IsEmpty());
+}
----------------
T


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D147686/new/

https://reviews.llvm.org/D147686

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to