Lines Matching defs:SS

54 DeclContext *Sema::computeDeclContext(const CXXScopeSpec &SS,
56 if (!SS.isSet() || SS.isInvalid())
59 NestedNameSpecifier *NNS = SS.getScopeRep();
92 SS.getTemplateParamLists();
116 diagnoseMissingImport(SS.getLastQualifierNameLoc(), PartialSpec,
166 bool Sema::isDependentScopeSpecifier(const CXXScopeSpec &SS) {
167 if (!SS.isSet() || SS.isInvalid())
170 return SS.getScopeRep()->isDependent();
184 /// Require that the context specified by SS be complete.
186 /// If SS refers to a type, this routine checks whether the type is
193 bool Sema::RequireCompleteDeclContext(CXXScopeSpec &SS,
214 SourceLocation loc = SS.getLastQualifierNameLoc();
215 if (loc.isInvalid()) loc = SS.getRange().getBegin();
219 SS.getRange())) {
220 SS.SetInvalid(SS.getRange());
227 return RequireCompleteEnumDecl(EnumD, loc, &SS);
233 /// instantiated. SS, if provided, is the ScopeRef parsed.
236 CXXScopeSpec *SS) {
260 if (SS)
261 SS->SetInvalid(SS->getRange());
268 if (SS) {
270 << QualType(EnumD->getTypeForDecl(), 0) << SS->getRange();
271 SS->SetInvalid(SS->getRange());
281 CXXScopeSpec &SS) {
282 SS.MakeGlobal(Context, CCLoc);
288 CXXScopeSpec &SS) {
315 SS.MakeSuper(Context, RD, SuperLoc, ColonColonLoc);
409 bool EnteringContext, CXXScopeSpec &SS,
429 assert(!SS.isSet() && "ObjectType and scope specifier cannot coexist");
432 } else if (SS.isSet()) {
435 LookupCtx = computeDeclContext(SS, EnteringContext);
436 isDependent = isDependentScopeSpecifier(SS);
437 Found.setContextRange(SS.getRange());
449 RequireCompleteDeclContext(SS, LookupCtx))
504 SS.Extend(Context, IdInfo.Identifier, IdInfo.IdentifierLoc, IdInfo.CCLoc);
549 Found.getLookupNameInfo(), Found.getLookupKind(), S, &SS, CCC,
556 SS.clear();
559 << SS.getRange());
565 SS.MakeTrivial(Context, Corrected.getCorrectionSpecifier(),
639 SS.Extend(Context, Namespace, IdInfo.IdentifierLoc, IdInfo.CCLoc);
644 SS.Extend(Context, Alias, IdInfo.IdentifierLoc, IdInfo.CCLoc);
691 SS.Extend(Context, SourceLocation(), TLB.getTypeLocInContext(Context, T),
710 // resolve Identifier, then extend the SS with Identifier. This will have
739 SS.Extend(Context, /*TemplateKWLoc=*/SourceLocation(),
742 SS.Extend(Context, IdInfo.Identifier, IdInfo.IdentifierLoc,
755 DiagnoseUnknownTypeName(IdInfo.Identifier, IdInfo.IdentifierLoc, S, &SS,
764 } else if (SS.isSet())
766 << LookupCtx << SS.getRange();
775 bool EnteringContext, CXXScopeSpec &SS,
778 if (SS.isInvalid())
781 return BuildCXXNestedNameSpecifier(S, IdInfo, EnteringContext, SS,
786 bool Sema::ActOnCXXNestedNameSpecifierDecltype(CXXScopeSpec &SS,
789 if (SS.isInvalid() || DS.getTypeSpecType() == DeclSpec::TST_error)
808 SS.Extend(Context, SourceLocation(), TLB.getTypeLocInContext(Context, T),
813 bool Sema::ActOnCXXNestedNameSpecifierIndexedPack(CXXScopeSpec &SS,
817 if (SS.isInvalid() || DS.getTypeSpecType() == DeclSpec::TST_error)
831 SS.Extend(Context, SourceLocation(), TLB.getTypeLocInContext(Context, Type),
836 bool Sema::IsInvalidUnlessNestedName(Scope *S, CXXScopeSpec &SS,
839 if (SS.isInvalid())
842 return !BuildCXXNestedNameSpecifier(S, IdInfo, EnteringContext, SS,
847 CXXScopeSpec &SS,
856 if (SS.isInvalid())
869 assert(DTN->getQualifier() == SS.getScopeRep());
879 SpecTL.setQualifierLoc(SS.getWithLocInContext(Context));
887 SS.Extend(Context, TemplateKWLoc, Builder.getTypeLocInContext(Context, T),
902 if (SS.getRange().isValid())
903 R.setBegin(SS.getRange().getBegin());
937 SS.Extend(Context, TemplateKWLoc, Builder.getTypeLocInContext(Context, T),
950 void *Sema::SaveNestedNameSpecifierAnnotation(CXXScopeSpec &SS) {
951 if (SS.isEmpty() || SS.isInvalid())
955 (sizeof(NestedNameSpecifierAnnotation) + SS.location_size()),
959 Annotation->NNS = SS.getScopeRep();
960 memcpy(Annotation + 1, SS.location_data(), SS.location_size());
966 CXXScopeSpec &SS) {
968 SS.SetInvalid(AnnotationRange);
974 SS.Adopt(NestedNameSpecifierLoc(Annotation->NNS, Annotation + 1));
977 bool Sema::ShouldEnterDeclaratorScope(Scope *S, const CXXScopeSpec &SS) {
978 assert(SS.isSet() && "Parser passed invalid CXXScopeSpec.");
985 NestedNameSpecifier *Qualifier = SS.getScopeRep();
1020 bool Sema::ActOnCXXEnterDeclaratorScope(Scope *S, CXXScopeSpec &SS) {
1021 assert(SS.isSet() && "Parser passed invalid CXXScopeSpec.");
1023 if (SS.isInvalid()) return true;
1025 DeclContext *DC = computeDeclContext(SS, true);
1030 if (!DC->isDependentContext() && RequireCompleteDeclContext(SS, DC))
1037 RebuildNestedNameSpecifierInCurrentInstantiation(SS);
1042 void Sema::ActOnCXXExitDeclaratorScope(Scope *S, const CXXScopeSpec &SS) {
1043 assert(SS.isSet() && "Parser passed invalid CXXScopeSpec.");
1044 if (SS.isInvalid())
1046 assert(!SS.isInvalid() && computeDeclContext(SS, true) &&