ada: Add "finally" GNAT extension
This patch adds a new reserved word, "finally", and accompanying new syntax that's similar to the Java equivalent. gcc/ada/ChangeLog: * atree.adb (Parent_Or_List_Containing): New function. * atree.ads (Parent_Or_List_Containing): Likewise. * gen_il-fields.ads: Add new field. * gen_il-gen-gen_nodes.adb (Gen_Nodes): Extend handled sequence of statements node. * par-ch11.adb (P_Handled_Sequence_Of_Statements, P_Exception_Handler): Add new syntactic construct. * par-ch5.adb (P_Sequence_Of_Statements): Likewise. * par.adb: Likewise. * par-util.adb (Check_Future_Keyword): Warn that "finally" becomes a reserved word with extensions. * scans.adb (Initialize_Ada_Keywords): Add new reserved word. * snames.adb-tmpl: Likewise. * snames.ads-tmpl: Likewise. * scans.ads: Likewise. * sem_ch11.adb (Analyze_Handled_Statements): Adapt to new node field. * sem_ch5.adb (Analyze_Exit_Statement): Add legality check. (Analyze_Goto_Statement): Likewise. * sem_ch6.adb (Analyze_Return_Statement): Likewise. * sinfo-utils.adb (Lowest_Common_Ancestor, Destroy_Element): New subprograms. * sinfo-utils.ads (Lowest_Common_Ancestor): New function. * sinfo.ads: Add documentation for new field. * xsnamest.adb: Fix typo in comment. * doc/gnat_rm/gnat_language_extensions.rst: Document new extension. * warnsw.adb: Add new option. * warnsw.ads: Likewise. * exp_ch11.adb (Expand_N_Handled_Sequence_Of_Statements): Add abort deferral to finally part. * gnat_rm.texi: Regenerate. * gnat_ugn.texi: Regenerate. * gcc-interface/trans.cc (Handled_Sequence_Of_Statements_to_gnu): Handle finally statements.
Showing
- gcc/ada/atree.adb 15 additions, 0 deletionsgcc/ada/atree.adb
- gcc/ada/atree.ads 5 additions, 0 deletionsgcc/ada/atree.ads
- gcc/ada/doc/gnat_rm/gnat_language_extensions.rst 43 additions, 0 deletionsgcc/ada/doc/gnat_rm/gnat_language_extensions.rst
- gcc/ada/exp_ch11.adb 12 additions, 0 deletionsgcc/ada/exp_ch11.adb
- gcc/ada/gcc-interface/trans.cc 23 additions, 0 deletionsgcc/ada/gcc-interface/trans.cc
- gcc/ada/gen_il-fields.ads 1 addition, 0 deletionsgcc/ada/gen_il-fields.ads
- gcc/ada/gen_il-gen-gen_nodes.adb 1 addition, 0 deletionsgcc/ada/gen_il-gen-gen_nodes.adb
- gcc/ada/gnat_rm.texi 97 additions, 32 deletionsgcc/ada/gnat_rm.texi
- gcc/ada/gnat_ugn.texi 1 addition, 1 deletiongcc/ada/gnat_ugn.texi
- gcc/ada/par-ch11.adb 9 additions, 2 deletionsgcc/ada/par-ch11.adb
- gcc/ada/par-ch5.adb 19 additions, 0 deletionsgcc/ada/par-ch5.adb
- gcc/ada/par-util.adb 8 additions, 0 deletionsgcc/ada/par-util.adb
- gcc/ada/par.adb 11 additions, 9 deletionsgcc/ada/par.adb
- gcc/ada/scans.adb 3 additions, 0 deletionsgcc/ada/scans.adb
- gcc/ada/scans.ads 1 addition, 0 deletionsgcc/ada/scans.ads
- gcc/ada/sem_ch11.adb 4 additions, 0 deletionsgcc/ada/sem_ch11.adb
- gcc/ada/sem_ch5.adb 54 additions, 2 deletionsgcc/ada/sem_ch5.adb
- gcc/ada/sem_ch6.adb 17 additions, 0 deletionsgcc/ada/sem_ch6.adb
- gcc/ada/sinfo-utils.adb 68 additions, 0 deletionsgcc/ada/sinfo-utils.adb
- gcc/ada/sinfo-utils.ads 4 additions, 0 deletionsgcc/ada/sinfo-utils.ads
Loading
Please register or sign in to comment