542 {
545 case Expression::Kind::kFunctionReference:
547 case Expression::Kind::kMethodReference:
548 case Expression::Kind::kPoison:
549 case Expression::Kind::kSetting:
550 case Expression::Kind::kTypeReference:
551 case Expression::Kind::kVariableReference:
552
553 return false;
554
555 case Expression::Kind::kBinary: {
556 auto&
b =
e.template as<BinaryExpression>();
557 return (
b.left() && this->visitExpressionPtr(
b.left())) ||
559 }
560 case Expression::Kind::kChildCall: {
561
562 auto& c =
e.template as<ChildCall>();
563 for (auto& arg : c.arguments()) {
565 }
566 return false;
567 }
568 case Expression::Kind::kConstructorArray:
569 case Expression::Kind::kConstructorArrayCast:
570 case Expression::Kind::kConstructorCompound:
571 case Expression::Kind::kConstructorCompoundCast:
572 case Expression::Kind::kConstructorDiagonalMatrix:
573 case Expression::Kind::kConstructorMatrixResize:
574 case Expression::Kind::kConstructorScalarCast:
575 case Expression::Kind::kConstructorSplat:
576 case Expression::Kind::kConstructorStruct: {
577 auto& c =
e.asAnyConstructor();
578 for (auto& arg : c.argumentSpan()) {
580 }
581 return false;
582 }
583 case Expression::Kind::kFieldAccess:
585
586 case Expression::Kind::kFunctionCall: {
587 auto& c =
e.template as<FunctionCall>();
588 for (auto& arg : c.arguments()) {
590 }
591 return false;
592 }
594 auto&
i =
e.template as<IndexExpression>();
596 }
597 case Expression::Kind::kPostfix:
599
600 case Expression::Kind::kPrefix:
602
603 case Expression::Kind::kSwizzle: {
604 auto&
s =
e.template as<Swizzle>();
606 }
607
608 case Expression::Kind::kTernary: {
609 auto& t =
e.template as<TernaryExpression>();
613 }
614 default:
616 }
617}
virtual bool visitExpressionPtr(typename T::UniquePtrExpression &expr)=0