Changes in / [37466ba0:c469f43]


Ignore:
Location:
src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • src/GenPoly/InstantiateGeneric.cc

    r37466ba0 rc469f43  
    233233                                } else {
    234234                                        // normalize possibly dtype-static parameter type
    235                                         out.push_back( new TypeExpr{
     235                                        out.push_back( new TypeExpr{ 
    236236                                                ScrubTyVars::scrubAll( paramType->get_type()->clone() ) } );
    237237                                        gt |= genericType::concrete;
     
    369369                                DeclMutator::addDeclaration( concDecl );
    370370                                insert( inst, typeSubs, concDecl );
    371                                 concDecl->acceptMutator( *this ); // recursively instantiate members
    372371                        }
    373372                        StructInstType *newInst = new StructInstType( inst->get_qualifiers(), concDecl->get_name() );
     
    424423                                DeclMutator::addDeclaration( concDecl );
    425424                                insert( inst, typeSubs, concDecl );
    426                                 concDecl->acceptMutator( *this ); // recursively instantiate members
    427425                        }
    428426                        UnionInstType *newInst = new UnionInstType( inst->get_qualifiers(), concDecl->get_name() );
  • src/SymTab/Validate.cc

    r37466ba0 rc469f43  
    240240                ReturnTypeFixer::fix( translationUnit ); // must happen before autogen
    241241                acceptAll( translationUnit, lrt ); // must happen before autogen, because sized flag needs to propagate to generated functions
    242                 acceptAll( translationUnit, epc ); // must happen before VerifyCtorDtorAssign, because void return objects should not exist
    243                 VerifyCtorDtorAssign::verify( translationUnit );  // must happen before autogen, because autogen examines existing ctor/dtors
    244242                Concurrency::applyKeywords( translationUnit );
    245243                autogenerateRoutines( translationUnit ); // moved up, used to be below compoundLiteral - currently needs EnumAndPointerDecayPass
    246244                Concurrency::implementMutexFuncs( translationUnit );
    247245                Concurrency::implementThreadStarter( translationUnit );
     246                acceptAll( translationUnit, epc );
    248247                ReturnChecker::checkFunctionReturns( translationUnit );
    249248                compoundliteral.mutateDeclarationList( translationUnit );
    250249                acceptAll( translationUnit, pass3 );
     250                VerifyCtorDtorAssign::verify( translationUnit );
    251251                ArrayLength::computeLength( translationUnit );
    252252        }
     
    817817                                throw SemanticError( "Constructors, destructors, and assignment functions require at least one parameter ", funcDecl );
    818818                        }
    819                         PointerType * ptrType = dynamic_cast< PointerType * >( params.front()->get_type() );
    820                         if ( ! ptrType || ptrType->is_array() ) {
     819                        if ( ! dynamic_cast< PointerType * >( params.front()->get_type() ) ) {
    821820                                throw SemanticError( "First parameter of a constructor, destructor, or assignment function must be a pointer ", funcDecl );
    822821                        }
  • src/SynTree/PointerType.cc

    r37466ba0 rc469f43  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // PointerType.cc --
     7// PointerType.cc -- 
    88//
    99// Author           : Richard C. Bilson
     
    3838void PointerType::print( std::ostream &os, int indent ) const {
    3939        Type::print( os, indent );
    40         if ( ! is_array() ) {
    41                 os << "pointer to ";
    42         } else {
    43                 os << "decayed ";
    44                 if ( isStatic ) {
    45                         os << "static ";
    46                 } // if
    47                 if ( isVarLen ) {
    48                         os << "variable length array of ";
    49                 } else if ( dimension ) {
    50                         os << "array of ";
    51                         dimension->print( os, indent );
    52                         os << " ";
    53                 } // if
    54         }
     40        os << "pointer to ";
     41        if ( isStatic ) {
     42                os << "static ";
     43        } // if
     44        if ( isVarLen ) {
     45                os << "variable length array of ";
     46        } else if ( dimension ) {
     47                os << "array of ";
     48                dimension->print( os, indent );
     49        } // if
    5550        if ( base ) {
    5651                base->print( os, indent );
  • src/SynTree/Type.h

    r37466ba0 rc469f43  
    247247        void set_isStatic( bool newValue ) { isStatic = newValue; }
    248248
    249         bool is_array() const { return isStatic || isVarLen || dimension; }
    250 
    251249        virtual PointerType *clone() const { return new PointerType( *this ); }
    252250        virtual void accept( Visitor & v ) { v.visit( this ); }
Note: See TracChangeset for help on using the changeset viewer.