Lines Matching defs:DS
59 DeclSpec DS(AttrFactory);
61 DS.addAttributes(*Attrs);
62 ParseSpecifierQualifierList(DS, AS, DSC);
64 *OwnedType = DS.isTypeSpecOwned() ? DS.getRepAsDecl() : nullptr;
69 for (ParsedAttr &AL : DS.getAttributes()) {
75 Attrs->takeOneFrom(DS.getAttributes(), AL);
79 Declarator DeclaratorInfo(DS, ParsedAttributesView::none(), Context);
2005 // This function moves attributes that should apply to the type off DS to Attrs.
2007 DeclSpec &DS, TagUseKind TUK) {
2013 for (ParsedAttr &AL : DS.getAttributes()) {
2021 DS.getAttributes().remove(AL);
2131 ParsingDeclSpec DS(*this);
2132 DS.takeAttributesFrom(DeclSpecAttrs);
2136 ParseDeclarationSpecifiers(DS, TemplateInfo, AS_none, DSContext);
2140 if (DS.hasTagDefinition() &&
2141 DiagnoseMissingSemiAfterTagDefinition(DS, AS_none, DSContext))
2152 getCurScope(), AS_none, DS, ParsedAttributesView::none(), AnonRecord);
2154 DS.complete(TheDecl);
2162 if (DS.hasTagDefinition())
2163 Actions.ActOnDefinedDeclarationSpecifier(DS.getRepAsDecl());
2166 DS.SetRangeStart(*DeclSpecStart);
2168 return ParseDeclGroup(DS, Context, DeclAttrs, TemplateInfo, &DeclEnd, FRI);
2322 Parser::DeclGroupPtrTy Parser::ParseDeclGroup(ParsingDeclSpec &DS,
2334 ParsingDeclarator D(*this, DS, LocalAttrs, Context);
2378 bool Fixit = !DS.setFunctionSpecNoreturn(Loc, PrevSpec, DiagID);
2420 if (DS.getStorageClassSpec() == DeclSpec::SCS_typedef) {
2424 Diag(DS.getStorageClassSpecLoc(),
2426 << FixItHint::CreateRemoval(DS.getStorageClassSpecLoc());
2427 DS.ClearStorageClassSpecs();
2546 return Actions.FinalizeDeclaratorGroup(getCurScope(), DS, ThisDecl);
2634 return Actions.FinalizeDeclaratorGroup(getCurScope(), DS, DeclsInGroup);
2951 DeclSpec &DS, ImplicitTypenameContext AllowImplicitTypename,
2957 ParseDeclarationSpecifiers(DS, TemplateInfo, AS, DSC, nullptr,
2961 unsigned Specs = DS.getParsedSpecifiers();
2962 if (isTypeSpecifier(DSC) && !DS.hasTypeSpecifier()) {
2964 DS.SetTypeSpecError();
2965 } else if (Specs == DeclSpec::PQ_None && !DS.hasAttributes()) {
2967 if (!DS.hasTypeSpecifier())
2968 DS.SetTypeSpecError();
2973 if (DS.getStorageClassSpecLoc().isValid())
2974 Diag(DS.getStorageClassSpecLoc(),diag::err_typename_invalid_storageclass);
2976 Diag(DS.getThreadStorageClassSpecLoc(),
2978 DS.ClearStorageClassSpecs();
2983 if (DS.isInlineSpecified())
2984 Diag(DS.getInlineSpecLoc(), diag::err_typename_invalid_functionspec);
2985 if (DS.isVirtualSpecified())
2986 Diag(DS.getVirtualSpecLoc(), diag::err_typename_invalid_functionspec);
2987 if (DS.hasExplicitSpecifier())
2988 Diag(DS.getExplicitSpecLoc(), diag::err_typename_invalid_functionspec);
2989 if (DS.isNoreturnSpecified())
2990 Diag(DS.getNoreturnSpecLoc(), diag::err_typename_invalid_functionspec);
2991 DS.ClearFunctionSpecs();
2995 if (DS.hasConstexprSpecifier() && DSC != DeclSpecContext::DSC_condition) {
2996 Diag(DS.getConstexprSpecLoc(), diag::err_typename_invalid_constexpr)
2997 << static_cast<int>(DS.getConstexprSpecifier());
2998 DS.ClearConstexprSpec();
3035 bool Parser::ParseImplicitInt(DeclSpec &DS, CXXScopeSpec *SS,
3054 assert(!DS.hasTypeSpecifier() && "Type specifier checked above");
3071 if (getLangOpts().OpenCLCPlusPlus && DS.isTypeSpecPipe())
3075 DS.getStorageClassSpec() == DeclSpec::SCS_auto) {
3093 DS.SetTypeSpecType(DeclSpec::TST_typename, Loc, PrevSpec, DiagID, T,
3095 DS.SetRangeEnd(Tok.getLocation());
3144 ParseEnumSpecifier(Loc, DS, TemplateInfo, AS,
3147 ParseClassSpecifier(TagKind, Loc, DS, TemplateInfo, AS,
3230 DS.SetTypeSpecType(DeclSpec::TST_typename, Loc, PrevSpec, DiagID, T,
3232 DS.SetRangeEnd(Tok.getLocation());
3244 DS.SetTypeSpecError();
3245 DS.SetRangeEnd(Tok.getLocation());
3480 Parser::DiagnoseMissingSemiAfterTagDefinition(DeclSpec &DS, AccessSpecifier AS,
3483 assert(DS.hasTagDefinition() && "shouldn't call this");
3566 Diag(PP.getLocForEndOfToken(DS.getRepAsDecl()->getEndLoc()),
3568 << DeclSpec::getSpecifierName(DS.getTypeSpecType(), PPol) << tok::semi;
3577 DS.ClearTypeSpecType();
3579 ParseDeclarationSpecifiers(DS, NotATemplate, AS, DSContext, LateAttrs);
3611 DeclSpec &DS, ParsedTemplateInfo &TemplateInfo, AccessSpecifier AS,
3614 if (DS.getSourceRange().isInvalid()) {
3618 DS.SetRangeStart(Tok.getLocation());
3619 DS.SetRangeEnd(SourceLocation());
3654 DS.getStorageClassSpec() == clang::DeclSpec::SCS_typedef &&
3655 !DS.hasTypeSpecifier() && GetLookAheadToken(1).is(tok::less))
3669 isInvalid = DS.SetTypeSpecType(ImageTypeSpec, Loc, PrevSpec, DiagID, Policy);
3721 DS.takeAttributesFrom(attrs);
3726 DS.Finish(Actions, Policy);
3741 ParseAlignmentSpecifier(DS.getAttributes());
3764 if (DS.hasTypeSpecifier()) {
3773 (DSContext == DeclSpecContext::DSC_class && DS.isFriendSpecified());
3777 getCurScope(), DS, AllowNonIdentifiers, AllowNestedNameSpecifiers);
3802 if (!DS.hasTypeSpecifier())
3803 DS.SetTypeSpecError();
3811 if (DS.hasTypeSpecifier() || DS.isTypeAltiVecVector())
3830 DS.SetTypeSpecError();
3851 DS.isFriendSpecified())) {
3859 DS.getTypeSpecScope() = SS;
3868 DS.getTypeSpecScope() = SS;
3878 DS.getTypeSpecScope() = SS;
3881 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_typename,
3886 DS.SetRangeEnd(Tok.getAnnotationEndLoc());
3894 DS.getTypeSpecScope() = SS;
3912 DS.isFriendSpecified(),
3945 if (ParseImplicitInt(DS, &SS, TemplateInfo, AS, DSContext, Attrs)) {
3955 DS.getTypeSpecScope() = SS;
3958 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_typename, Loc, PrevSpec,
3963 DS.SetRangeEnd(Tok.getLocation());
3972 if (DS.hasTypeSpecifier() && DS.hasTagDefinition())
3976 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_typename, Loc, PrevSpec,
3981 DS.SetRangeEnd(Tok.getAnnotationEndLoc());
3995 if (DS.getTypeSpecType() == TST_bool &&
3996 DS.getTypeQualifiers() == DeclSpec::TQ_const &&
3997 DS.getStorageClassSpec() == DeclSpec::SCS_static)
4011 if (DS.hasTypeSpecifier())
4056 DS.SetTypeSpecError();
4065 if (TryAltiVecToken(DS, Loc, PrevSpec, DiagID, isInvalid))
4070 if (DS.isTypeAltiVecVector())
4077 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_typename, Loc, PrevSpec,
4082 DS.SetRangeEnd(Loc);
4093 DS.isFriendSpecified()))
4109 if (ParseImplicitInt(DS, nullptr, TemplateInfo, AS, DSContext, Attrs)) {
4131 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_typename, Loc, PrevSpec,
4136 DS.SetRangeEnd(Tok.getLocation());
4148 DS.UpdateTypeRep(NewTypeRep.get());
4149 DS.SetRangeEnd(NewEndLoc);
4163 DS.SetTypeSpecError();
4184 isInvalid = DS.SetTypeSpecType(TST_auto, Loc, PrevSpec, DiagID,
4214 DS.setTypeArgumentRange(Tracker.getRange());
4217 isInvalid = DS.SetTypeSpecType(TST_decltype_auto, Loc, PrevSpec,
4220 isInvalid = DS.SetTypeSpecType(TST_auto, AutoLoc, PrevSpec, DiagID,
4240 DS.isFriendSpecified()))
4253 ParseAttributes(PAKM_GNU | PAKM_Declspec, DS.getAttributes(), LateAttrs);
4258 isInvalid = DS.setFunctionSpecForceInline(Loc, PrevSpec, DiagID);
4261 DS.getAttributes().addNew(AttrName, AttrNameLoc, nullptr, AttrNameLoc,
4267 isInvalid = DS.SetTypeQual(DeclSpec::TQ_unaligned, Loc, PrevSpec, DiagID,
4282 ParseMicrosoftTypeAttributes(DS.getAttributes());
4286 ParseWebAssemblyFuncrefTypeAttribute(DS.getAttributes());
4291 ParseBorlandTypeAttributes(DS.getAttributes());
4296 ParseOpenCLKernelAttributes(DS.getAttributes());
4301 ParseCUDAFunctionAttributes(DS.getAttributes());
4309 ParseNullabilityTypeSpecifiers(DS.getAttributes());
4314 DS.getAttributes().addNew(Tok.getIdentifierInfo(), Loc, nullptr, Loc,
4321 isInvalid = DS.SetStorageClassSpec(Actions, DeclSpec::SCS_typedef, Loc,
4326 if (DS.getThreadStorageClassSpec() == DeclSpec::TSCS___thread)
4328 isInvalid = DS.SetStorageClassSpec(Actions, DeclSpec::SCS_extern, Loc,
4333 isInvalid = DS.SetStorageClassSpec(Actions, DeclSpec::SCS_private_extern,
4338 if (DS.getThreadStorageClassSpec() == DeclSpec::TSCS___thread)
4340 isInvalid = DS.SetStorageClassSpec(Actions, DeclSpec::SCS_static, Loc,
4347 isInvalid = DS.SetStorageClassSpec(Actions, DeclSpec::SCS_auto, Loc,
4351 << FixItHint::CreateRemoval(DS.getStorageClassSpecLoc());
4353 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_auto, Loc, PrevSpec,
4356 isInvalid = DS.SetStorageClassSpec(Actions, DeclSpec::SCS_auto, Loc,
4362 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_auto_type, Loc, PrevSpec,
4366 isInvalid = DS.SetStorageClassSpec(Actions, DeclSpec::SCS_register, Loc,
4371 isInvalid = DS.SetStorageClassSpec(Actions, DeclSpec::SCS_mutable, Loc,
4376 isInvalid = DS.SetStorageClassSpecThread(DeclSpec::TSCS___thread, Loc,
4388 isInvalid = DS.SetStorageClassSpecThread(
4396 isInvalid = DS.SetStorageClassSpecThread(DeclSpec::TSCS__Thread_local,
4403 isInvalid = DS.setFunctionSpecInline(Loc, PrevSpec, DiagID);
4415 isInvalid = DS.setFunctionSpecVirtual(Loc, PrevSpec, DiagID);
4450 isInvalid = DS.setFunctionSpecExplicit(ExplicitLoc, PrevSpec, DiagID,
4456 isInvalid = DS.setFunctionSpecNoreturn(Loc, PrevSpec, DiagID);
4462 isInvalid = DS.SetFriendSpec(Loc, PrevSpec, DiagID);
4475 isInvalid = DS.setModulePrivateSpec(Loc, PrevSpec, DiagID);
4482 isInvalid = DS.SetConstexprSpec(ConstexprSpecKind::Constexpr, Loc,
4486 isInvalid = DS.SetConstexprSpec(ConstexprSpecKind::Consteval, Loc,
4490 isInvalid = DS.SetConstexprSpec(ConstexprSpecKind::Constinit, Loc,
4496 isInvalid = DS.SetTypeSpecWidth(TypeSpecifierWidth::Short, Loc, PrevSpec,
4500 if (DS.getTypeSpecWidth() != TypeSpecifierWidth::Long)
4501 isInvalid = DS.SetTypeSpecWidth(TypeSpecifierWidth::Long, Loc, PrevSpec,
4504 isInvalid = DS.SetTypeSpecWidth(TypeSpecifierWidth::LongLong, Loc,
4508 isInvalid = DS.SetTypeSpecWidth(TypeSpecifierWidth::LongLong, Loc,
4513 DS.SetTypeSpecSign(TypeSpecifierSign::Signed, Loc, PrevSpec, DiagID);
4516 isInvalid = DS.SetTypeSpecSign(TypeSpecifierSign::Unsigned, Loc, PrevSpec,
4522 isInvalid = DS.SetTypeSpecComplex(DeclSpec::TSC_complex, Loc, PrevSpec,
4528 isInvalid = DS.SetTypeSpecComplex(DeclSpec::TSC_imaginary, Loc, PrevSpec,
4532 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_void, Loc, PrevSpec,
4536 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_char, Loc, PrevSpec,
4540 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_int, Loc, PrevSpec,
4549 isInvalid = DS.SetBitIntType(Loc, ER.get(), PrevSpec, DiagID, Policy);
4554 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_int128, Loc, PrevSpec,
4558 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_half, Loc, PrevSpec,
4562 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_BFloat16, Loc, PrevSpec,
4566 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_float, Loc, PrevSpec,
4570 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_double, Loc, PrevSpec,
4574 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_float16, Loc, PrevSpec,
4581 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_accum, Loc, PrevSpec, DiagID,
4588 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_fract, Loc, PrevSpec, DiagID,
4595 isInvalid = DS.SetTypeSpecSat(Loc, PrevSpec, DiagID);
4598 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_float128, Loc, PrevSpec,
4602 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_ibm128, Loc, PrevSpec,
4606 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_wchar, Loc, PrevSpec,
4610 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_char8, Loc, PrevSpec,
4614 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_char16, Loc, PrevSpec,
4618 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_char32, Loc, PrevSpec,
4630 DS.getTypeSpecType() != DeclSpec::TST_unspecified &&
4631 DS.getStorageClassSpec() == DeclSpec::SCS_typedef) {
4638 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_bool, Loc, PrevSpec,
4643 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_decimal32, Loc, PrevSpec,
4647 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_decimal64, Loc, PrevSpec,
4651 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_decimal128, Loc, PrevSpec,
4655 isInvalid = DS.SetTypeAltiVecVector(true, Loc, PrevSpec, DiagID, Policy);
4658 isInvalid = DS.SetTypeAltiVecPixel(true, Loc, PrevSpec, DiagID, Policy);
4661 isInvalid = DS.SetTypeAltiVecBool(true, Loc, PrevSpec, DiagID, Policy);
4676 isInvalid = DS.SetTypePipe(true, Loc, PrevSpec, DiagID, Policy);
4688 isInvalid = DS.SetTypeSpecType(TST_unknown_anytype, Loc,
4704 ParseClassSpecifier(Kind, Loc, DS, TemplateInfo, AS,
4719 ParseEnumSpecifier(Loc, DS, TemplateInfo, AS, DSContext);
4724 isInvalid = DS.SetTypeQual(DeclSpec::TQ_const, Loc, PrevSpec, DiagID,
4728 isInvalid = DS.SetTypeQual(DeclSpec::TQ_volatile, Loc, PrevSpec, DiagID,
4732 isInvalid = DS.SetTypeQual(DeclSpec::TQ_restrict, Loc, PrevSpec, DiagID,
4739 DS.SetTypeSpecError();
4749 ParseTypeofSpecifier(DS);
4753 ParseDecltypeSpecifier(DS);
4757 ParsePackIndexingType(DS);
4781 if (!MaybeParseTypeTransformTypeSpecifier(DS))
4792 ParseAtomicSpecifier(DS);
4795 isInvalid = DS.SetTypeQual(DeclSpec::TQ_atomic, Loc, PrevSpec, DiagID,
4826 ParseOpenCLQualifiers(DS.getAttributes());
4834 ParseHLSLQualifiers(DS.getAttributes());
4839 isInvalid = DS.SetTypeSpecType(DeclSpec::TST_##Name, Loc, PrevSpec, \
4848 if (DS.hasTypeSpecifier() || !getLangOpts().ObjC)
4855 if (DS.SetTypeSpecType(DeclSpec::TST_typename, StartLoc, StartLoc,
4860 DS.SetRangeEnd(EndLoc);
4862 DS.SetTypeSpecError();
4870 DS.SetRangeEnd(ConsumedEnd.isValid() ? ConsumedEnd : Tok.getLocation());
4882 SourceRange(Loc, DS.getEndLoc()));
4898 static void DiagnoseCountAttributedTypeInUnnamedAnon(ParsingDeclSpec &DS,
4901 if (DS.getTypeSpecType() != DeclSpec::TST_struct)
4904 auto *RD = dyn_cast<RecordDecl>(DS.getRepAsDecl());
4952 ParsingDeclSpec &DS,
4960 return ParseStructDeclaration(DS, FieldsCallback, LateFieldAttrs);
4968 ParseSpecifierQualifierList(DS);
4980 getCurScope(), AS_none, DS, ParsedAttributesView::none(), AnonRecord);
4982 DS.complete(TheDecl);
4990 ParsingFieldDeclarator DeclaratorInfo(*this, DS, Attrs);
5014 DiagnoseCountAttributedTypeInUnnamedAnon(DS, *this);
5197 ParsingDeclSpec DS(*this);
5198 ParseStructDeclaration(DS, CFieldCallback, &LateFieldAttrs);
5282 void Parser::ParseEnumSpecifier(SourceLocation StartLoc, DeclSpec &DS,
5290 DS.SetTypeSpecError(); // Needed by ActOnUsingDeclaration.
5331 DS.isEmpty() && isOpaqueEnumDeclarationContext(DSC);
5337 CXXScopeSpec &SS = DS.getTypeSpecScope();
5350 DS.SetTypeSpecError();
5367 DS.SetTypeSpecError();
5407 // 2) As the sole constituent of a complete declaration -- when DS is empty
5438 DeclSpec DS(AttrFactory);
5441 ParseSpecifierQualifierList(DS, ImplicitTypenameContext::No, AS,
5443 Declarator DeclaratorInfo(DS, ParsedAttributesView::none(),
5482 if (DS.isFriendSpecified()) {
5484 << SourceRange(DS.getFriendSpecLoc());
5503 TUK = DS.isFriendSpecified() ? TagUseKind::Friend : TagUseKind::Declaration;
5535 DS.SetTypeSpecError();
5549 DS.SetTypeSpecError();
5576 stripTypeAttributesOffDeclSpec(attrs, DS, TUK);
5591 Name, NameLoc, attrs, AS, DS.getModulePrivateSpecLoc(),
5606 if (DS.SetTypeSpecType(DeclSpec::TST_enum, StartLoc,
5618 DS.SetTypeSpecError();
5626 DS.SetTypeSpecError();
5630 if (DS.SetTypeSpecType(DeclSpec::TST_typename, StartLoc,
5647 DS.SetTypeSpecError();
5656 DS.SetTypeSpecError();
5661 if (DS.SetTypeSpecType(DeclSpec::TST_enum, StartLoc,
6463 DeclSpec &DS, unsigned AttrReqs, bool AtomicAllowed,
6470 DS.takeAttributesFrom(Attrs);
6487 Actions.CodeCompletion().CodeCompleteTypeQualifiers(DS);
6491 isInvalid = DS.SetTypeQual(DeclSpec::TQ_const , Loc, PrevSpec, DiagID,
6495 isInvalid = DS.SetTypeQual(DeclSpec::TQ_volatile, Loc, PrevSpec, DiagID,
6499 isInvalid = DS.SetTypeQual(DeclSpec::TQ_restrict, Loc, PrevSpec, DiagID,
6506 isInvalid = DS.SetTypeQual(DeclSpec::TQ_atomic, Loc, PrevSpec, DiagID,
6523 ParseOpenCLQualifiers(DS.getAttributes());
6531 ParseHLSLQualifiers(DS.getAttributes());
6535 isInvalid = DS.SetTypeQual(DeclSpec::TQ_unaligned, Loc, PrevSpec, DiagID,
6542 IdentifierRequired && DS.isEmpty() && NextToken().is(tok::semi)) {
6558 ParseMicrosoftTypeAttributes(DS.getAttributes());
6564 ParseWebAssemblyFuncrefTypeAttribute(DS.getAttributes());
6570 ParseBorlandTypeAttributes(DS.getAttributes());
6580 ParseNullabilityTypeSpecifiers(DS.getAttributes());
6585 DS.getAttributes().addNew(Tok.getIdentifierInfo(), Loc, nullptr, Loc,
6599 ParseGNUAttributes(DS.getAttributes());
6608 DS.Finish(Actions, Actions.getASTContext().getPrintingPolicy());
6610 DS.SetRangeEnd(EndLoc);
6735 DeclSpec DS(AttrFactory);
6736 ParseTypeQualifierListOpt(DS);
6737 D.ExtendWithDeclSpec(DS);
6747 SS, DS.getTypeQualifiers(), StarLoc, DS.getEndLoc()),
6748 std::move(DS.getAttributes()),
6776 DeclSpec DS(AttrFactory);
6777 ParseTypeQualifierListOpt(DS);
6780 DeclaratorChunk::getPipe(DS.getTypeQualifiers(), DS.getPipeLoc()),
6781 std::move(DS.getAttributes()), SourceLocation());
6798 DeclSpec DS(AttrFactory);
6806 ParseTypeQualifierListOpt(DS, Reqs, true, !D.mayOmitIdentifier());
6807 D.ExtendWithDeclSpec(DS);
6815 DS.getTypeQualifiers(), Loc, DS.getConstSpecLoc(),
6816 DS.getVolatileSpecLoc(), DS.getRestrictSpecLoc(),
6817 DS.getAtomicSpecLoc(), DS.getUnalignedSpecLoc()),
6818 std::move(DS.getAttributes()), SourceLocation());
6822 DeclaratorChunk::getBlockPointer(DS.getTypeQualifiers(), Loc),
6823 std::move(DS.getAttributes()), SourceLocation());
6826 DeclSpec DS(AttrFactory);
6836 ParseTypeQualifierListOpt(DS);
6837 D.ExtendWithDeclSpec(DS);
6842 if (DS.getTypeQualifiers() != DeclSpec::TQ_unspecified) {
6843 if (DS.getTypeQualifiers() & DeclSpec::TQ_const)
6844 Diag(DS.getConstSpecLoc(),
6846 if (DS.getTypeQualifiers() & DeclSpec::TQ_volatile)
6847 Diag(DS.getVolatileSpecLoc(),
6850 if (DS.getTypeQualifiers() & DeclSpec::TQ_atomic)
6851 Diag(DS.getAtomicSpecLoc(),
6877 D.AddTypeInfo(DeclaratorChunk::getReference(DS.getTypeQualifiers(), Loc,
6879 std::move(DS.getAttributes()), SourceLocation());
7526 const Declarator &D, const DeclSpec &DS,
7546 Qualifiers Q = Qualifiers::fromCVRUMask(DS.getTypeQualifiers());
7555 for (ParsedAttr &attr : DS.getAttributes()) {
7605 DeclSpec DS(AttrFactory);
7666 DS, AR_NoAttributesParsed,
7669 Actions.CodeCompletion().CodeCompleteFunctionQualifiers(DS, D);
7671 if (!DS.getSourceRange().getEnd().isInvalid()) {
7672 EndLoc = DS.getSourceRange().getEnd();
7680 InitCXXThisScopeForDeclaratorIfRelevant(D, DS, ThisScope);
7779 &DS),
7959 DeclSpec DS(AttrFactory);
7987 ParseDeclarationSpecifiers(DS, TemplateInfo, AS_none,
7991 DS.takeAttributesFrom(ArgDeclSpecAttrs);
7996 Declarator ParmDeclarator(DS, ArgDeclAttrs,
8010 MaybeParseHLSLAnnotations(DS.getAttributes());
8032 if (DS.isEmpty() && ParmDeclarator.getIdentifier() == nullptr &&
8249 DeclSpec DS(AttrFactory);
8250 ParseTypeQualifierListOpt(DS, AR_CXX11AttributesParsed);
8306 MaybeParseCXX11Attributes(DS.getAttributes());
8310 DeclaratorChunk::getArray(DS.getTypeQualifiers(), StaticLoc.isValid(),
8313 std::move(DS.getAttributes()), T.getCloseLocation());
8417 void Parser::ParseTypeofSpecifier(DeclSpec &DS) {
8440 DS.setTypeArgumentRange(CastRange);
8444 DS.SetRangeEnd(Tok.getLocation());
8446 DS.SetRangeEnd(CastRange.getEnd());
8450 DS.SetTypeSpecError();
8457 if (DS.SetTypeSpecType(IsUnqual ? DeclSpec::TST_typeof_unqualType
8468 DS.SetTypeSpecError();
8475 DS.SetTypeSpecError();
8482 if (DS.SetTypeSpecType(IsUnqual ? DeclSpec::TST_typeof_unqualExpr
8493 void Parser::ParseAtomicSpecifier(DeclSpec &DS) {
8514 DS.setTypeArgumentRange(T.getRange());
8515 DS.SetRangeEnd(T.getCloseLocation());
8519 if (DS.SetTypeSpecType(DeclSpec::TST_atomic, StartLoc, PrevSpec,
8560 bool Parser::TryAltiVecTokenOutOfLine(DeclSpec &DS, SourceLocation Loc,
8580 isInvalid = DS.SetTypeAltiVecVector(true, Loc, PrevSpec, DiagID, Policy);
8584 isInvalid = DS.SetTypeAltiVecVector(true, Loc, PrevSpec, DiagID,Policy);
8590 DS.SetTypeAltiVecVector(true, Loc, PrevSpec, DiagID, Policy);
8598 DS.isTypeAltiVecVector()) {
8599 isInvalid = DS.SetTypeAltiVecPixel(true, Loc, PrevSpec, DiagID, Policy);
8602 DS.isTypeAltiVecVector()) {
8603 isInvalid = DS.SetTypeAltiVecBool(true, Loc, PrevSpec, DiagID, Policy);