llvm-capstone/clang/test/AST/ast-crash-doc-function-template.cpp
Shanzhi b12a742c20 [Clang][AST] Fix a crash on attaching doc comments (#78716)
This crash is basically caused by calling
`ASTContext::getRawCommentForDeclNoCacheImp` with its input arguments
`RepresentativeLocForDecl` and `CommentsInTheFile` refering to different
files. A reduced reproducer is provided in this patch.

After the source locations for instantiations of funtion template are
corrected in the commit 256a0b298c68b89688b80350b034daf2f7785b67, the
variable `CommitsInThisFile` in the function
`ASTContext::attachCommentsToJustParsedDecls` would refer to the source
file rather than the header file for implicit function template
instantiation. Therefore, in the first loop in
`ASTContext::attachCommentsToJustParsedDecls`, `D` should also be
adjusted for relevant scenarios like the second loop.

Fixes #67979
Fixes #68524
Fixes #70550

(cherry picked from commit 5f4ee5a2dfa97fe32ee62d1d67aa1413d5a059e6)
2024-02-08 15:59:07 -08:00

31 lines
514 B
C++

// RUN: rm -rf %t
// RUN: split-file %s %t
// RUN: %clang_cc1 -x c++ -Wdocumentation -fsyntax-only -ast-dump-all %t/t.cpp
//--- t.h
/// MyClass in the header file
class MyClass {
public:
template <typename T>
void Foo() const;
/// Bar
void Bar() const;
};
//--- t.cpp
#include "t.h"
/// MyClass::Bar: Foo<int>() is implicitly instantiated and called here.
void MyClass::Bar() const {
Foo<int>();
}
/// MyClass::Foo
template <typename T>
void MyClass::Foo() const {
}
// CHECK: TranslationUnitDecl