Changes in / [69efef81:1cb35c0]


Ignore:
Location:
src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    r69efef81 r1cb35c0  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 19 17:40:03 2018
    13 // Update Count     : 1106
     12// Last Modified On : Fri Jul 20 14:56:54 2018
     13// Update Count     : 1107
    1414//
    1515
     
    124124} // DeclarationNode::clone
    125125
    126 void DeclarationNode::print( std::ostream &os, int indent ) const {
     126void DeclarationNode::print( std::ostream & os, int indent ) const {
    127127        os << string( indent, ' ' );
    128128        if ( name ) {
     
    160160}
    161161
    162 void DeclarationNode::printList( std::ostream &os, int indent ) const {
     162void DeclarationNode::printList( std::ostream & os, int indent ) const {
    163163        ParseNode::printList( os, indent );
    164164        if ( hasEllipsis ) {
     
    514514} // DeclarationNode::copySpecifiers
    515515
    516 static void addQualifiersToType( TypeData *&src, TypeData * dst ) {
     516static void addQualifiersToType( TypeData *& src, TypeData * dst ) {
    517517        if ( dst->base ) {
    518518                addQualifiersToType( src, dst->base );
     
    567567} // addQualifiers
    568568
    569 static void addTypeToType( TypeData *&src, TypeData *&dst ) {
     569static void addTypeToType( TypeData *& src, TypeData *& dst ) {
    570570        if ( src->forall && dst->kind == TypeData::Function ) {
    571571                if ( dst->forall ) {
     
    958958}
    959959
    960 void buildList( const DeclarationNode * firstNode, std::list< Declaration * > &outputList ) {
     960void buildList( const DeclarationNode * firstNode, std::list< Declaration * > & outputList ) {
    961961        SemanticErrorException errors;
    962962        std::back_insert_iterator< std::list< Declaration * > > out( outputList );
     
    10131013                                } // if
    10141014                        } // if
    1015                 } catch( SemanticErrorException &e ) {
     1015                } catch( SemanticErrorException & e ) {
    10161016                        errors.append( e );
    10171017                } // try
     
    10241024
    10251025// currently only builds assertions, function parameters, and return values
    1026 void buildList( const DeclarationNode * firstNode, std::list< DeclarationWithType * > &outputList ) {
     1026void buildList( const DeclarationNode * firstNode, std::list< DeclarationWithType * > & outputList ) {
    10271027        SemanticErrorException errors;
    10281028        std::back_insert_iterator< std::list< DeclarationWithType * > > out( outputList );
     
    10551055                                * out++ = obj;
    10561056                        } // if
    1057                 } catch( SemanticErrorException &e ) {
     1057                } catch( SemanticErrorException & e ) {
    10581058                        errors.append( e );
    10591059                } // try
     
    10651065} // buildList
    10661066
    1067 void buildTypeList( const DeclarationNode * firstNode, std::list< Type * > &outputList ) {
     1067void buildTypeList( const DeclarationNode * firstNode, std::list< Type * > & outputList ) {
    10681068        SemanticErrorException errors;
    10691069        std::back_insert_iterator< std::list< Type * > > out( outputList );
     
    10731073                try {
    10741074                        * out++ = cur->buildType();
    1075                 } catch( SemanticErrorException &e ) {
     1075                } catch( SemanticErrorException & e ) {
    10761076                        errors.append( e );
    10771077                } // try
  • src/Parser/ParseNode.h

    r69efef81 r1cb35c0  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 19 15:55:26 2018
    13 // Update Count     : 848
     12// Last Modified On : Fri Jul 20 14:56:30 2018
     13// Update Count     : 850
    1414//
    1515
     
    6868        }
    6969
    70         virtual void print( __attribute__((unused)) std::ostream &os, __attribute__((unused)) int indent = 0 ) const {}
    71         virtual void printList( std::ostream &os, int indent = 0 ) const {
     70        virtual void print( __attribute__((unused)) std::ostream & os, __attribute__((unused)) int indent = 0 ) const {}
     71        virtual void printList( std::ostream & os, int indent = 0 ) const {
    7272                print( os, indent );
    7373                if ( next ) next->print( os, indent );
     
    103103        InitializerNode * next_init() const { return kids; }
    104104
    105         void print( std::ostream &os, int indent = 0 ) const;
     105        void print( std::ostream & os, int indent = 0 ) const;
    106106        void printOneLine( std::ostream & ) const;
    107107
     
    127127        ExpressionNode * set_extension( bool exten ) { extension = exten; return this; }
    128128
    129         virtual void print( std::ostream &os, __attribute__((unused)) int indent = 0 ) const override {
    130                 os << expr.get() << std::endl;
    131         }
    132         void printOneLine( __attribute__((unused)) std::ostream &os, __attribute__((unused)) int indent = 0 ) const {}
     129        virtual void print( std::ostream & os, __attribute__((unused)) int indent = 0 ) const override {
     130                os << expr.get();
     131        }
     132        void printOneLine( __attribute__((unused)) std::ostream & os, __attribute__((unused)) int indent = 0 ) const {}
    133133
    134134        template<typename T>
     
    290290        }
    291291
    292         virtual void print( __attribute__((unused)) std::ostream &os, __attribute__((unused)) int indent = 0 ) const override;
    293         virtual void printList( __attribute__((unused)) std::ostream &os, __attribute__((unused)) int indent = 0 ) const override;
     292        virtual void print( __attribute__((unused)) std::ostream & os, __attribute__((unused)) int indent = 0 ) const override;
     293        virtual void printList( __attribute__((unused)) std::ostream & os, __attribute__((unused)) int indent = 0 ) const override;
    294294
    295295        Declaration * build() const;
     
    381381        virtual StatementNode * append_last_case( StatementNode * );
    382382
    383         virtual void print( std::ostream &os, __attribute__((unused)) int indent = 0 ) const override {
     383        virtual void print( std::ostream & os, __attribute__((unused)) int indent = 0 ) const override {
    384384                os << stmt.get() << std::endl;
    385385        }
     
    439439
    440440template< typename SynTreeType, typename NodeType, template< typename, typename...> class Container, typename... Args >
    441 void buildList( const NodeType * firstNode, Container< SynTreeType *, Args... > &outputList ) {
     441void buildList( const NodeType * firstNode, Container< SynTreeType *, Args... > & outputList ) {
    442442        SemanticErrorException errors;
    443443        std::back_insert_iterator< Container< SynTreeType *, Args... > > out( outputList );
     
    453453                                assertf(false, "buildList unknown type");
    454454                        } // if
    455                 } catch( SemanticErrorException &e ) {
     455                } catch( SemanticErrorException & e ) {
    456456                        errors.append( e );
    457457                } // try
     
    464464
    465465// in DeclarationNode.cc
    466 void buildList( const DeclarationNode * firstNode, std::list< Declaration * > &outputList );
    467 void buildList( const DeclarationNode * firstNode, std::list< DeclarationWithType * > &outputList );
    468 void buildTypeList( const DeclarationNode * firstNode, std::list< Type * > &outputList );
     466void buildList( const DeclarationNode * firstNode, std::list< Declaration * > & outputList );
     467void buildList( const DeclarationNode * firstNode, std::list< DeclarationWithType * > & outputList );
     468void buildTypeList( const DeclarationNode * firstNode, std::list< Type * > & outputList );
    469469
    470470template< typename SynTreeType, typename NodeType >
    471 void buildMoveList( const NodeType * firstNode, std::list< SynTreeType * > &outputList ) {
     471void buildMoveList( const NodeType * firstNode, std::list< SynTreeType * > & outputList ) {
    472472        buildList( firstNode, outputList );
    473473        delete firstNode;
  • src/Parser/TypeData.cc

    r69efef81 r1cb35c0  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jul 18 17:51:18 2018
    13 // Update Count     : 607
     12// Last Modified On : Fri Jul 20 14:39:31 2018
     13// Update Count     : 622
    1414//
    1515
     
    271271
    272272        switch ( kind ) {
    273           case Unknown:
    274                 os << "entity of unknown type ";
     273          case Basic:
     274                if ( signedness != DeclarationNode::NoSignedness ) os << DeclarationNode::signednessNames[ signedness ] << " ";
     275                if ( length != DeclarationNode::NoLength ) os << DeclarationNode::lengthNames[ length ] << " ";
     276                if ( complextype == DeclarationNode::NoComplexType ) { // basic type
     277                        assert( basictype != DeclarationNode::NoBasicType );
     278                        os << DeclarationNode::basicTypeNames[ basictype ] << " ";
     279                } else {                                                                                // complex type
     280                        // handle double _Complex
     281                        if ( basictype != DeclarationNode::NoBasicType ) os << DeclarationNode::basicTypeNames[ basictype ] << " ";
     282                        os << DeclarationNode::complexTypeNames[ complextype ] << " ";
     283                } // if
    275284                break;
    276285          case Pointer:
     
    281290                } // if
    282291                break;
    283           case EnumConstant:
    284                 os << "enumeration constant ";
    285                 break;
    286           case Basic:
    287                 if ( signedness != DeclarationNode::NoSignedness ) os << DeclarationNode::signednessNames[ signedness ] << " ";
    288                 if ( length != DeclarationNode::NoLength ) os << DeclarationNode::lengthNames[ length ] << " ";
    289                 assert( basictype != DeclarationNode::NoBasicType );
    290                 os << DeclarationNode::basicTypeNames[ basictype ] << " ";
    291                 if ( complextype != DeclarationNode::NoComplexType ) os << DeclarationNode::complexTypeNames[ complextype ] << " ";
     292          case Reference:
     293                os << "reference ";
     294                if ( base ) {
     295                        os << "to ";
     296                        base->print( os, indent );
     297                } // if
    292298                break;
    293299          case Array:
     
    375381                } // if
    376382                break;
    377           case SymbolicInst:
    378                 os << "instance of type " << *symbolic.name;
    379                 if ( symbolic.actuals ) {
    380                         os << " with parameters" << endl;
    381                         symbolic.actuals->printList( os, indent + 2 );
    382                 } // if
     383          case EnumConstant:
     384                os << "enumeration constant ";
    383385                break;
    384386          case Symbolic:
     
    402404                } // if
    403405                break;
     406          case SymbolicInst:
     407                os << *symbolic.name;
     408                if ( symbolic.actuals ) {
     409                        os << "(";
     410                        symbolic.actuals->printList( os, indent + 2 );
     411                        os << ")";
     412                } // if
     413                break;
    404414          case Tuple:
    405415                os << "tuple ";
     
    417427          case Builtin:
    418428                os << DeclarationNode::builtinTypeNames[builtintype];
     429                break;
     430          case GlobalScope:
     431                break;
     432          case Qualified:
     433                qualified.parent->print( os );
     434                os << ".";
     435                qualified.child->print( os );
     436                break;
     437          case Unknown:
     438                os << "entity of unknown type ";
    419439                break;
    420440          default:
  • src/Parser/TypeData.h

    r69efef81 r1cb35c0  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jul 18 17:31:15 2018
    13 // Update Count     : 194
     12// Last Modified On : Fri Jul 20 13:56:40 2018
     13// Update Count     : 195
    1414//
    1515
     
    2626
    2727struct TypeData {
    28         enum Kind { Basic, Pointer, Array, Reference, Function, Aggregate, AggregateInst, Enum, EnumConstant, Symbolic,
     28        enum Kind { Basic, Pointer, Reference, Array, Function, Aggregate, AggregateInst, Enum, EnumConstant, Symbolic,
    2929                                SymbolicInst, Tuple, Typeof, Builtin, GlobalScope, Qualified, Unknown };
    3030
     
    7777        };
    7878
    79         struct Qualified_t { // qualified type S.T
     79        struct Qualified_t {                                                            // qualified type S.T
    8080                TypeData * parent;
    8181                TypeData * child;
  • src/Parser/parser.yy

    r69efef81 r1cb35c0  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 19 22:21:56 2018
    13 // Update Count     : 3827
     12// Last Modified On : Fri Jul 20 11:46:46 2018
     13// Update Count     : 3837
    1414//
    1515
     
    172172        return new_name;
    173173} // build_postfix_name
     174
     175DeclarationNode * fieldDecl( DeclarationNode * typeSpec, DeclarationNode * fieldList ) {
     176        if ( ! fieldList ) {                                                            // field declarator ?
     177                if ( ! ( typeSpec->type && typeSpec->type->kind == TypeData::Aggregate ) ) {
     178                        stringstream ss;
     179                        typeSpec->type->print( ss );
     180                        SemanticWarning( yylloc, Warning::SuperfluousDecl, ss.str().c_str() );
     181                        return nullptr;
     182                } // if
     183                fieldList = DeclarationNode::newName( nullptr );
     184        } // if
     185        return distAttr( typeSpec, fieldList );                         // mark all fields in list
     186} // fieldDecl
    174187
    175188bool forall = false, yyy = false;                                               // aggregate have one or more forall qualifiers ?
     
    19421955field_declaration:
    19431956        type_specifier field_declaring_list_opt ';'
    1944                 {
    1945                         if ( ! $2 ) {                                                           // field declarator ?
    1946                                 $2 = DeclarationNode::newName( nullptr );
    1947                                 if ( ! ( $1->type && $1->type->kind == TypeData::Aggregate ) ) {
    1948                                         SemanticWarning( yylloc, Warning::SuperfluousDecl, "" );
    1949                                 } // if
    1950                         } // if
    1951                         $$ = distAttr( $1, $2 );                                        // mark all fields in list
    1952                 }
     1957                { $$ = fieldDecl( $1, $2 ); }
    19531958        | EXTENSION type_specifier field_declaring_list_opt ';' // GCC
    1954                 {
    1955                         if ( ! $3 ) {                                                           // field declarator ?
    1956                                 $3 = DeclarationNode::newName( nullptr );
    1957                                 if ( ! ( $2->type && $2->type->kind == TypeData::Aggregate ) ) {
    1958                                         SemanticWarning( yylloc, Warning::SuperfluousDecl, "" );
    1959                                 } // if
    1960                         } // if
    1961                         $$ = distAttr( $2, $3 );                                        // mark all fields in list
    1962                         distExt( $$ );
    1963                 }
     1959                { $$ = fieldDecl( $2, $3 ); distExt( $$ ); }
    19641960        | INLINE type_specifier field_abstract_list_opt ';'     // CFA
    19651961                {
     
    20092005
    20102006field_abstract:
    2011         //      no bit fields
     2007                //      no bit fields
    20122008        variable_abstract_declarator
    20132009        ;
    20142010
    20152011cfa_field_declaring_list:                                                               // CFA, new style field declaration
     2012        // bit-fields are handled by C declarations
    20162013        cfa_abstract_declarator_tuple no_attr_identifier_or_type_name
    20172014                { $$ = $1->addName( $2 ); }
     
    20212018
    20222019cfa_field_abstract_list:                                                                // CFA, new style field declaration
     2020        // bit-fields are handled by C declarations
    20232021        cfa_abstract_declarator_tuple
    20242022        | cfa_field_abstract_list ','
  • src/tests/.expect/attributes.x64.txt

    r69efef81 r1cb35c0  
    367367signed int __apd7__Fi_Fi_i_Fi_i___1(__attribute__ ((unused,unused,unused)) signed int (*__anonymous_object23)(__attribute__ ((unused)) signed int __anonymous_object24), __attribute__ ((unused,unused,unused)) signed int (*__anonymous_object25)(__attribute__ ((unused)) signed int __anonymous_object26));
    368368struct Vad {
    369     __attribute__ ((unused)) signed int __anonymous_object27;
     369    __attribute__ ((unused)) signed int __anonymous_object27:4;
    370370    __attribute__ ((unused)) signed int __anonymous_object28:4;
    371     __attribute__ ((unused)) signed int __anonymous_object29:4;
    372     __attribute__ ((unused,unused)) signed int __anonymous_object30:6;
     371    __attribute__ ((unused,unused)) signed int __anonymous_object29:6;
    373372};
    374373static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1);
     
    376375static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1);
    377376static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1);
    378 static inline void ___constructor__F_4sVadi_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object31);
    379377static inline void ___constructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1){
    380     ((void)((*___dst__4sVad_1).__anonymous_object27) /* ?{} */);
    381378}
    382379static inline void ___constructor__F_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){
    383     ((void)((*___dst__4sVad_1).__anonymous_object27=___src__4sVad_1.__anonymous_object27) /* ?{} */);
    384380}
    385381static inline void ___destructor__F_4sVad_autogen___1(struct Vad *___dst__4sVad_1){
    386     ((void)((*___dst__4sVad_1).__anonymous_object27) /* ^?{} */);
    387382}
    388383static inline struct Vad ___operator_assign__F4sVad_4sVad4sVad_autogen___1(struct Vad *___dst__4sVad_1, struct Vad ___src__4sVad_1){
    389384    struct Vad ___ret__4sVad_1;
    390     ((void)((*___dst__4sVad_1).__anonymous_object27=___src__4sVad_1.__anonymous_object27));
    391385    ((void)___constructor__F_4sVad4sVad_autogen___1((&___ret__4sVad_1), (*___dst__4sVad_1)));
    392386    return ___ret__4sVad_1;
    393387}
    394 static inline void ___constructor__F_4sVadi_autogen___1(struct Vad *___dst__4sVad_1, __attribute__ ((unused)) signed int __anonymous_object32){
    395     ((void)((*___dst__4sVad_1).__anonymous_object27=__anonymous_object32) /* ?{} */);
    396 }
  • src/tests/.expect/declarationErrors.txt

    r69efef81 r1cb35c0  
    1717
    1818
    19 declarationErrors.c:22:1 error: duplicate static in declaration of x6: static const volatile instance of type Int
     19declarationErrors.c:22:1 error: duplicate static in declaration of x6: static const volatile Int
    2020
    2121declarationErrors.c:24:1 error: duplicate const in declaration of f01: static inline function
Note: See TracChangeset for help on using the changeset viewer.