@@ -536,38 +536,40 @@ class Sema final : public SemaBase {
536
536
// Table of Contents
537
537
// -----------------
538
538
// 1. Semantic Analysis (Sema.cpp)
539
- // 2. C++ Access Control (SemaAccess.cpp)
540
- // 3. Attributes (SemaAttr.cpp)
541
- // 4. Availability Attribute Handling (SemaAvailability.cpp)
542
- // 5. Casts (SemaCast.cpp)
543
- // 6. Extra Semantic Checking (SemaChecking.cpp)
544
- // 7. C++ Coroutines (SemaCoroutine.cpp)
545
- // 8. C++ Scope Specifiers (SemaCXXScopeSpec.cpp)
546
- // 9. Declarations (SemaDecl.cpp)
547
- // 10. Declaration Attribute Handling (SemaDeclAttr.cpp)
548
- // 11. C++ Declarations (SemaDeclCXX.cpp)
549
- // 12. C++ Exception Specifications (SemaExceptionSpec.cpp)
550
- // 13. Expressions (SemaExpr.cpp)
551
- // 14. C++ Expressions (SemaExprCXX.cpp)
552
- // 15. Member Access Expressions (SemaExprMember.cpp)
553
- // 16. Initializers (SemaInit.cpp)
554
- // 17. C++ Lambda Expressions (SemaLambda.cpp)
555
- // 18. Name Lookup (SemaLookup.cpp)
556
- // 19. Modules (SemaModule.cpp)
557
- // 20. C++ Overloading (SemaOverload.cpp)
558
- // 21. Statements (SemaStmt.cpp)
559
- // 22. `inline asm` Statement (SemaStmtAsm.cpp)
560
- // 23. Statement Attribute Handling (SemaStmtAttr.cpp)
561
- // 24. C++ Templates (SemaTemplate.cpp)
562
- // 25. C++ Template Argument Deduction (SemaTemplateDeduction.cpp)
563
- // 26. C++ Template Deduction Guide (SemaTemplateDeductionGuide.cpp)
564
- // 27. C++ Template Instantiation (SemaTemplateInstantiate.cpp)
565
- // 28. C++ Template Declaration Instantiation
539
+ // 2. API Notes (SemaAPINotes.cpp)
540
+ // 3. C++ Access Control (SemaAccess.cpp)
541
+ // 4. Attributes (SemaAttr.cpp)
542
+ // 5. Availability Attribute Handling (SemaAvailability.cpp)
543
+ // 6. Bounds Safety (SemaBoundsSafety.cpp)
544
+ // 7. Casts (SemaCast.cpp)
545
+ // 8. Extra Semantic Checking (SemaChecking.cpp)
546
+ // 9. C++ Coroutines (SemaCoroutine.cpp)
547
+ // 10. C++ Scope Specifiers (SemaCXXScopeSpec.cpp)
548
+ // 11. Declarations (SemaDecl.cpp)
549
+ // 12. Declaration Attribute Handling (SemaDeclAttr.cpp)
550
+ // 13. C++ Declarations (SemaDeclCXX.cpp)
551
+ // 14. C++ Exception Specifications (SemaExceptionSpec.cpp)
552
+ // 15. Expressions (SemaExpr.cpp)
553
+ // 16. C++ Expressions (SemaExprCXX.cpp)
554
+ // 17. Member Access Expressions (SemaExprMember.cpp)
555
+ // 18. Initializers (SemaInit.cpp)
556
+ // 19. C++ Lambda Expressions (SemaLambda.cpp)
557
+ // 20. Name Lookup (SemaLookup.cpp)
558
+ // 21. Modules (SemaModule.cpp)
559
+ // 22. C++ Overloading (SemaOverload.cpp)
560
+ // 23. Statements (SemaStmt.cpp)
561
+ // 24. `inline asm` Statement (SemaStmtAsm.cpp)
562
+ // 25. Statement Attribute Handling (SemaStmtAttr.cpp)
563
+ // 26. C++ Templates (SemaTemplate.cpp)
564
+ // 27. C++ Template Argument Deduction (SemaTemplateDeduction.cpp)
565
+ // 28. C++ Template Deduction Guide (SemaTemplateDeductionGuide.cpp)
566
+ // 29. C++ Template Instantiation (SemaTemplateInstantiate.cpp)
567
+ // 30. C++ Template Declaration Instantiation
566
568
// (SemaTemplateInstantiateDecl.cpp)
567
- // 29 . C++ Variadic Templates (SemaTemplateVariadic.cpp)
568
- // 30 . Constraints and Concepts (SemaConcept.cpp)
569
- // 31 . Types (SemaType.cpp)
570
- // 32 . FixIt Helpers (SemaFixItUtils.cpp)
569
+ // 31 . C++ Variadic Templates (SemaTemplateVariadic.cpp)
570
+ // 32 . Constraints and Concepts (SemaConcept.cpp)
571
+ // 33 . Types (SemaType.cpp)
572
+ // 34 . FixIt Helpers (SemaFixItUtils.cpp)
571
573
572
574
/// \name Semantic Analysis
573
575
/// Implementations are in Sema.cpp
@@ -1325,6 +1327,25 @@ class Sema final : public SemaBase {
1325
1327
//
1326
1328
//
1327
1329
1330
+ /// \name API Notes
1331
+ /// Implementations are in SemaAPINotes.cpp
1332
+ ///@{
1333
+
1334
+ public:
1335
+ /// Map any API notes provided for this declaration to attributes on the
1336
+ /// declaration.
1337
+ ///
1338
+ /// Triggered by declaration-attribute processing.
1339
+ void ProcessAPINotes(Decl *D);
1340
+
1341
+ ///@}
1342
+
1343
+ //
1344
+ //
1345
+ // -------------------------------------------------------------------------
1346
+ //
1347
+ //
1348
+
1328
1349
/// \name C++ Access Control
1329
1350
/// Implementations are in SemaAccess.cpp
1330
1351
///@{
@@ -2095,6 +2116,39 @@ class Sema final : public SemaBase {
2095
2116
//
2096
2117
//
2097
2118
2119
+ /// \name Bounds Safety
2120
+ /// Implementations are in SemaBoundsSafety.cpp
2121
+ ///@{
2122
+ public:
2123
+ /// Check if applying the specified attribute variant from the "counted by"
2124
+ /// family of attributes to FieldDecl \p FD is semantically valid. If
2125
+ /// semantically invalid diagnostics will be emitted explaining the problems.
2126
+ ///
2127
+ /// \param FD The FieldDecl to apply the attribute to
2128
+ /// \param E The count expression on the attribute
2129
+ /// \param CountInBytes If true the attribute is from the "sized_by" family of
2130
+ /// attributes. If the false the attribute is from
2131
+ /// "counted_by" family of attributes.
2132
+ /// \param OrNull If true the attribute is from the "_or_null" suffixed family
2133
+ /// of attributes. If false the attribute does not have the
2134
+ /// suffix.
2135
+ ///
2136
+ /// Together \p CountInBytes and \p OrNull decide the attribute variant. E.g.
2137
+ /// \p CountInBytes and \p OrNull both being true indicates the
2138
+ /// `counted_by_or_null` attribute.
2139
+ ///
2140
+ /// \returns false iff semantically valid.
2141
+ bool CheckCountedByAttrOnField(FieldDecl *FD, Expr *E, bool CountInBytes,
2142
+ bool OrNull);
2143
+
2144
+ ///@}
2145
+
2146
+ //
2147
+ //
2148
+ // -------------------------------------------------------------------------
2149
+ //
2150
+ //
2151
+
2098
2152
/// \name Casts
2099
2153
/// Implementations are in SemaCast.cpp
2100
2154
///@{
@@ -15045,58 +15099,6 @@ class Sema final : public SemaBase {
15045
15099
std::string getFixItZeroLiteralForType(QualType T, SourceLocation Loc) const;
15046
15100
15047
15101
///@}
15048
-
15049
- //
15050
- //
15051
- // -------------------------------------------------------------------------
15052
- //
15053
- //
15054
-
15055
- /// \name API Notes
15056
- /// Implementations are in SemaAPINotes.cpp
15057
- ///@{
15058
-
15059
- public:
15060
- /// Map any API notes provided for this declaration to attributes on the
15061
- /// declaration.
15062
- ///
15063
- /// Triggered by declaration-attribute processing.
15064
- void ProcessAPINotes(Decl *D);
15065
-
15066
- ///@}
15067
-
15068
- //
15069
- //
15070
- // -------------------------------------------------------------------------
15071
- //
15072
- //
15073
-
15074
- /// \name Bounds Safety
15075
- /// Implementations are in SemaBoundsSafety.cpp
15076
- ///@{
15077
- public:
15078
- /// Check if applying the specified attribute variant from the "counted by"
15079
- /// family of attributes to FieldDecl \p FD is semantically valid. If
15080
- /// semantically invalid diagnostics will be emitted explaining the problems.
15081
- ///
15082
- /// \param FD The FieldDecl to apply the attribute to
15083
- /// \param E The count expression on the attribute
15084
- /// \param CountInBytes If true the attribute is from the "sized_by" family of
15085
- /// attributes. If the false the attribute is from
15086
- /// "counted_by" family of attributes.
15087
- /// \param OrNull If true the attribute is from the "_or_null" suffixed family
15088
- /// of attributes. If false the attribute does not have the
15089
- /// suffix.
15090
- ///
15091
- /// Together \p CountInBytes and \p OrNull decide the attribute variant. E.g.
15092
- /// \p CountInBytes and \p OrNull both being true indicates the
15093
- /// `counted_by_or_null` attribute.
15094
- ///
15095
- /// \returns false iff semantically valid.
15096
- bool CheckCountedByAttrOnField(FieldDecl *FD, Expr *E, bool CountInBytes,
15097
- bool OrNull);
15098
-
15099
- ///@}
15100
15102
};
15101
15103
15102
15104
DeductionFailureInfo
0 commit comments