Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[clangd] Add test for GH75115 #75116

Merged
merged 1 commit into from
Dec 13, 2023

Conversation

mizvekov
Copy link
Contributor

Add test for #75115

@mizvekov mizvekov self-assigned this Dec 11, 2023
@llvmbot llvmbot added the clangd label Dec 11, 2023
@llvmbot
Copy link
Collaborator

llvmbot commented Dec 11, 2023

@llvm/pr-subscribers-clangd

Author: Matheus Izvekov (mizvekov)

Changes

Add test for #75115


Full diff: https://github.com/llvm/llvm-project/pull/75116.diff

1 Files Affected:

  • (added) clang-tools-extra/clangd/test/GH75115.test (+12)
diff --git a/clang-tools-extra/clangd/test/GH75115.test b/clang-tools-extra/clangd/test/GH75115.test
new file mode 100644
index 00000000000000..bf6870c714e643
--- /dev/null
+++ b/clang-tools-extra/clangd/test/GH75115.test
@@ -0,0 +1,12 @@
+// RUN: rm -rf %t.dir && mkdir -p %t.dir
+// RUN: echo '[{"directory": "%/t.dir", "command": "clang --target=x86_64-pc-windows-msvc -x c bug.test", "file": "bug.test"}]' > %t.dir/compile_commands.json
+// RUN: not clangd -enable-config=0 --compile-commands-dir=%t.dir -check=%s 2>&1 | FileCheck -strict-whitespace %s
+
+// FIXME: Crashes
+
+// CHECK: Building preamble...
+// CHECK-NEXT: Built preamble
+// CHECK-NEXT: Indexing headers...
+// CHECK-NEXT: Assertion failed: !KeyInfoT::isEqual(Val, EmptyKey) && !KeyInfoT::isEqual(Val, TombstoneKey) && "Empty/Tombstone value shouldn't be inserted into map!"
+
+#define assert

@mizvekov mizvekov force-pushed the users/mizvekov/bug/clangd-msvc-assert-crash-test branch 3 times, most recently from a3971a6 to 7c18785 Compare December 12, 2023 01:57
@mizvekov mizvekov force-pushed the users/mizvekov/bug/clangd-msvc-assert-crash-test branch from 7c18785 to 1c9690d Compare December 13, 2023 04:40
@mizvekov mizvekov merged commit 04580ed into main Dec 13, 2023
3 of 4 checks passed
@mizvekov mizvekov deleted the users/mizvekov/bug/clangd-msvc-assert-crash-test branch December 13, 2023 04:50
@nico
Copy link
Contributor

nico commented Dec 13, 2023

The test is failing on our bots:

https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket/8761812675757485889/+/u/package_clang/stdout?format=raw

FAIL: Clangd :: GH75115.test (21263 of 79608)
 ******************** TEST 'Clangd :: GH75115.test' FAILED ********************
 Exit Code: 1
 
 Command Output (stderr):
 --
 RUN: at line 1: rm -rf /b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/tools/clang/tools/extra/clangd/test/Output/GH75115.test.tmp.dir && mkdir -p /b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/tools/clang/tools/extra/clangd/test/Output/GH75115.test.tmp.dir
 + rm -rf /b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/tools/clang/tools/extra/clangd/test/Output/GH75115.test.tmp.dir
 + mkdir -p /b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/tools/clang/tools/extra/clangd/test/Output/GH75115.test.tmp.dir
 RUN: at line 2: echo '[{"directory": "/b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/tools/clang/tools/extra/clangd/test/Output/GH75115.test.tmp.dir", "command": "clang --target=x86_64-pc-windows-msvc -x c GH75115.test", "file": "GH75115.test"}]' > /b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/tools/clang/tools/extra/clangd/test/Output/GH75115.test.tmp.dir/compile_commands.json
 + echo '[{"directory": "/b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/tools/clang/tools/extra/clangd/test/Output/GH75115.test.tmp.dir", "command": "clang --target=x86_64-pc-windows-msvc -x c GH75115.test", "file": "GH75115.test"}]'
 RUN: at line 3: not --crash clangd -enable-config=0 --compile-commands-dir=/b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/tools/clang/tools/extra/clangd/test/Output/GH75115.test.tmp.dir -check=/b/s/w/ir/cache/builder/src/third_party/llvm/clang-tools-extra/clangd/test/GH75115.test 2>&1 | /b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/FileCheck -strict-whitespace /b/s/w/ir/cache/builder/src/third_party/llvm/clang-tools-extra/clangd/test/GH75115.test
 + /b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/FileCheck -strict-whitespace /b/s/w/ir/cache/builder/src/third_party/llvm/clang-tools-extra/clangd/test/GH75115.test
 + not --crash clangd -enable-config=0 --compile-commands-dir=/b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/tools/clang/tools/extra/clangd/test/Output/GH75115.test.tmp.dir -check=/b/s/w/ir/cache/builder/src/third_party/llvm/clang-tools-extra/clangd/test/GH75115.test
 /b/s/w/ir/cache/builder/src/third_party/llvm/clang-tools-extra/clangd/test/GH75115.test:10:16: error: CHECK-NEXT: expected string not found in input
 // CHECK-NEXT: !KeyInfoT::isEqual(Val, EmptyKey) && !KeyInfoT::isEqual(Val, TombstoneKey) && "Empty/Tombstone value shouldn't be inserted into map!"
                ^
 <stdin>:18:36: note: scanning from here
 I[09:48:58.403] Indexing headers...
                                    ^
 
 Input file: <stdin>
 Check file: /b/s/w/ir/cache/builder/src/third_party/llvm/clang-tools-extra/clangd/test/GH75115.test
 
 -dump-input=help explains the following input dump.
 
 Input was:
 <<<<<<
          .
          .
          .
         13: I[09:48:58.390] Compile command inferred from GH75115.test is: [/b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/tools/clang/tools/extra/clangd/test/Output/GH75115.test.tmp.dir] /b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/bin/clang --target=x86_64-pc-windows-msvc -x c-header -resource-dir=/b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/lib/clang/18 -- /b/s/w/ir/cache/builder/src/third_party/llvm/clang-tools-extra/clangd/test/GH75115.test 
         14: I[09:48:58.390] Parsing command... 
         15: I[09:48:58.391] internal (cc1) args are: -cc1 -triple x86_64-pc-windows-msvc19.33.0 -fsyntax-only -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name GH75115.test -mrelocation-model pic -pic-level 2 -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -fdebug-compilation-dir=/b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/tools/clang/tools/extra/clangd/test/Output/GH75115.test.tmp.dir -fcoverage-compilation-dir=/b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/tools/clang/tools/extra/clangd/test/Output/GH75115.test.tmp.dir -resource-dir /b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/lib/clang/18 -internal-isystem /b/s/w/ir/cache/builder/src/third_party/llvm-build/Release+Asserts/lib/clang/18/include -ferror-limit 19 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.33 -fdelayed-template-parsing -no-round-trip-args -faddrsig -x c-header /b/s/w/ir/cache/builder/src/third_party/llvm/clang-tools-extra/clangd/test/GH75115.test 
         16: I[09:48:58.392] Building preamble... 
         17: I[09:48:58.403] Built preamble of size 220420 for file /b/s/w/ir/cache/builder/src/third_party/llvm/clang-tools-extra/clangd/test/GH75115.test version null in 0.01 seconds 
         18: I[09:48:58.403] Indexing headers... 
 next:10                                        X error: no match found
         19: I[09:48:58.406] Building AST... 
 next:10     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         20: I[09:48:58.413] Indexing AST... 
 next:10     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         21: I[09:48:58.414] Building inlay hints 
 next:10     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         22: I[09:48:58.414] Building semantic highlighting 
 next:10     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         23: I[09:48:58.414] Testing features at each token (may be slow in large files) 
 next:10     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         24: I[09:48:58.415] All checks completed, 0 errors 
 next:10     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 >>>>>>
 
 --
 
 ********************
 Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. 
 ********************
 Failed Tests (1):
   Clangd :: GH75115.test

Does the output make sense to you?

@nico
Copy link
Contributor

nico commented Dec 13, 2023

Aha, it assumes that the build is with assertions enabled, which isn't always true. (Do a release build, or a debug build with -DLLVM_ENABLE_ASSERTIONS=NO.)

How about just reverting this and landing the test together with the fix?

nico added a commit that referenced this pull request Dec 13, 2023
This reverts commit 04580ed.

The test fails if asserts are disabled, see
#75116 (comment)
and the next comment.
@nico
Copy link
Contributor

nico commented Dec 13, 2023

I've reverted this for now in d860480.

@mizvekov
Copy link
Contributor Author

I see, thanks for pointing it out.

I wonder if we support, or otherwise if we should support, a lit requires marker for this.

@nico
Copy link
Contributor

nico commented Dec 14, 2023

Seems like unnecessary complexity to me fwiw. So far, we've put tests for things that work in the test suite and put a record of things that assert in the bug tracker :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants