Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    r6ef2d81 r138e29e  
    921921                                Declaration * decl = extr->build();
    922922                                if ( decl ) {
     923                                        decl->location = cur->location;
    923924                                        * out++ = decl;
    924925                                } // if
     
    928929                        Declaration * decl = cur->build();
    929930                        if ( decl ) {
     931                                decl->location = cur->location;
    930932                                * out++ = decl;
    931933                        } // if
    932934                } catch( SemanticError &e ) {
     935                        e.set_location( cur->location );
    933936                        errors.append( e );
    934937                } // try
     
    950953                        if ( decl ) {
    951954                                if ( DeclarationWithType * dwt = dynamic_cast< DeclarationWithType * >( decl ) ) {
     955                                        dwt->location = cur->location;
    952956                                        * out++ = dwt;
    953957                                } else if ( StructDecl * agg = dynamic_cast< StructDecl * >( decl ) ) {
    954958                                        StructInstType * inst = new StructInstType( Type::Qualifiers(), agg->get_name() );
    955                                         * out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
     959                                        auto obj = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
     960                                        obj->location = cur->location;
     961                                        * out++ = obj;
    956962                                        delete agg;
    957963                                } else if ( UnionDecl * agg = dynamic_cast< UnionDecl * >( decl ) ) {
    958964                                        UnionInstType * inst = new UnionInstType( Type::Qualifiers(), agg->get_name() );
    959                                         * out++ = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
     965                                        auto obj = new ObjectDecl( "", DeclarationNode::NoStorageClass, linkage, nullptr, inst, nullptr );
     966                                        obj->location = cur->location;
     967                                        * out++ = obj;
    960968                                } // if
    961969                        } // if
    962970                } catch( SemanticError &e ) {
     971                        e.set_location( cur->location );
    963972                        errors.append( e );
    964973                } // try
     
    979988                        * out++ = cur->buildType();
    980989                } catch( SemanticError &e ) {
     990                        e.set_location( cur->location );
    981991                        errors.append( e );
    982992                } // try
Note: See TracChangeset for help on using the changeset viewer.