1717// case covers the full implementation of the template declaration and the
1818// instantiated specialization.
1919
20- // EMPTY: ClassTemplateDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> implicit [[RESOURCE]]
21- // EMPTY-NEXT: TemplateTypeParmDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> typename depth 0 index 0 element_type
22- // EMPTY-NEXT: ConceptSpecializationExpr 0x{{[0-9A-Fa-f]+ }} <<invalid sloc>> 'bool' Concept 0x{{[0-9A-Fa-f]+ }} '__is_typed_resource_element_compatible'
23- // EMPTY-NEXT: ImplicitConceptSpecializationDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc>
20+ // EMPTY: ClassTemplateDecl {{.*}} implicit [[RESOURCE]]
21+ // EMPTY-NEXT: TemplateTypeParmDecl {{.*}} typename depth 0 index 0 element_type
22+ // EMPTY-NEXT: ConceptSpecializationExpr {{.* }} 'bool' Concept {{.* }} '__is_typed_resource_element_compatible'
23+ // EMPTY-NEXT: ImplicitConceptSpecializationDecl
2424// EMPTY-NEXT: TemplateArgument type 'type-parameter-0-0'
25- // EMPTY-NEXT: TemplateTypeParmType 0x{{[0-9A-Fa-f]+}} 'type-parameter-0-0' dependent depth 0 index 0
26- // EMPTY-NEXT: TemplateTypeParm 0x{{[0-9A-Fa-f]+}} depth 0 index 0
25+ // EMPTY-NEXT: TemplateTypeParmType {{.*}} 'type-parameter-0-0' dependent depth 0 index 0
26+ // EMPTY-NEXT: TemplateTypeParm {{.*}} depth 0 index 0
2727// EMPTY-NEXT: TemplateArgument type 'element_type':'type-parameter-0-0'
28- // EMPTY-NEXT: TemplateTypeParmType 0x{{[0-9A-Fa-f]+}} 'element_type' dependent depth 0 index 0
29- // EMPTY-NEXT: TemplateTypeParm 0x{{[0-9A-Fa-f]+}} 'element_type'
30- // EMPTY-NEXT: CXXRecordDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> implicit <undeserialized declarations> class [[RESOURCE]]
31- // EMPTY-NEXT: FinalAttr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> Implicit final
28+ // EMPTY-NEXT: TemplateTypeParmType {{.*}} 'element_type' dependent depth 0 index 0
29+ // EMPTY-NEXT: TemplateTypeParm {{.*}} 'element_type'
30+ // EMPTY-NEXT: CXXRecordDecl {{.*}} implicit <undeserialized declarations> class [[RESOURCE]]
31+ // EMPTY-NEXT: FinalAttr {{.*}} Implicit final
3232
3333// There should be no more occurrences of the resource type
3434// EMPTY-NOT: {{[^[:alnum:]]}}[[RESOURCE]]
@@ -39,75 +39,75 @@ RESOURCE<float> Buffer;
3939
4040#endif
4141
42- // CHECK: ClassTemplateDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> implicit [[RESOURCE]]
43- // CHECK-NEXT: TemplateTypeParmDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> typename depth 0 index 0 element_type
44- // CHECK-NEXT: ConceptSpecializationExpr 0x{{[0-9A-Fa-f]+ }} <<invalid sloc>> 'bool' Concept 0x{{[0-9A-Fa-f]+}} '__is_typed_resource_element_compatible'
45- // CHECK-NEXT: ImplicitConceptSpecializationDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc>
42+ // CHECK: ClassTemplateDecl {{.*}} implicit [[RESOURCE]]
43+ // CHECK-NEXT: TemplateTypeParmDecl {{.*}} typename depth 0 index 0 element_type
44+ // CHECK-NEXT: ConceptSpecializationExpr {{.* }} 'bool' Concept {{.*}} '__is_typed_resource_element_compatible'
45+ // CHECK-NEXT: ImplicitConceptSpecializationDecl
4646// CHECK-NEXT: TemplateArgument type 'type-parameter-0-0'
47- // CHECK-NEXT: TemplateTypeParmType 0x{{[0-9A-Fa-f]+}} 'type-parameter-0-0' dependent depth 0 index 0
48- // CHECK-NEXT: TemplateTypeParm 0x{{[0-9A-Fa-f]+}} depth 0 index 0
47+ // CHECK-NEXT: TemplateTypeParmType {{.*}} 'type-parameter-0-0' dependent depth 0 index 0
48+ // CHECK-NEXT: TemplateTypeParm {{.*}} depth 0 index 0
4949// CHECK-NEXT: TemplateArgument type 'element_type':'type-parameter-0-0'
50- // CHECK-NEXT: TemplateTypeParmType 0x{{[0-9A-Fa-f]+}} 'element_type' dependent depth 0 index 0
51- // CHECK-NEXT: TemplateTypeParm 0x{{[0-9A-Fa-f]+}} 'element_type'
52- // CHECK-NEXT: CXXRecordDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> implicit class [[RESOURCE]] definition
50+ // CHECK-NEXT: TemplateTypeParmType {{.*}} 'element_type' dependent depth 0 index 0
51+ // CHECK-NEXT: TemplateTypeParm {{.*}} 'element_type'
52+ // CHECK-NEXT: CXXRecordDecl {{.*}} implicit class [[RESOURCE]] definition
5353
54- // CHECK: FinalAttr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> Implicit final
55- // CHECK-NEXT: FieldDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> implicit __handle '__hlsl_resource_t
54+ // CHECK: FinalAttr {{.*}} Implicit final
55+ // CHECK-NEXT: FieldDecl {{.*}} implicit __handle '__hlsl_resource_t
5656// CHECK-UAV-SAME{LITERAL}: [[hlsl::resource_class(UAV)]]
5757// CHECK-SAME{LITERAL}: [[hlsl::contained_type(element_type)]]
58- // CHECK-NEXT: HLSLResourceAttr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> Implicit TypedBuffer
58+ // CHECK-NEXT: HLSLResourceAttr {{.*}} Implicit TypedBuffer
5959
60- // CHECK: CXXMethodDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> operator[] 'const element_type &(unsigned int) const'
61- // CHECK-NEXT: ParmVarDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> Index 'unsigned int'
62- // CHECK-NEXT: CompoundStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
63- // CHECK-NEXT: ReturnStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
64- // CHECK-NEXT: UnaryOperator 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'element_type' prefix '*' cannot overflow
65- // CHECK-NEXT: CallExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'element_type *'
66- // CHECK-NEXT: DeclRefExpr 0x{{[0-9A-Fa-f]+ }} <<invalid sloc>> '<builtin fn type>' Function 0x{{[0-9A-Fa-f]+}} '__builtin_hlsl_resource_getpointer' 'void (...) noexcept'
67- // CHECK-NEXT: MemberExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> '__hlsl_resource_t
60+ // CHECK: CXXMethodDecl {{.*}} operator[] 'const element_type &(unsigned int) const'
61+ // CHECK-NEXT: ParmVarDecl {{.*}} Index 'unsigned int'
62+ // CHECK-NEXT: CompoundStmt
63+ // CHECK-NEXT: ReturnStmt
64+ // CHECK-NEXT: UnaryOperator {{.*}} 'element_type' prefix '*' cannot overflow
65+ // CHECK-NEXT: CallExpr {{.*}} 'element_type *'
66+ // CHECK-NEXT: DeclRefExpr {{.* }} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_getpointer' 'void (...) noexcept'
67+ // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
6868// CHECK-SAME{LITERAL}: [[hlsl::resource_class(UAV)]]
6969// CHECK-SAME{LITERAL}: [[hlsl::contained_type(element_type)]]
70- // CHECK-SAME: ' lvalue .__handle 0x{{[0-9A-Fa-f]+}}
71- // CHECK-NEXT: CXXThisExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'const [[RESOURCE]]<element_type>' lvalue implicit this
72- // CHECK-NEXT: DeclRefExpr 0x{{[0-9A-Fa-f]+ }} <<invalid sloc>> 'unsigned int' ParmVar 0x{{[0-9A-Fa-f]+}} 'Index' 'unsigned int'
73- // CHECK-NEXT: AlwaysInlineAttr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> Implicit always_inline
70+ // CHECK-SAME: ' lvalue .__handle {{.*}}
71+ // CHECK-NEXT: CXXThisExpr {{.*}} 'const [[RESOURCE]]<element_type>' lvalue implicit this
72+ // CHECK-NEXT: DeclRefExpr {{.* }} 'unsigned int' ParmVar {{.*}} 'Index' 'unsigned int'
73+ // CHECK-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
7474
75- // CHECK-NEXT: CXXMethodDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> operator[] 'element_type &(unsigned int)'
76- // CHECK-NEXT: ParmVarDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> Index 'unsigned int'
77- // CHECK-NEXT: CompoundStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
78- // CHECK-NEXT: ReturnStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
79- // CHECK-NEXT: UnaryOperator 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'element_type' prefix '*' cannot overflow
80- // CHECK-NEXT: CallExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'element_type *'
81- // CHECK-NEXT: DeclRefExpr 0x{{[0-9A-Fa-f]+ }} <<invalid sloc>> '<builtin fn type>' Function 0x{{[0-9A-Fa-f]+}} '__builtin_hlsl_resource_getpointer' 'void (...) noexcept'
82- // CHECK-NEXT: MemberExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> '__hlsl_resource_t
75+ // CHECK-NEXT: CXXMethodDecl {{.*}} operator[] 'element_type &(unsigned int)'
76+ // CHECK-NEXT: ParmVarDecl {{.*}} Index 'unsigned int'
77+ // CHECK-NEXT: CompoundStmt
78+ // CHECK-NEXT: ReturnStmt
79+ // CHECK-NEXT: UnaryOperator {{.*}} 'element_type' prefix '*' cannot overflow
80+ // CHECK-NEXT: CallExpr {{.*}} 'element_type *'
81+ // CHECK-NEXT: DeclRefExpr {{.* }} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_getpointer' 'void (...) noexcept'
82+ // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
8383// CHECK-SAME{LITERAL}: [[hlsl::resource_class(UAV)]]
8484// CHECK-SAME{LITERAL}: [[hlsl::contained_type(element_type)]]
85- // CHECK-SAME: ' lvalue .__handle 0x{{[0-9A-Fa-f]+}}
86- // CHECK-NEXT: CXXThisExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> '[[RESOURCE]]<element_type>' lvalue implicit this
87- // CHECK-NEXT: DeclRefExpr 0x{{[0-9A-Fa-f]+ }} <<invalid sloc>> 'unsigned int' ParmVar 0x{{[0-9A-Fa-f]+}} 'Index' 'unsigned int'
88- // CHECK-NEXT: AlwaysInlineAttr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> Implicit always_inline
85+ // CHECK-SAME: ' lvalue .__handle {{.*}}
86+ // CHECK-NEXT: CXXThisExpr {{.*}} '[[RESOURCE]]<element_type>' lvalue implicit this
87+ // CHECK-NEXT: DeclRefExpr {{.* }} 'unsigned int' ParmVar {{.*}} 'Index' 'unsigned int'
88+ // CHECK-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
8989
90- // CHECK-NEXT: CXXMethodDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> Load 'element_type (unsigned int)'
91- // CHECK-NEXT: ParmVarDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> Index 'unsigned int'
92- // CHECK-NEXT: CompoundStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
93- // CHECK-NEXT: ReturnStmt 0x{{[0-9A-Fa-f]+}} <<invalid sloc>>
94- // CHECK-NEXT: UnaryOperator 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'element_type' prefix '*' cannot overflow
95- // CHECK-NEXT: CallExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> 'element_type *'
96- // CHECK-NEXT: DeclRefExpr 0x{{[0-9A-Fa-f]+ }} <<invalid sloc>> '<builtin fn type>' Function 0x{{[0-9A-Fa-f]+}} '__builtin_hlsl_resource_getpointer' 'void (...) noexcept'
97- // CHECK-NEXT: MemberExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> '__hlsl_resource_t
90+ // CHECK-NEXT: CXXMethodDecl {{.*}} Load 'element_type (unsigned int)'
91+ // CHECK-NEXT: ParmVarDecl {{.*}} Index 'unsigned int'
92+ // CHECK-NEXT: CompoundStmt
93+ // CHECK-NEXT: ReturnStmt
94+ // CHECK-NEXT: UnaryOperator {{.*}} 'element_type' prefix '*' cannot overflow
95+ // CHECK-NEXT: CallExpr {{.*}} 'element_type *'
96+ // CHECK-NEXT: DeclRefExpr {{.* }} '<builtin fn type>' Function {{.*}} '__builtin_hlsl_resource_getpointer' 'void (...) noexcept'
97+ // CHECK-NEXT: MemberExpr {{.*}} '__hlsl_resource_t
9898// CHECK-SAME{LITERAL}: [[hlsl::resource_class(UAV)]]
9999// CHECK-SAME{LITERAL}: [[hlsl::contained_type(element_type)]]
100- // CHECK-SAME: ' lvalue .__handle 0x{{[0-9A-Fa-f]+}}
101- // CHECK-NEXT: CXXThisExpr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> '[[RESOURCE]]<element_type>' lvalue implicit this
102- // CHECK-NEXT: DeclRefExpr 0x{{[0-9A-Fa-f]+ }} <<invalid sloc>> 'unsigned int' ParmVar 0x{{[0-9A-Fa-f]+}} 'Index' 'unsigned int'
103- // CHECK-NEXT: AlwaysInlineAttr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> Implicit always_inline
100+ // CHECK-SAME: ' lvalue .__handle {{.*}}
101+ // CHECK-NEXT: CXXThisExpr {{.*}} '[[RESOURCE]]<element_type>' lvalue implicit this
102+ // CHECK-NEXT: DeclRefExpr {{.* }} 'unsigned int' ParmVar {{.*}} 'Index' 'unsigned int'
103+ // CHECK-NEXT: AlwaysInlineAttr {{.*}} Implicit always_inline
104104
105- // CHECK: ClassTemplateSpecializationDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> class [[RESOURCE]] definition
105+ // CHECK: ClassTemplateSpecializationDecl {{.*}} class [[RESOURCE]] definition
106106
107107// CHECK: TemplateArgument type 'float'
108- // CHECK-NEXT: BuiltinType 0x{{[0-9A-Fa-f]+}} 'float'
109- // CHECK-NEXT: FinalAttr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> Implicit final
110- // CHECK-NEXT: FieldDecl 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> <invalid sloc> implicit __handle '__hlsl_resource_t
108+ // CHECK-NEXT: BuiltinType {{.*}} 'float'
109+ // CHECK-NEXT: FinalAttr {{.*}} Implicit final
110+ // CHECK-NEXT: FieldDecl {{.*}} implicit __handle '__hlsl_resource_t
111111// CHECK-UAV-SAME{LITERAL}: [[hlsl::resource_class(UAV)]]
112112// CHECK-SAME{LITERAL}: [[hlsl::contained_type(float)]]
113- // CHECK-NEXT: HLSLResourceAttr 0x{{[0-9A-Fa-f]+}} <<invalid sloc>> Implicit TypedBuffer
113+ // CHECK-NEXT: HLSLResourceAttr {{.*}} Implicit TypedBuffer
0 commit comments