Lines Matching defs:SS
53 DeclContext *Sema::computeDeclContext(const CXXScopeSpec &SS,
55 if (!SS.isSet() || SS.isInvalid())
58 NestedNameSpecifier *NNS = SS.getScopeRep();
91 SS.getTemplateParamLists();
115 diagnoseMissingImport(SS.getLastQualifierNameLoc(), PartialSpec,
165 bool Sema::isDependentScopeSpecifier(const CXXScopeSpec &SS) {
166 if (!SS.isSet() || SS.isInvalid())
169 return SS.getScopeRep()->isDependent();
183 /// Require that the context specified by SS be complete.
185 /// If SS refers to a type, this routine checks whether the type is
192 bool Sema::RequireCompleteDeclContext(CXXScopeSpec &SS,
213 SourceLocation loc = SS.getLastQualifierNameLoc();
214 if (loc.isInvalid()) loc = SS.getRange().getBegin();
218 SS.getRange())) {
219 SS.SetInvalid(SS.getRange());
226 return RequireCompleteEnumDecl(EnumD, loc, &SS);
232 /// instantiated. SS, if provided, is the ScopeRef parsed.
235 CXXScopeSpec *SS) {
259 if (SS)
260 SS->SetInvalid(SS->getRange());
267 if (SS) {
269 << QualType(EnumD->getTypeForDecl(), 0) << SS->getRange();
270 SS->SetInvalid(SS->getRange());
280 CXXScopeSpec &SS) {
281 SS.MakeGlobal(Context, CCLoc);
287 CXXScopeSpec &SS) {
314 SS.MakeSuper(Context, RD, SuperLoc, ColonColonLoc);
408 bool EnteringContext, CXXScopeSpec &SS,
428 assert(!SS.isSet() && "ObjectType and scope specifier cannot coexist");
431 } else if (SS.isSet()) {
434 LookupCtx = computeDeclContext(SS, EnteringContext);
435 isDependent = isDependentScopeSpecifier(SS);
436 Found.setContextRange(SS.getRange());
448 RequireCompleteDeclContext(SS, LookupCtx))
503 SS.Extend(Context, IdInfo.Identifier, IdInfo.IdentifierLoc, IdInfo.CCLoc);
548 Found.getLookupNameInfo(), Found.getLookupKind(), S, &SS, CCC,
555 SS.clear();
558 << SS.getRange());
564 SS.MakeTrivial(Context, Corrected.getCorrectionSpecifier(),
638 SS.Extend(Context, Namespace, IdInfo.IdentifierLoc, IdInfo.CCLoc);
643 SS.Extend(Context, Alias, IdInfo.IdentifierLoc, IdInfo.CCLoc);
690 SS.Extend(Context, SourceLocation(), TLB.getTypeLocInContext(Context, T),
709 // resolve Identifier, then extend the SS with Identifier. This will have
738 SS.Extend(Context, /*TemplateKWLoc=*/SourceLocation(),
741 SS.Extend(Context, IdInfo.Identifier, IdInfo.IdentifierLoc,
754 DiagnoseUnknownTypeName(IdInfo.Identifier, IdInfo.IdentifierLoc, S, &SS,
763 } else if (SS.isSet())
765 << LookupCtx << SS.getRange();
774 bool EnteringContext, CXXScopeSpec &SS,
777 if (SS.isInvalid())
780 return BuildCXXNestedNameSpecifier(S, IdInfo, EnteringContext, SS,
785 bool Sema::ActOnCXXNestedNameSpecifierDecltype(CXXScopeSpec &SS,
788 if (SS.isInvalid() || DS.getTypeSpecType() == DeclSpec::TST_error)
807 SS.Extend(Context, SourceLocation(), TLB.getTypeLocInContext(Context, T),
812 bool Sema::ActOnCXXNestedNameSpecifierIndexedPack(CXXScopeSpec &SS,
816 if (SS.isInvalid() || DS.getTypeSpecType() == DeclSpec::TST_error)
830 SS.Extend(Context, SourceLocation(), TLB.getTypeLocInContext(Context, Type),
835 bool Sema::IsInvalidUnlessNestedName(Scope *S, CXXScopeSpec &SS,
838 if (SS.isInvalid())
841 return !BuildCXXNestedNameSpecifier(S, IdInfo, EnteringContext, SS,
846 CXXScopeSpec &SS,
855 if (SS.isInvalid())
868 assert(DTN->getQualifier() == SS.getScopeRep());
878 SpecTL.setQualifierLoc(SS.getWithLocInContext(Context));
886 SS.Extend(Context, TemplateKWLoc, Builder.getTypeLocInContext(Context, T),
901 if (SS.getRange().isValid())
902 R.setBegin(SS.getRange().getBegin());
936 SS.Extend(Context, TemplateKWLoc, Builder.getTypeLocInContext(Context, T),
949 void *Sema::SaveNestedNameSpecifierAnnotation(CXXScopeSpec &SS) {
950 if (SS.isEmpty() || SS.isInvalid())
954 (sizeof(NestedNameSpecifierAnnotation) + SS.location_size()),
958 Annotation->NNS = SS.getScopeRep();
959 memcpy(Annotation + 1, SS.location_data(), SS.location_size());
965 CXXScopeSpec &SS) {
967 SS.SetInvalid(AnnotationRange);
973 SS.Adopt(NestedNameSpecifierLoc(Annotation->NNS, Annotation + 1));
976 bool Sema::ShouldEnterDeclaratorScope(Scope *S, const CXXScopeSpec &SS) {
977 assert(SS.isSet() && "Parser passed invalid CXXScopeSpec.");
984 NestedNameSpecifier *Qualifier = SS.getScopeRep();
1019 bool Sema::ActOnCXXEnterDeclaratorScope(Scope *S, CXXScopeSpec &SS) {
1020 assert(SS.isSet() && "Parser passed invalid CXXScopeSpec.");
1022 if (SS.isInvalid()) return true;
1024 DeclContext *DC = computeDeclContext(SS, true);
1029 if (!DC->isDependentContext() && RequireCompleteDeclContext(SS, DC))
1036 RebuildNestedNameSpecifierInCurrentInstantiation(SS);
1041 void Sema::ActOnCXXExitDeclaratorScope(Scope *S, const CXXScopeSpec &SS) {
1042 assert(SS.isSet() && "Parser passed invalid CXXScopeSpec.");
1043 if (SS.isInvalid())
1045 assert(!SS.isInvalid() && computeDeclContext(SS, true) &&