Home | History | Annotate | Download | only in Sema

Lines Matching defs:Var

2800     case Decl::Var:
8468 VarDecl *var = dyn_cast<VarDecl>(DRE->getDecl());
8469 if (!var) return NCCK_None;
8470 if (var->getType().isConstQualified()) return NCCK_None;
8471 assert(var->hasLocalStorage() && "capture added 'const' to non-local?");
8475 while (DC != var->getDeclContext()) {
8480 if (!var->isInitCapture())
8518 VarDecl *var = cast<VarDecl>(declRef->getDecl());
8522 if (var->isARCPseudoStrong() &&
8523 (!var->getTypeSourceInfo() ||
8524 !var->getTypeSourceInfo()->getType().isConstQualified())) {
8528 if (method && var == method->getSelfDecl())
10683 const VarDecl *var = CI.getVariable();
10684 if (var->getType().isDestructedType() != QualType::DK_none) {
11565 VarDecl *var, DeclContext *DC) {
11566 DeclContext *VarDC = var->getDeclContext();
11571 if (isa<ParmVarDecl>(var) &&
11588 << var->getIdentifier();
11591 << var->getIdentifier() << fn->getDeclName();
11594 << var->getIdentifier();
11599 << var->getIdentifier();
11602 S.Diag(var->getLocation(), diag::note_entity_declared_at)
11603 << var->getIdentifier();
11610 static bool isVariableAlreadyCapturedInScopeInfo(CapturingScopeInfo *CSI, VarDecl *Var,
11615 if (CSI->CaptureMap.count(Var)) {
11620 CaptureType = CSI->getCapture(Var).getCaptureType();
11625 const CapturingScopeInfo::Capture &Cap = CSI->getCapture(Var);
11636 static DeclContext *getParentOfCapturingContextOrNull(DeclContext *DC, VarDecl *Var,
11643 diagnoseUncapturableValueReference(S, Loc, Var, DC);
11651 static bool isVariableCapturable(CapturingScopeInfo *CSI, VarDecl *Var,
11662 if (IsLambda && !Var->getDeclName()) {
11665 S.Diag(Var->getLocation(), diag::note_declared_at);
11671 if (Var->getType()->isVariablyModifiedType() && (IsBlock || IsLambda)) {
11676 S.Diag(Loc, diag::err_lambda_capture_vm_type) << Var->getDeclName();
11677 S.Diag(Var->getLocation(), diag::note_previous_decl)
11678 << Var->getDeclName();
11684 if (const RecordType *VTTy = Var->getType()->getAs<RecordType>()) {
11691 << Var->getDeclName();
11692 S.Diag(Var->getLocation(), diag::note_previous_decl)
11693 << Var->getDeclName();
11698 const bool HasBlocksAttr = Var->hasAttr<BlocksAttr>();
11704 << Var->getDeclName() << !IsLambda;
11705 S.Diag(Var->getLocation(), diag::note_previous_decl)
11706 << Var->getDeclName();
11715 static bool captureInBlock(BlockScopeInfo *BSI, VarDecl *Var,
11729 S.Diag(Var->getLocation(), diag::note_previous_decl)
11730 << Var->getDeclName();
11740 S.Diag(Var->getLocation(), diag::note_previous_decl)
11741 << Var->getDeclName();
11745 const bool HasBlocksAttr = Var->hasAttr<BlocksAttr>();
11762 if (isa<ParmVarDecl>(Var))
11763 S.FinalizeVarWithDestructor(Var, Record);
11772 Expr *DeclRef = new (S.Context) DeclRefExpr(Var, Nested,
11778 InitializedEntity::InitializeBlock(Var->getLocation(),
11797 BSI->addCapture(Var, HasBlocksAttr, ByRef, Nested, Loc,
11807 VarDecl *Var,
11834 CopyExpr = new (S.Context) DeclRefExpr(Var, RefersToEnclosingLocal,
11836 Var->setReferenced(true);
11837 Var->markUsed(S.Context);
11842 RSI->addCapture(Var, /*isBlock*/false, ByRef, RefersToEnclosingLocal, Loc,
11853 VarDecl *Var, QualType FieldType,
11885 Expr *Ref = new (S.Context) DeclRefExpr(Var, RefersToEnclosingLocal,
11887 Var->setReferenced(true);
11888 Var->markUsed(S.Context);
11944 InitializedEntity::InitializeLambdaCapture(Var->getIdentifier(),
11974 VarDecl *Var,
12028 S.Diag(Var->getLocation(), diag::note_previous_decl)
12029 << Var->getDeclName();
12039 Var->getDeclName()))
12051 ExprResult Result = addAsFieldToClosureType(S, LSI, Var,
12074 LSI->addCapture(Var, /*IsBlock=*/false, ByRef, RefersToEnclosingLocal,
12081 bool Sema::tryCaptureVariable(VarDecl *Var, SourceLocation ExprLoc,
12105 if (!Var->isInitCapture() && Var->getDeclContext() == DC) return true;
12106 if (!Var->hasLocalStorage()) return true;
12116 CaptureType = Var->getType();
12123 DeclContext *ParentDC = getParentOfCapturingContextOrNull(DC, Var,
12134 if (isVariableAlreadyCapturedInScopeInfo(CSI, Var, Nested, CaptureType,
12145 Diag(ExprLoc, diag::err_lambda_impcap) << Var->getDeclName();
12146 Diag(Var->getLocation(), diag::note_previous_decl)
12147 << Var->getDeclName();
12150 diagnoseUncapturableValueReference(*this, ExprLoc, Var, DC);
12157 if (!isVariableCapturable(CSI, Var, ExprLoc, BuildAndDiagnose, *this))
12161 if (Var->getType()->isVariablyModifiedType()) {
12164 QualType QTy = Var->getType();
12165 if (ParmVarDecl *PVD = dyn_cast_or_null<ParmVarDecl>(Var))
12263 Diag(ExprLoc, diag::err_lambda_impcap) << Var->getDeclName();
12264 Diag(Var->getLocation(), diag::note_previous_decl)
12265 << Var->getDeclName();
12286 } while (!Var->getDeclContext()->Equals(DC));
12298 if (!captureInBlock(BSI, Var, ExprLoc,
12304 if (!captureInCapturedRegion(RSI, Var, ExprLoc,
12311 if (!captureInLambda(LSI, Var, ExprLoc,
12322 bool Sema::tryCaptureVariable(VarDecl *Var, SourceLocation Loc,
12326 return tryCaptureVariable(Var, Loc, Kind, EllipsisLoc,
12331 QualType Sema::getCapturedDeclRefType(VarDecl *Var, SourceLocation Loc) {
12336 if (tryCaptureVariable(Var, Loc, TryCapture_Implicit, SourceLocation(),
12350 static inline bool IsVariableNonDependentAndAConstantExpression(VarDecl *Var,
12353 if (Var->getType()->isDependentType())
12356 Var->getAnyInitializer(DefVD);
12363 return IsVariableAConstantExpression(Var, Context);
12381 VarDecl *Var = nullptr;
12383 Var = dyn_cast<VarDecl>(DRE->getFoundDecl());
12385 Var = dyn_cast<VarDecl>(ME->getMemberDecl());
12387 if (Var && IsVariableNonDependentAndAConstantExpression(Var, Context))
12408 VarDecl *Var;
12411 Var = cast<VarDecl>(DRE->getDecl());
12414 Var = cast<VarDecl>(ME->getMemberDecl());
12420 MarkVarDeclODRUsed(Var, Loc, *this,
12429 VarDecl *Var, Expr *E) {
12432 Var->setReferenced();
12447 (SemaRef.CurContext != Var->getDeclContext() &&
12448 Var->getDeclContext()->isFunctionOrMethod() &&
12449 Var->hasLocalStorage());
12462 if (!Var->getType()->isReferenceType() ||
12463 !IsVariableNonDependentAndAConstantExpression(Var, SemaRef.Context))
12470 dyn_cast<VarTemplateSpecializationDecl>(Var);
12471 assert(!isa<VarTemplatePartialSpecializationDecl>(Var) &&
12478 TemplateSpecializationKind TSK = Var->getTemplateSpecializationKind();
12482 if (TryInstantiating && !isa<VarTemplateSpecializationDecl>(Var)) {
12483 if (Var->getPointOfInstantiation().isInvalid()) {
12486 L->StaticDataMemberInstantiated(Var);
12487 } else if (!Var->isUsableInConstantExpressions(SemaRef.Context))
12493 if (Var->getPointOfInstantiation().isInvalid())
12494 Var->setTemplateSpecializationKind(TSK, Loc);
12497 SourceLocation PointOfInstantiation = Var->getPointOfInstantiation();
12506 if (Var->isUsableInConstantExpressions(SemaRef.Context)) {
12509 SemaRef.InstantiateVariableDefinition(PointOfInstantiation, Var);
12512 .push_back(std::make_pair(Var, PointOfInstantiation));
12526 if (E && IsVariableAConstantExpression(Var, SemaRef.Context)) {
12529 if (!Var->getType()->isReferenceType())
12532 MarkVarDeclODRUsed(Var, Loc, SemaRef,
12539 void Sema::MarkVariableReferenced(SourceLocation Loc, VarDecl *Var) {
12540 DoMarkVarDeclReferenced(*this, Loc, Var, nullptr);
12545 if (VarDecl *Var = dyn_cast<VarDecl>(D)) {
12546 DoMarkVarDeclReferenced(SemaRef, Loc, Var, E);