@@ -555,23 +555,20 @@ std::pair<bool, Expr *> ModelASTWalker::walkToExprPre(Expr *E) {
555
555
if (isa<DefaultArgumentExpr>(Elem))
556
556
return ;
557
557
558
- CharSourceRange NR;
559
558
auto NL = Arg.getLabelLoc ();
560
559
auto Name = Arg.getLabel ();
561
- if (NL.isValid () && !Name.empty ())
562
- NR = CharSourceRange (NL, Name.getLength ());
563
560
564
561
SyntaxStructureNode SN;
565
562
SN.Kind = SyntaxStructureKind::Argument;
566
- SN.NameRange = NR;
567
563
SN.BodyRange = charSourceRangeFromSourceRange (SM, Elem->getSourceRange ());
568
- if (NR .isValid ()) {
569
- SN.Range = charSourceRangeFromSourceRange (SM, SourceRange (NR. getStart (),
570
- Elem-> getEndLoc ()));
571
- passTokenNodesUntil (NR. getStart (), ExcludeNodeAtLocation );
572
- }
573
- else
564
+ if (NL .isValid () && !Name. empty ()) {
565
+ SN.NameRange = CharSourceRange (NL, Name. getLength ());
566
+ SN. Range = charSourceRangeFromSourceRange (
567
+ SM, SourceRange (NL, Elem-> getEndLoc ()) );
568
+ passTokenNodesUntil (NL, ExcludeNodeAtLocation);
569
+ } else {
574
570
SN.Range = SN.BodyRange ;
571
+ }
575
572
576
573
pushStructureNode (SN, Elem);
577
574
};
@@ -605,6 +602,17 @@ std::pair<bool, Expr *> ModelASTWalker::walkToExprPre(Expr *E) {
605
602
SM, CE->getArgs ()->getSourceRange ());
606
603
pushStructureNode (SN, CE);
607
604
605
+ } else if (auto *SE = dyn_cast<SubscriptExpr>(E)) {
606
+ SyntaxStructureNode SN;
607
+ SN.Kind = SyntaxStructureKind::CallExpression;
608
+ SN.Range = charSourceRangeFromSourceRange (SM, E->getSourceRange ());
609
+ SN.NameRange =
610
+ charSourceRangeFromSourceRange (SM, SE->getBase ()->getSourceRange ());
611
+ if (SE->getArgs ()->getSourceRange ().isValid ())
612
+ SN.BodyRange = innerCharSourceRangeFromSourceRange (
613
+ SM, SE->getArgs ()->getSourceRange ());
614
+ pushStructureNode (SN, SE);
615
+
608
616
} else if (auto *ObjectE = dyn_cast<ObjectLiteralExpr>(E)) {
609
617
SyntaxStructureNode SN;
610
618
SN.Kind = SyntaxStructureKind::ObjectLiteralExpression;
0 commit comments