Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Tuples/Explode.h

    r0b5d871 r6bbce58  
    1616#pragma once
    1717
    18 #include "ResolvExpr/AlternativeFinder.h"
    19 #include "ResolvExpr/Resolver.h"
     18#include <iterator>                  // for back_inserter, back_insert_iterator
    2019
    21 #include "SynTree/Expression.h"
    22 #include "SynTree/Declaration.h"
    23 #include "SynTree/Type.h"
     20#include "ResolvExpr/Alternative.h"  // for Alternative, AltList
     21#include "SynTree/Expression.h"      // for Expression, UniqueExpr, AddressExpr
     22#include "SynTree/Type.h"            // for TupleType, Type
     23#include "Tuples.h"                  // for maybeImpure
    2424
    25 #include "Tuples.h"
     25namespace SymTab {
     26class Indexer;
     27}  // namespace SymTab
    2628
    2729namespace Tuples {
    2830        Expression * distributeReference( Expression * );
     31
     32        static inline CastExpr * isReferenceCast( Expression * expr ) {
     33                if ( CastExpr * castExpr = dynamic_cast< CastExpr * >( expr ) ) {
     34                        if ( dynamic_cast< ReferenceType * >( castExpr->result ) ) {
     35                                return castExpr;
     36                        }
     37                }
     38                return nullptr;
     39        }
    2940
    3041        /// helper function used by explode
     
    3344                if ( isTupleAssign ) {
    3445                        // tuple assignment needs CastExprs to be recursively exploded to easily get at all of the components
    35                         if ( CastExpr * castExpr = dynamic_cast< CastExpr * >( expr ) ) {
     46                        if ( CastExpr * castExpr = isReferenceCast( expr ) ) {
    3647                                ResolvExpr::AltList alts;
    3748                                explodeUnique( castExpr->get_arg(), alt, indexer, back_inserter( alts ), isTupleAssign );
Note: See TracChangeset for help on using the changeset viewer.