egorzhdan added inline comments.

================
Comment at: clang/test/Index/comment-lots-of-unknown-commands.c:3
 
+// XFAIL: *
+
----------------
aaronpuchert wrote:
> egorzhdan wrote:
> > gribozavr2 wrote:
> > > egorzhdan wrote:
> > > > This test was never properly passing. Because of the bug in string 
> > > > conversion, the printed comments contained the entire source file and 
> > > > not just the comments' text, which was enough to cause `// CHECK`-s in 
> > > > the test to succeed.
> > > > ```
> > > > // CHECK:         (CXComment_InlineCommand CommandName=[tel] 
> > > > RenderNormal HasTrailingNewline)
> > > > // CHECK:         (CXComment_InlineCommand CommandName=[n] RenderNormal 
> > > > HasTrailingNewline))
> > > > // CHECK:       (CXComment_VerbatimLine 
> > > > Text=[\n@Lo\n@il\n@tle\n@axt\n@ba\n@ust\n@ac\n@tpe\n@tpl\n@ctG\n@ru\n@m\n@tG\n@it\n@rh\n@G\n@rpc\n@el\n@er\n@w\n@eo\n@tx\n@oo\n@dD\n@dD\n*/\nvoid
> > > >  f();\n\n// CHECK:  CommentAST=[\n// CHECK:    
> > > > (CXComment_FullComment\n// CHECK:       (CXComment_Paragraph\n// CHECK: 
> > > >      ...
> > > > ```
> > > Please update the test to pass then. Here's the diff:
> > > 
> > > ```
> > > diff --git a/clang/test/Index/comment-lots-of-unknown-commands.c 
> > > b/clang/test/Index/comment-lots-of-unknown-commands.c
> > > index 41a03d394488..e1adcc150b1e 100644
> > > --- a/clang/test/Index/comment-lots-of-unknown-commands.c
> > > +++ b/clang/test/Index/comment-lots-of-unknown-commands.c
> > > @@ -1,6 +1,5 @@
> > >  // RUN: c-index-test -test-load-source-reparse 1 local %s | FileCheck %s
> > > 
> > > -// XFAIL: *
> > > 
> > >  // See PR 21254. We had too few bits to encode command IDs so if you 
> > > created
> > >  // enough of them the ID codes would wrap around. This test creates 
> > > commands up
> > > @@ -183,7 +182,7 @@ void f();
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[ei] RenderNormal 
> > > HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[oun] 
> > > RenderNormal HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[ou] RenderNormal 
> > > HasTrailingNewline)
> > > -// CHECK:         (CXComment_InlineCommand CommandName=[nl] RenderNormal 
> > > HasTrailingNewline)
> > > +// CHECK:         (CXComment_InlineCommand CommandName=[n] RenderNormal 
> > > HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[ien] 
> > > RenderNormal HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[fr] RenderNormal 
> > > HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[en] RenderNormal 
> > > HasTrailingNewline)
> > > @@ -204,7 +203,7 @@ void f();
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[fro] 
> > > RenderNormal HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[ast] 
> > > RenderNormal HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[ae] RenderNormal 
> > > HasTrailingNewline)
> > > -// CHECK:         (CXComment_InlineCommand CommandName=[nN] RenderNormal 
> > > HasTrailingNewline)
> > > +// CHECK:         (CXComment_InlineCommand CommandName=[n] RenderNormal 
> > > HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[pc] RenderNormal 
> > > HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[tae] 
> > > RenderNormal HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[ws] RenderNormal 
> > > HasTrailingNewline)
> > > @@ -268,10 +267,8 @@ void f();
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[an] RenderNormal 
> > > HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[de] RenderNormal 
> > > HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[tel] 
> > > RenderNormal HasTrailingNewline)
> > > -// CHECK:         (CXComment_InlineCommand CommandName=[nd] RenderNormal 
> > > HasTrailingNewline)
> > > -// CHECK:         (CXComment_InlineCommand CommandName=[dic] 
> > > RenderNormal HasTrailingNewline)
> > > +// CHECK:         (CXComment_InlineCommand CommandName=[n] RenderNormal 
> > > HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[Lo] RenderNormal 
> > > HasTrailingNewline)
> > > -// CHECK:         (CXComment_InlineCommand CommandName=[il] RenderNormal 
> > > HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[tle] 
> > > RenderNormal HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[axt] 
> > > RenderNormal HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[ba] RenderNormal 
> > > HasTrailingNewline)
> > > @@ -283,7 +280,6 @@ void f();
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[ru] RenderNormal 
> > > HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[m] RenderNormal 
> > > HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[tG] RenderNormal 
> > > HasTrailingNewline)
> > > -// CHECK:         (CXComment_InlineCommand CommandName=[it] RenderNormal 
> > > HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[rh] RenderNormal 
> > > HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[G] RenderNormal 
> > > HasTrailingNewline)
> > >  // CHECK:         (CXComment_InlineCommand CommandName=[rpc] 
> > > RenderNormal HasTrailingNewline)
> > > ```
> > > 
> > This doesn't look like the correct output though. I think the `CommandName` 
> > fields in the output should match the `@`-tags in the input (e.g. `@s` -> 
> > `(CXComment_InlineCommand CommandName=[s] RenderNormal 
> > HasTrailingNewline)`).
> > 
> > This looks like a bug in the logic this test is aiming to verify, not a 
> > mistake in the test itself. I unfortunately don't have enough context to 
> > fix the actual issue here, so I disabled the test instead. I'll also file 
> > an GitHub issue for this.
> They don't always match, because typo correction will change commands that 
> are close enough to an existing command. That's why e.g. `@nl` shows up as 
> `@n` in the AST. I remember that I had to change this test in D111190 because 
> introducing the new commands made the typo correction kick in for some of 
> these.
> 
> The proper fix for the test (see the comment below) should be to change the 
> commands here to differ enough from existing commands again. The corrections 
> to `@n` are likely caused by D125429, while `@dic` → `@dir`, `@il`/`@it` → 
> `@if` come from D111190.
> 
> I don't think we're going to gain additional commands, but we might also make 
> this "future-proof" by simply using long-enough sequences of random letters, 
> let's say 4 to have a reasonable number.
Thanks @aaronpuchert! I didn't realize this is caused by typo correction. I'll 
put up a patch to re-enable the test.


================
Comment at: clang/tools/libclang/CXString.cpp:81-82
 CXString createRef(StringRef String) {
+  if (!String.data())
+    return createNull();
+
----------------
aaronpuchert wrote:
> Does this actually happen or are we just doing this to be safe?
It's possible to get an empty StringRef with a nullptr data here. I initially 
skipped this `if` and got a test failure because of it: instead of returning a 
null CXString, this method was returning an empty CXString.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D133009

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

Reply via email to