Changeset bff227f for src/SymTab


Ignore:
Timestamp:
Jul 21, 2017, 3:57:11 PM (7 years ago)
Author:
Rob Schluntz <rschlunt@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
9191a8e
Parents:
53a8e68
Message:

Refactor operator predicates into OperatorTable?.cc

Location:
src/SymTab
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/SymTab/Autogen.cc

    r53a8e68 rbff227f  
    2121#include "SynTree/TypeSubstitution.h"
    2222#include "Common/utility.h"
     23#include "CodeGen/OperatorTable.h"
    2324#include "AddVisit.h"
    2425#include "MakeLibCfa.h"
     
    223224                        FunctionType * ftype = data.genType( refType );
    224225
    225                         if(concurrent_type && InitTweak::isDestructor( data.fname )) {
     226                        if(concurrent_type && CodeGen::isDestructor( data.fname )) {
    226227                                ftype->get_parameters().front()->get_type()->set_mutex( true );
    227228                        }
     
    407408
    408409                // field ctors are only generated if default constructor and copy constructor are both generated
    409                 unsigned numCtors = std::count_if( newFuncs.begin(), newFuncs.end(), [](FunctionDecl * dcl) { return InitTweak::isConstructor( dcl->get_name() ); } );
     410                unsigned numCtors = std::count_if( newFuncs.begin(), newFuncs.end(), [](FunctionDecl * dcl) { return CodeGen::isConstructor( dcl->get_name() ); } );
    410411
    411412                if ( functionNesting == 0 ) {
     
    422423                        // generate appropriate calls to member ctor, assignment
    423424                        // destructor needs to do everything in reverse, so pass "forward" based on whether the function is a destructor
    424                         if ( ! InitTweak::isDestructor( dcl->get_name() ) ) {
     425                        if ( ! CodeGen::isDestructor( dcl->get_name() ) ) {
    425426                                makeStructFunctionBody( aggregateDecl->get_members().begin(), aggregateDecl->get_members().end(), dcl, isDynamicLayout );
    426427                        } else {
    427428                                makeStructFunctionBody( aggregateDecl->get_members().rbegin(), aggregateDecl->get_members().rend(), dcl, isDynamicLayout, false );
    428429                        }
    429                         if ( InitTweak::isAssignment( dcl->get_name() ) ) {
     430                        if ( CodeGen::isAssignment( dcl->get_name() ) ) {
    430431                                // assignment needs to return a value
    431432                                FunctionType * assignType = dcl->get_functionType();
     
    486487
    487488                makeUnionFieldsAssignment( srcParam, dstParam, back_inserter( funcDecl->get_statements()->get_kids() ) );
    488                 if ( InitTweak::isAssignment( funcDecl->get_name() ) ) {
     489                if ( CodeGen::isAssignment( funcDecl->get_name() ) ) {
    489490                        // also generate return statement in assignment
    490491                        funcDecl->get_statements()->get_kids().push_back( new ReturnStmt( noLabels, new VariableExpr( srcParam ) ) );
  • src/SymTab/Indexer.cc

    r53a8e68 rbff227f  
    2626
    2727#include "Common/utility.h"
     28
     29#include "CodeGen/OperatorTable.h"
    2830
    2931#include "ResolvExpr/typeops.h"
     
    112114        void Indexer::removeSpecialOverrides( const std::string &id, std::list< DeclarationWithType * > & out ) const {
    113115                // only need to perform this step for constructors, destructors, and assignment functions
    114                 if ( ! InitTweak::isCtorDtorAssign( id ) ) return;
     116                if ( ! CodeGen::isCtorDtorAssign( id ) ) return;
    115117
    116118                // helpful data structure
     
    140142                                decls.push_back( DeclBall{ function, isUserDefinedFunc, isDefaultCtor, isDtor, isCopyFunc } );
    141143                                existsUserDefinedFunc = existsUserDefinedFunc || isUserDefinedFunc;
    142                                 existsUserDefinedCtor = existsUserDefinedCtor || (isUserDefinedFunc && InitTweak::isConstructor( function->get_name() ) );
     144                                existsUserDefinedCtor = existsUserDefinedCtor || (isUserDefinedFunc && CodeGen::isConstructor( function->get_name() ) );
    143145                                existsUserDefinedDtor = existsUserDefinedDtor || (isUserDefinedFunc && isDtor);
    144146                                existsUserDefinedCopyFunc = existsUserDefinedCopyFunc || (isUserDefinedFunc && isCopyFunc);
  • src/SymTab/Validate.cc

    r53a8e68 rbff227f  
    4343
    4444#include "CodeGen/CodeGenerator.h"
     45#include "CodeGen/OperatorTable.h"
    4546
    4647#include "Common/PassVisitor.h"
     
    5253
    5354#include "GenPoly/DeclMutator.h"
    54 
    55 #include "InitTweak/InitTweak.h"
    5655
    5756#include "AddVisit.h"
     
    827826                std::list< DeclarationWithType * > &params = funcType->get_parameters();
    828827
    829                 if ( InitTweak::isCtorDtorAssign( funcDecl->get_name() ) ) {
     828                if ( CodeGen::isCtorDtorAssign( funcDecl->get_name() ) ) { // TODO: also check /=, etc.
    830829                        if ( params.size() == 0 ) {
    831830                                throw SemanticError( "Constructors, destructors, and assignment functions require at least one parameter ", funcDecl );
     
    835834                                throw SemanticError( "First parameter of a constructor, destructor, or assignment function must be a reference ", funcDecl );
    836835                        }
    837                         if ( InitTweak::isCtorDtor( funcDecl->get_name() ) && returnVals.size() != 0 ) {
     836                        if ( CodeGen::isCtorDtor( funcDecl->get_name() ) && returnVals.size() != 0 ) {
    838837                                throw SemanticError( "Constructors and destructors cannot have explicit return values ", funcDecl );
    839838                        }
Note: See TracChangeset for help on using the changeset viewer.