Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/GenPoly/SpecializeNew.cpp

    rc6b4432 r8f31be6  
    2323#include "GenPoly/GenPoly.h"             // for getFunctionType
    2424#include "ResolvExpr/FindOpenVars.h"     // for findOpenVars
     25#include "ResolvExpr/TypeEnvironment.h"  // for FirstOpen, FirstClosed
    2526
    2627namespace GenPoly {
     
    8081}
    8182
    82 // The number of elements in a list, if all tuples had been flattened.
    83 size_t flatTypeListSize( const std::vector<ast::ptr<ast::Type>> & types ) {
    84         size_t sum = 0;
    85         for ( const ast::ptr<ast::Type> & type : types ) {
    86                 if ( const ast::TupleType * tuple = type.as<ast::TupleType>() ) {
    87                         sum += flatTypeListSize( tuple->types );
    88                 } else {
    89                         sum += 1;
    90                 }
    91         }
    92         return sum;
     83// The number of elements in a type if it is a flattened tuple.
     84size_t flatTupleSize( const ast::Type * type ) {
     85        if ( auto tuple = dynamic_cast<const ast::TupleType *>( type ) ) {
     86                size_t sum = 0;
     87                for ( auto t : *tuple ) {
     88                        sum += flatTupleSize( t );
     89                }
     90                return sum;
     91        } else {
     92                return 1;
     93        }
    9394}
    9495
    9596// Find the total number of components in a parameter list.
    9697size_t functionParameterSize( const ast::FunctionType * type ) {
    97         return flatTypeListSize( type->params );
     98        size_t sum = 0;
     99        for ( auto param : type->params ) {
     100                sum += flatTupleSize( param );
     101        }
     102        return sum;
    98103}
    99104
Note: See TracChangeset for help on using the changeset viewer.