Changeset 8f91c9ae


Ignore:
Timestamp:
Jul 12, 2018, 3:01:50 PM (6 years ago)
Author:
Peter A. Buhr <pabuhr@…>
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, no_list, persistent-indexer, pthread-emulation, qualifiedEnum
Children:
26ef3b2, 79caea8
Parents:
0fc52b6
Message:

add inline qualifier to aggregate fields to separate plan 9 and forward semantics

Location:
src/Parser
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/TypeData.cc

    r0fc52b6 r8f91c9ae  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jun  6 17:40:33 2018
    13 // Update Count     : 604
     12// Last Modified On : Thu Jul 12 13:52:09 2018
     13// Update Count     : 606
    1414//
    1515
     
    7676                aggregate.parent = nullptr;
    7777                aggregate.anon = false;
     78                aggregate.inLine = false;
    7879                break;
    7980          case AggregateInst:
     
    8182                aggInst.aggregate = nullptr;
    8283                aggInst.params = nullptr;
    83                 aggInst.hoistType = false;;
     84                aggInst.hoistType = false;
     85                aggInst.inLine = false;
    8486                break;
    8587          case Symbolic:
     
    219221                newtype->aggregate.body = aggregate.body;
    220222                newtype->aggregate.anon = aggregate.anon;
     223                newtype->aggregate.inLine = aggregate.inLine;
    221224                newtype->aggregate.tagged = aggregate.tagged;
    222225                newtype->aggregate.parent = aggregate.parent ? new string( *aggregate.parent ) : nullptr;
     
    226229                newtype->aggInst.params = maybeClone( aggInst.params );
    227230                newtype->aggInst.hoistType = aggInst.hoistType;
     231                newtype->aggInst.inLine = aggInst.inLine;
    228232                break;
    229233          case Enum:
  • src/Parser/TypeData.h

    r0fc52b6 r8f91c9ae  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Feb 22 15:21:23 2018
    13 // Update Count     : 191
     12// Last Modified On : Thu Jul 12 14:00:09 2018
     13// Update Count     : 193
    1414//
    1515
     
    3737                bool body;
    3838                bool anon;
     39                bool inLine;
    3940
    4041                bool tagged;
     
    4647                ExpressionNode * params;
    4748                bool hoistType;
     49                bool inLine;
    4850        };
    4951
     
    6668                mutable DeclarationNode * oldDeclList;
    6769                StatementNode * body;
    68                 ExpressionNode * withExprs;             // expressions from function's with_clause
     70                ExpressionNode * withExprs;                                             // expressions from function's with_clause
    6971        };
    7072
     
    128130TupleType * buildTuple( const TypeData * );
    129131TypeofType * buildTypeof( const TypeData * );
    130 Declaration * buildDecl( const TypeData *, const std::string &, Type::StorageClasses, Expression *, Type::FuncSpecifiers funcSpec, LinkageSpec::Spec, Expression * asmName, Initializer * init = nullptr, std::list< class Attribute * > attributes = std::list< class Attribute * >() );
     132Declaration * buildDecl( const TypeData *, const std::string &, Type::StorageClasses, Expression *, Type::FuncSpecifiers funcSpec, LinkageSpec::Spec, Expression * asmName,
     133                                                 Initializer * init = nullptr, std::list< class Attribute * > attributes = std::list< class Attribute * >() );
    131134FunctionType * buildFunction( const TypeData * );
    132135void buildKRFunction( const TypeData::Function_t & function );
  • src/Parser/parser.yy

    r0fc52b6 r8f91c9ae  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jul 11 11:55:24 2018
    13 // Update Count     : 3739
     12// Last Modified On : Thu Jul 12 13:47:44 2018
     13// Update Count     : 3755
    1414//
    1515
     
    19361936        | EXTENSION type_specifier field_declaring_list ';'     // GCC
    19371937                { distExt( $3 ); $$ = distAttr( $2, $3 ); }             // mark all fields in list
     1938        | INLINE type_specifier field_declaring_list ';'        // CFA
     1939                {
     1940                        if ( $2->type && ( $2->type->kind == TypeData::Aggregate || $2->type->kind == TypeData::AggregateInst ) ) {
     1941                                if ( $2->type->kind == TypeData::Aggregate ) {
     1942                                        $2->type->aggregate.inLine = true;
     1943                                } else {
     1944                                        $2->type->aggInst.inLine = true;
     1945                                } // if
     1946                                $$ = distAttr( $2, $3 );
     1947                        } else {
     1948                                SemanticError( yylloc, "inline qualifier only allowed for aggregate field declarations." ); $$ = nullptr;
     1949                        } // if
     1950                }
    19381951        | typedef_declaration ';'                                                       // CFA
    19391952        | cfa_field_declaring_list ';'                                          // CFA, new style field declaration
Note: See TracChangeset for help on using the changeset viewer.