mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-06 14:19:59 -05:00
44f29a4291
Swift compile commands need to have all source files in the module specified in the compile command or LSP systems will report errors on missing types that are defined in other source files in the same module. Issue: #25491
31 lines
1.8 KiB
CMake
31 lines
1.8 KiB
CMake
if(NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/compile_commands.json")
|
|
set(RunCMake_TEST_FAILED "compile_commands.json not generated")
|
|
return()
|
|
endif()
|
|
|
|
# The compile command for both files should contain all Swift source files in
|
|
# the module
|
|
set(expected_compile_commands
|
|
[==[^\[
|
|
{
|
|
"directory": ".*(/Tests/RunCMake/Swift/CompileCommands-build|\\\\Tests\\\\RunCMake\\\\Swift\\\\CompileCommands-build)",
|
|
"command": ".*swiftc .* (\\")?.*(/Tests/RunCMake/Swift/E.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\E.swift)(\\")? (\\")?.*(/Tests/RunCMake/Swift/L.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\L.swift)(\\")?",
|
|
"file": ".*(/Tests/RunCMake/Swift/E.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\E.swift)",
|
|
"output": "CMakeFiles/CompileCommandLib.dir/E.swift.o|CMakeFiles\\\\CompileCommandLib.dir\\\\E.swift.obj"
|
|
},
|
|
{
|
|
"directory": ".*(/Tests/RunCMake/Swift/CompileCommands-build|\\\\Tests\\\\RunCMake\\\\Swift\\\\CompileCommands-build)",
|
|
"command": ".*swiftc .* (\\")?.*(/Tests/RunCMake/Swift/E.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\E.swift)(\\")? (\\")?.*(/Tests/RunCMake/Swift/L.swift|\\\\Tests\\\\RunCMake\\\\Swift\\\\L.swift)(\\")?",
|
|
"file": ".*/Tests/RunCMake/Swift/L.swift",
|
|
"output": "CMakeFiles/CompileCommandLib.dir/L.swift.o|CMakeFiles\\\\CompileCommandLib.dir\\\\L.swift.obj"
|
|
}
|
|
]$]==]
|
|
)
|
|
|
|
file(READ "${RunCMake_TEST_BINARY_DIR}/compile_commands.json" compile_commands)
|
|
if(NOT compile_commands MATCHES "${expected_compile_commands}")
|
|
string(REPLACE "\n" "\n " expected_compile_commands_formatted "${expected_compile_commands}")
|
|
string(REPLACE "\n" "\n " compile_commands_formatted "${compile_commands}")
|
|
string(APPEND RunCMake_TEST_FAILED "Expected compile_commands.json to match:\n ${expected_compile_commands_formatted}\nActual compile_commands.json:\n ${compile_commands_formatted}\n")
|
|
endif()
|