[clangd] Remove inline Specifier for DefineOutline Tweak
`inline` specifiers should be removed from from the function declaration and the newly-created implementation. For example, take the following (working) code: ```cpp // foo.hpp struct A { inline void foo() { std::cout << "hello world\n" << std::flush; } }; // foo.cpp #include "foo.hpp" // main.cpp #include "foo.hpp" int main() { A a; a.foo(); return 0; } // compile: clang++ -std=c++20 main.cpp foo.cpp -o main ``` After applying the tweak: ``` // foo.hpp struct A { inline void foo(); }; // foo.cpp #include "foo.hpp" inline void A::foo() { std::cout << "hello world\n" << std::flush; } // main.cpp #include "foo.hpp" int main() { A a; a.foo(); return 0; } // compile: clang++ -std=c++20 main.cpp foo.cpp -o main ``` We get a link error, as expected: ``` /usr/bin/ld: /tmp/main-4c5d99.o: in function `main': main.cpp:(.text+0x14): undefined reference to `A::foo()' clang: error: linker command failed with exit code 1 (use -v to see invocation) ``` This revision removes these specifiers from both the header and the source file. This was identified in Github issue llvm/llvm-project#61295. Reviewed By: kadircet Differential Revision: https://reviews.llvm.org/D151294
Loading
Please sign in to comment