Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    rc38ae92 r65d6de4  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Nov 20 09:45:36 2017
    13 // Update Count     : 2945
     12// Last Modified On : Fri Nov 17 11:38:57 2017
     13// Update Count     : 2914
    1414//
    1515
     
    114114        } // for
    115115} // distExt
    116 
    117 // There is an ambiguity for inline generic-routine return-types and generic routines.
    118 //   forall( otype T ) struct S { int i; } bar( T ) {}
    119 // Does the forall bind to the struct or the routine, and how would it be possible to explicitly specify the binding.
    120 //   forall( otype T ) struct S { int T; } forall( otype W ) bar( W ) {}
    121 
    122 void rebindForall( DeclarationNode * declSpec, DeclarationNode * funcDecl ) {
    123         if ( declSpec->type->kind == TypeData::Aggregate ) { // return is aggregate definition
    124                 funcDecl->type->forall = declSpec->type->aggregate.params; // move forall from aggregate to function type
    125                 declSpec->type->aggregate.params = nullptr;
    126         } // if
    127 } // rebindForall
    128116
    129117bool forall = false;                                                                    // aggregate have one or more forall qualifiers ?
     
    24132401        | declaration_specifier function_declarator with_clause_opt compound_statement
    24142402                {
    2415                         rebindForall( $1, $2 );
    24162403                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    24172404                        typedefTable.leaveScope();
     
    24402427        | declaration_specifier KR_function_declarator KR_declaration_list_opt with_clause_opt compound_statement
    24412428                {
    2442                         rebindForall( $1, $2 );
    24432429                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    24442430                        typedefTable.leaveScope();
Note: See TracChangeset for help on using the changeset viewer.