Changeset 394


Ignore:
Timestamp:
Jan 14, 2015, 10:06:15 AM (5 years ago)
Author:
Maxim Reznik
Message:

Force AG to traverse exception_handlers

Location:
trunk/ada-2012/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/ada-2012/src/ag/env_in.ag

    r393 r394  
    77Inherited attributes
    88  Aborted_Tasks,
    9   Accept_Body_Exception_Handlers,
    109  Accept_Body_Statements,
    1110  Accept_Parameters,
     
    1615  Asynchronous_Statement_Paths,
    1716  Block_Declarative_Items,
    18   Block_Exception_Handlers,
     17  Exception_Handlers,
    1918  Block_Statements,
    2019  Body_Declarative_Items,
    21   Body_Exception_Handlers,
    2220  Body_Statements,
    2321  Case_Expression_Paths,
     
    3331  Exception_Choices,
    3432  Expression_Paths,
    35   Extended_Return_Exception_Handlers,
    3633  Extended_Return_Statements,
    3734  Generic_Actual_Part,
     
    311308      ${name.env_in} := ${Aborted_Tasks.env_in};
    312309.)
    313 Rules for Accept_Body_Exception_Handlers.exception_handler :
    314 (.
    315       ${exception_handler.env_in} := ${Accept_Body_Exception_Handlers.env_in};
     310Rules for Exception_Handlers.exception_handler :
     311(.
     312      ${exception_handler.env_in} := ${Exception_Handlers.env_in};
    316313.)
    317314Rules for Accept_Body_Statements.statement :
     
    347344      ${declarative_item.env_in} := ${Block_Declarative_Items.env_in};
    348345.)
    349 Rules for Block_Exception_Handlers.exception_handler :
    350 (.
    351       ${exception_handler.env_in} := ${Block_Exception_Handlers.env_in};
    352 .)
    353346Rules for Block_Statements.statement :
    354347(.
     
    359352      ${declarative_item.env_in} := ${Body_Declarative_Items.env_in};
    360353.)
    361 Rules for Body_Exception_Handlers.exception_handler :
    362 (.
    363       ${exception_handler.env_in} := ${Body_Exception_Handlers.env_in};
    364 .)
    365354Rules for Body_Statements.statement :
    366355(.
     
    415404      ${if_else_expression_path.env_in} := ${Expression_Paths.env_in};
    416405.)
    417 Rules for Extended_Return_Exception_Handlers.exception_handler :
    418 (.
    419       ${exception_handler.env_in} := ${Extended_Return_Exception_Handlers.env_in};
    420 .)
    421406Rules for Extended_Return_Statements.statement :
    422407(.
     
    537522.)
    538523
    539 Rules for Accept_Body_Exception_Handlers.exception_handler :
    540 (.
    541       ${tail.env_in} := ${Accept_Body_Exception_Handlers.env_in};
     524Rules for Exception_Handlers.exception_handler :
     525(.
     526      ${tail.env_in} := ${Exception_Handlers.env_in};
    542527.)
    543528
     
    582567.)
    583568
    584 Rules for Block_Exception_Handlers.exception_handler :
    585 (.
    586       ${tail.env_in} := ${Block_Exception_Handlers.env_in};
    587 .)
    588 
    589569Rules for Block_Statements.statement :
    590570(.
     
    597577.)
    598578
    599 Rules for Body_Exception_Handlers.exception_handler :
    600 (.
    601       ${tail.env_in} := ${Body_Exception_Handlers.env_in};
    602 .)
    603 
    604579Rules for Body_Statements.statement :
    605580(.
     
    667642.)
    668643
    669 Rules for Extended_Return_Exception_Handlers.exception_handler :
    670 (.
    671       ${tail.env_in} := ${Extended_Return_Exception_Handlers.env_in};
    672 .)
    673 
    674644Rules for Extended_Return_Statements.statement :
    675645(.
     
    839809Rules for accept_statement. :
    840810(.
    841       ${Accept_Body_Exception_Handlers.env_in} := ${accept_statement.env_in};
     811      ${Exception_Handlers.env_in} := ${accept_statement.env_in};
    842812.)
    843813
     
    974944Rules for block_statement. :
    975945(.
    976       ${Block_Exception_Handlers.env_in} := ${block_statement.env_in};
     946      ${Exception_Handlers.env_in} := ${block_statement.env_in};
    977947.)
    978948
     
    13031273Rules for entry_body. :
    13041274(.
    1305       ${Body_Exception_Handlers.env_in} := ${entry_body.env_in};
     1275      ${Exception_Handlers.env_in} := ${entry_body.env_in};
    13061276.)
    13071277
     
    14181388Rules for extended_return_statement. :
    14191389(.
    1420       ${Extended_Return_Exception_Handlers.env_in} := ${extended_return_statement.env_in};
     1390      ${Exception_Handlers.env_in} := ${extended_return_statement.env_in};
    14211391.)
    14221392
     
    16851655Rules for function_body. :
    16861656(.
    1687       ${Body_Exception_Handlers.env_in} := ${function_body.env_in};
     1657      ${Exception_Handlers.env_in} := ${function_body.env_in};
    16881658.)
    16891659
     
    20922062Rules for package_body. :
    20932063(.
    2094       ${Body_Exception_Handlers.env_in} := ${package_body.env_in};
     2064      ${Exception_Handlers.env_in} := ${package_body.env_in};
    20952065.)
    20962066
     
    23132283(.
    23142284      --  ${Body_Statements.Errors}
    2315       ${Body_Exception_Handlers.env_in} := ${Body_Declarative_Items.env_out};
     2285      ${Exception_Handlers.env_in} := ${Body_Declarative_Items.env_out};
    23162286.)
    23172287
     
    27102680Rules for task_body. :
    27112681(.
    2712       ${Body_Exception_Handlers.env_in} := ${task_body.env_in};
     2682      ${Exception_Handlers.env_in} := ${task_body.env_in};
    27132683.)
    27142684
  • trunk/ada-2012/src/ag/errors.ag

    r393 r394  
    3636  discrete_subtype_definition,
    3737  discrete_subtype_indication,
     38  exception_choice,
     39  exception_handler,
    3840  exit_statement,
    3941  explicit_dereference,
     
    6365  pragma_node,
    6466  prefix,
     67  procedure_body,
    6568  procedure_call_statement,
    6669  program_unit_name,
     
    97100  Associations,
    98101  Case_Statement_Paths,
     102  Exception_Choices,
     103  Exception_Handlers,
    99104  Discrete_Subtype_Definitions,
    100105  Index_Subtype_Definitions,
     
    312317      ${Variants.Errors} := ${variant.Errors}; --  FIXME
    313318.)
    314 
     319Rules for Exception_Choices.exception_choice :
     320(.
     321      ${Exception_Choices.Errors} := 0;
     322.)
     323Rules for Exception_Choices.exception_choice :
     324(.
     325      ${Exception_Choices.Errors} := ${exception_choice.Errors}; --  FIXME
     326.)
     327Rules for Exception_Handlers.exception_handler :
     328(.
     329      ${Exception_Handlers.Errors} := 0;
     330.)
     331Rules for Exception_Handlers.exception_handler :
     332(.
     333      ${Exception_Handlers.Errors} := ${exception_handler.Errors}; --  FIXME
     334.)
    315335
    316336Rules for unconstrained_array_definition. :
     
    484504      ${case_path.Errors} := ${Variant_Choices.Errors};  --  FIXME
    485505.)
     506Rules for procedure_body. :
     507(.
     508      ${procedure_body.Errors} := ${Exception_Handlers.Errors};  --  FIXME
     509.)
     510Rules for exception_handler. :
     511(.
     512      ${exception_handler.Errors} := ${Exception_Choices.Errors};  --  FIXME
     513.)
     514
  • trunk/ada-2012/src/ag/syntax.ag

    r393 r394  
    2323  {statement}               <Accept_Body_Statements>
    2424  token                     <exception_token>
    25   {exception_handler}       <Accept_Body_Exception_Handlers>
     25  {exception_handler}       <Exception_Handlers>
    2626  token                     <end_token>
    2727  token                     <identifier_token>
     
    210210  {statement}         <Block_Statements>
    211211  token               <exception_token>
    212   {exception_handler} <Block_Exception_Handlers>
     212  {exception_handler} <Exception_Handlers>
    213213  token               <end_token>
    214214  token               <identifier_token>
     
    483483  {statement}                 <Body_Statements>
    484484  token                       <exception_token>
    485   {exception_handler}         <Body_Exception_Handlers>
     485  {exception_handler}         <Exception_Handlers>
    486486  token                       <end_token>
    487487  token                       <identifier_token>
     
    570570  {statement}                 <Extended_Return_Statements>
    571571  token                       <exception_token>
    572   {exception_handler}         <Extended_Return_Exception_Handlers>
     572  {exception_handler}         <Exception_Handlers>
    573573  token                       <end_token>
    574574  token                       <endreturn>
     
    832832  {statement}                <Body_Statements>
    833833  token                      <exception_token>
    834   {exception_handler}        <Body_Exception_Handlers>
     834  {exception_handler}        <Exception_Handlers>
    835835  token                      <end_token>
    836836  [designator                <end_name>]
     
    12371237  {statement}                <Body_Statements>
    12381238  token                      <exception_token>
    1239   {exception_handler}        <Body_Exception_Handlers>
     1239  {exception_handler}        <Exception_Handlers>
    12401240  token                      <end_token>
    12411241  [program_unit_name         <end_name>]
     
    13741374  {statement}                <Body_Statements>
    13751375  token                      <exception_token>
    1376   {exception_handler}        <Body_Exception_Handlers>
     1376  {exception_handler}        <Exception_Handlers>
    13771377  token                      <end_token>
    13781378  [program_unit_name         <end_name>]
     
    17031703  {statement}                <Body_Statements>
    17041704  token                      <exception_token>
    1705   {exception_handler}        <Body_Exception_Handlers>
     1705  {exception_handler}        <Exception_Handlers>
    17061706  token                      <end_token>
    17071707  token                      <identifier_token>
  • trunk/ada-2012/src/semantic/gela-resolve.adb

    r393 r394  
    312312         is
    313313            pragma Unreferenced (Down);
     314            use type Gela.Type_Views.Type_View_Access;
     315
    314316            TM : constant Gela.Type_Managers.Type_Manager_Access :=
    315317              Comp.Context.Types;
    316318            Type_View : constant Gela.Type_Views.Type_View_Access :=
    317319              TM.Get (Type_Index);
    318             Name : constant Gela.Elements.Defining_Names.Defining_Name_Access
    319               := Type_View.Get_Discriminant (Symbol);
    320          begin
    321             if Name.Assigned then
    322                IM.Get_Defining_Name_Index (Name, Self.Index);
    323             else
    324                Self.Index := 0;
     320            Name : Gela.Elements.Defining_Names.Defining_Name_Access;
     321         begin
     322            Self.Index := 0;
     323
     324            if Type_View /= null then
     325               Name := Type_View.Get_Discriminant (Symbol);
     326
     327               if Name.Assigned then
     328                  IM.Get_Defining_Name_Index (Name, Self.Index);
     329               end if;
    325330            end if;
    326331         end On_Symbol;
Note: See TracChangeset for help on using the changeset viewer.