Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SymTab/Indexer.cc

    rfbcde64 r08d5507b  
    1010// Created On       : Sun May 17 21:37:33 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Mar 30 16:38:47 2017
    13 // Update Count     : 19
     12// Last Modified On : Tue Mar 14 08:07:34 2017
     13// Update Count     : 17
    1414//
    1515
     
    119119                                FunctionDecl * decl;
    120120                                bool isUserDefinedFunc; // properties for this particular decl
    121                                 bool isDefaultCtor;
    122                                 bool isDtor;
     121                                bool isDefaultFunc;
    123122                                bool isCopyFunc;
    124123                        };
    125124                        // properties for this type
    126                         bool userDefinedFunc = false; // any user-defined function found
    127                         bool userDefinedCtor = false; // any user-defined constructor found
    128                         bool userDefinedDtor = false; // any user-defined destructor found
    129                         bool userDefinedCopyFunc = false; // user-defined copy ctor found
     125                        bool userDefinedFunc = false; // any user defined function found
     126                        bool userDefinedDefaultFunc = false; // user defined default ctor found
     127                        bool userDefinedCopyFunc = false; // user defined copy ctor found
    130128                        std::list< DeclBall > decls;
    131129
     
    134132                        ValueType & operator+=( FunctionDecl * function ) {
    135133                                bool isUserDefinedFunc = ! LinkageSpec::isOverridable( function->get_linkage() );
    136                                 bool isDefaultCtor = InitTweak::isDefaultConstructor( function );
    137                                 bool isDtor = InitTweak::isDestructor( function );
     134                                bool isDefaultFunc = function->get_functionType()->get_parameters().size() == 1;
    138135                                bool isCopyFunc = InitTweak::isCopyFunction( function, function->get_name() );
    139                                 decls.push_back( DeclBall{ function, isUserDefinedFunc, isDefaultCtor, isDtor, isCopyFunc } );
     136                                decls.push_back( DeclBall{ function, isUserDefinedFunc, isDefaultFunc, isCopyFunc } );
    140137                                userDefinedFunc = userDefinedFunc || isUserDefinedFunc;
    141                                 userDefinedCtor = userDefinedCtor || (isUserDefinedFunc && InitTweak::isConstructor( function->get_name() ) );
    142                                 userDefinedDtor = userDefinedDtor || (isUserDefinedFunc && isDtor);
     138                                userDefinedDefaultFunc = userDefinedDefaultFunc || (isUserDefinedFunc && isDefaultFunc);
    143139                                userDefinedCopyFunc = userDefinedCopyFunc || (isUserDefinedFunc && isCopyFunc);
    144140                                return *this;
     
    167163                // a default ctor, then the generated default ctor should never be seen, likewise for copy ctor
    168164                // and dtor. If the user defines any ctor/dtor, then no generated field ctors should be seen.
    169                 // If the user defines any ctor then the generated default ctor should not be seen.
    170165                for ( std::pair< const std::string, ValueType > & pair : funcMap ) {
    171166                        ValueType & val = pair.second;
    172167                        for ( ValueType::DeclBall ball : val.decls ) {
    173                                 if ( ! val.userDefinedFunc || ball.isUserDefinedFunc || (! val.userDefinedCtor && ball.isDefaultCtor) || (! val.userDefinedCopyFunc && ball.isCopyFunc) || (! val.userDefinedDtor && ball.isDtor) ) {
     168                                if ( ! val.userDefinedFunc || ball.isUserDefinedFunc || (! val.userDefinedDefaultFunc && ball.isDefaultFunc) || (! val.userDefinedCopyFunc && ball.isCopyFunc) ) {
    174169                                        // decl conforms to the rules described above, so it should be seen by the requester
    175170                                        out.push_back( ball.decl );
     
    483478        void Indexer::visit( CompoundLiteralExpr *compLitExpr ) {
    484479                acceptNewScope( compLitExpr->get_result(), *this );
     480                maybeAccept( compLitExpr->get_type(), *this );
    485481                maybeAccept( compLitExpr->get_initializer(), *this );
    486482        }
Note: See TracChangeset for help on using the changeset viewer.