@@ -454,19 +454,18 @@ void VarScopeVisitor::exit(const NamedDecl* ast, RV& rv) {
454454 // is there an analysis that does need to handle loop indices?
455455 if (!isLoopIndex (ast)) {
456456 if (auto vld = ast->toVarLikeDecl ()) {
457- const AstNode* astForDeclProps;
458-
459457 const AstNode* parent;
460458 const AstNode* initExpr;
461459 QualifiedType initType;
462460 Qualifier intentOrKind;
463461 bool isFormal;
464462
465463 auto maybeOuterTuple = outermostContainingTuple ();
466- if (const TupleDecl* outerTuple =
464+ if (vld->name () == USTR (" _" ) && maybeOuterTuple) {
465+ // Skip _ ident in tuple
466+ } else if (const TupleDecl* outerTuple =
467467 (maybeOuterTuple ? maybeOuterTuple->toTupleDecl () : nullptr )) {
468- astForDeclProps = outerTuple;
469-
468+ parent = parsing::parentAst (context, outerTuple);
470469 initExpr = outerTuple->initExpression ();
471470 auto parentInitExpr = tupleInitExprsStack.back ();
472471 if (parentInitExpr) {
@@ -480,19 +479,20 @@ void VarScopeVisitor::exit(const NamedDecl* ast, RV& rv) {
480479 parentInitTupleType->elementType (indexWithinContainingTuple (ast));
481480 }
482481 intentOrKind = (Qualifier)outerTuple->intentOrKind ();
483- } else {
484- astForDeclProps = vld;
482+ isFormal = outerTuple->isFormal () || outerTuple->isVarArgFormal () || outerTuple->isTupleDeclFormal ();
485483
484+ handleDeclaration (vld, parent, initExpr, initType, intentOrKind, isFormal,
485+ rv);
486+ } else {
487+ parent = parsing::parentAst (context, vld);
486488 initExpr = vld->initExpression ();
487489 initType = initExpr ? rv.byAst (initExpr).type () : QualifiedType ();
488490 intentOrKind = vld->storageKind ();
489- }
490- parent = parsing::parentAst (context, astForDeclProps);
491- isFormal =
492- astForDeclProps->isFormal () || astForDeclProps->isVarArgFormal ();
491+ isFormal = vld->isFormal () || vld->isVarArgFormal ();
493492
494- handleDeclaration (vld, parent, initExpr, initType, intentOrKind, isFormal,
493+ handleDeclaration (vld, parent, initExpr, initType, intentOrKind, isFormal,
495494 rv);
495+ }
496496 }
497497 }
498498
0 commit comments