mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 19:46:06 +00:00

This reapplies f034044ad94d6f7ccec13d89f08acac257ed28bb after it was reverted by 687396b5f4ba0713d103ebd172b308e92eb930cc due to a test failure in clang-doc. The test in question declares a partial specialization of a function template, as well as an explicit specialization of the same function template. Both declarations are now set as invalid, meaning neither is emitted by clang-doc. Since this is the sole test of function template specializations in clang-doc, I presume the intent is for the partial specialization to actually be the primary template. Doing so results in the expected output.
77 lines
2.7 KiB
C++
77 lines
2.7 KiB
C++
// RUN: rm -rf %t
|
|
// RUN: mkdir %t
|
|
// RUN: echo "" > %t/compile_flags.txt
|
|
// RUN: cp "%s" "%t/test.cpp"
|
|
// RUN: clang-doc --doxygen --executor=standalone -p %t %t/test.cpp -output=%t/docs
|
|
// RUN: cat %t/docs/index.yaml | FileCheck %s --check-prefix=CHECK
|
|
// RUN: rm -rf %t
|
|
|
|
template<typename T, int U = 1>
|
|
void function(T x) {}
|
|
|
|
template<>
|
|
void function<bool, 0>(bool x) {}
|
|
|
|
template<class... T>
|
|
void ParamPackFunction(T... args);
|
|
|
|
// CHECK: ---
|
|
// CHECK-NEXT: USR: '{{([0-9A-F]{40})}}'
|
|
// CHECK-NEXT: ChildFunctions:
|
|
// CHECK-NEXT: - USR: '{{([0-9A-F]{40})}}'
|
|
// CHECK-NEXT: Name: 'function'
|
|
// CHECK-NEXT: DefLocation:
|
|
// CHECK-NEXT: LineNumber: 10
|
|
// CHECK-NEXT: Filename: '{{.*}}'
|
|
// CHECK-NEXT: Params:
|
|
// CHECK-NEXT: - Type:
|
|
// CHECK-NEXT: Name: 'T'
|
|
// CHECK-NEXT: QualName: 'T'
|
|
// CHECK-NEXT: Name: 'x'
|
|
// CHECK-NEXT: ReturnType:
|
|
// CHECK-NEXT: Type:
|
|
// CHECK-NEXT: Name: 'void'
|
|
// CHECK-NEXT: QualName: 'void'
|
|
// CHECK-NEXT: Template:
|
|
// CHECK-NEXT: Params:
|
|
// CHECK-NEXT: - Contents: 'typename T'
|
|
// CHECK-NEXT: - Contents: 'int U = 1'
|
|
// CHECK-NEXT: - USR: '{{([0-9A-F]{40})}}'
|
|
// CHECK-NEXT: Name: 'function'
|
|
// CHECK-NEXT: DefLocation:
|
|
// CHECK-NEXT: LineNumber: 12
|
|
// CHECK-NEXT: Filename: '{{.*}}'
|
|
// CHECK-NEXT: Params:
|
|
// CHECK-NEXT: - Type:
|
|
// CHECK-NEXT: Name: '_Bool'
|
|
// CHECK-NEXT: QualName: '_Bool'
|
|
// CHECK-NEXT: Name: 'x'
|
|
// CHECK-NEXT: ReturnType:
|
|
// CHECK-NEXT: Type:
|
|
// CHECK-NEXT: Name: 'void'
|
|
// CHECK-NEXT: QualName: 'void'
|
|
// CHECK-NEXT: Template:
|
|
// CHECK-NEXT: Specialization:
|
|
// CHECK-NEXT: SpecializationOf: '{{([0-9A-F]{40})}}'
|
|
// CHECK-NEXT: Params:
|
|
// CHECK-NEXT: - Contents: 'bool'
|
|
// CHECK-NEXT: - Contents: '0'
|
|
// CHECK-NEXT: - USR: '{{([0-9A-F]{40})}}'
|
|
// CHECK-NEXT: Name: 'ParamPackFunction'
|
|
// CHECK-NEXT: Location:
|
|
// CHECK-NEXT: - LineNumber: 16
|
|
// CHECK-NEXT: Filename: '{{.*}}'
|
|
// CHECK-NEXT: Params:
|
|
// CHECK-NEXT: - Type:
|
|
// CHECK-NEXT: Name: 'T...'
|
|
// CHECK-NEXT: QualName: 'T...'
|
|
// CHECK-NEXT: Name: 'args'
|
|
// CHECK-NEXT: ReturnType:
|
|
// CHECK-NEXT: Type:
|
|
// CHECK-NEXT: Name: 'void'
|
|
// CHECK-NEXT: QualName: 'void'
|
|
// CHECK-NEXT: Template:
|
|
// CHECK-NEXT: Params:
|
|
// CHECK-NEXT: - Contents: 'class... T'
|
|
// CHECK-NEXT: ...
|