Changes in src/Tuples/Explode.h [0b5d871:6bbce58]
- File:
-
- 1 edited
-
src/Tuples/Explode.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Tuples/Explode.h
r0b5d871 r6bbce58 16 16 #pragma once 17 17 18 #include "ResolvExpr/AlternativeFinder.h" 19 #include "ResolvExpr/Resolver.h" 18 #include <iterator> // for back_inserter, back_insert_iterator 20 19 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 24 24 25 #include "Tuples.h" 25 namespace SymTab { 26 class Indexer; 27 } // namespace SymTab 26 28 27 29 namespace Tuples { 28 30 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 } 29 40 30 41 /// helper function used by explode … … 33 44 if ( isTupleAssign ) { 34 45 // 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 ) ) { 36 47 ResolvExpr::AltList alts; 37 48 explodeUnique( castExpr->get_arg(), alt, indexer, back_inserter( alts ), isTupleAssign );
Note:
See TracChangeset
for help on using the changeset viewer.