From 5c5987d671ed390b0965c95f5744d86356a02ddf Mon Sep 17 00:00:00 2001
From: Tristan Gingold <tgingold@free.fr>
Date: Fri, 24 May 2019 18:19:33 +0200
Subject: psl: can keep parenthesis during parse.

---
 src/psl/psl-nodes.adb      |  6 +++-
 src/psl/psl-nodes.adb.in   |  4 ++-
 src/psl/psl-nodes.ads      | 18 +++++++++++-
 src/psl/psl-nodes_meta.adb | 72 +++++++++++++++++++++++++++++-----------------
 src/psl/psl-subsets.adb    |  6 ++--
 5 files changed, 74 insertions(+), 32 deletions(-)

(limited to 'src/psl')

diff --git a/src/psl/psl-nodes.adb b/src/psl/psl-nodes.adb
index d7de320a8..99b449d22 100644
--- a/src/psl/psl-nodes.adb
+++ b/src/psl/psl-nodes.adb
@@ -325,6 +325,7 @@ package body PSL.Nodes is
       case Get_Kind (N) is
          when N_And_Prop
            | N_Or_Prop
+           | N_Paren_Prop
            | N_Log_Imp_Prop
            | N_Always
            | N_Never
@@ -372,7 +373,8 @@ package body PSL.Nodes is
            | N_Imp_Bool
            | N_False
            | N_True
-           | N_Boolean_Parameter =>
+           | N_Boolean_Parameter
+           | N_Paren_Bool =>
             return Type_Boolean;
          when N_Number
            | N_Const_Parameter =>
@@ -439,6 +441,7 @@ package body PSL.Nodes is
            | N_Before
            | N_Or_Prop
            | N_And_Prop
+           | N_Paren_Prop
            | N_Braced_SERE
            | N_Concat_SERE
            | N_Fusion_SERE
@@ -451,6 +454,7 @@ package body PSL.Nodes is
            | N_Goto_Repeat_Seq
            | N_Plus_Repeat_Seq
            | N_Equal_Repeat_Seq
+           | N_Paren_Bool
            | N_Not_Bool
            | N_And_Bool
            | N_Or_Bool
diff --git a/src/psl/psl-nodes.adb.in b/src/psl/psl-nodes.adb.in
index 220ffee71..3c7888800 100644
--- a/src/psl/psl-nodes.adb.in
+++ b/src/psl/psl-nodes.adb.in
@@ -325,6 +325,7 @@ package body PSL.Nodes is
       case Get_Kind (N) is
          when N_And_Prop
            | N_Or_Prop
+           | N_Paren_Prop
            | N_Log_Imp_Prop
            | N_Always
            | N_Never
@@ -372,7 +373,8 @@ package body PSL.Nodes is
            | N_Imp_Bool
            | N_False
            | N_True
-           | N_Boolean_Parameter =>
+           | N_Boolean_Parameter
+           | N_Paren_Bool =>
             return Type_Boolean;
          when N_Number
            | N_Const_Parameter =>
diff --git a/src/psl/psl-nodes.ads b/src/psl/psl-nodes.ads
index ec3022c35..0b11d0641 100644
--- a/src/psl/psl-nodes.ads
+++ b/src/psl/psl-nodes.ads
@@ -67,6 +67,7 @@ package PSL.Nodes is
       N_Before,
       N_Or_Prop,
       N_And_Prop,
+      N_Paren_Prop,
 
       --  Sequences/SERE.
       N_Braced_SERE,
@@ -85,6 +86,7 @@ package PSL.Nodes is
       N_Equal_Repeat_Seq,
 
       --  Boolean layer.
+      N_Paren_Bool,
       N_Not_Bool,
       N_And_Bool,
       N_Or_Bool,
@@ -100,7 +102,7 @@ package PSL.Nodes is
      );
    for Nkind'Size use 8;
 
-   subtype N_Booleans is Nkind range N_Not_Bool .. N_True;
+   subtype N_Booleans is Nkind range N_Paren_Bool .. N_True;
    subtype N_Sequences is Nkind range N_Braced_SERE .. N_Equal_Repeat_Seq;
 
    type PSL_Types is
@@ -335,6 +337,10 @@ package PSL.Nodes is
    --
    --   Get/Set_Right (Field2)
 
+   -- N_Paren_Prop (Short)
+   --
+   --   Get/Set_Property (Field4)
+
    -- N_Until (Short)
    -- N_Before (Short)
    --
@@ -378,6 +384,16 @@ package PSL.Nodes is
    --
    --   Get/Set_Hash_Link (Field6)
 
+   -- N_Paren_Bool (Short)
+   --
+   --   Get/Set_Presence (State1)
+   --
+   --   Get/Set_Boolean (Field3)
+   --
+   --   Get/Set_Hash (Field5)
+   --
+   --   Get/Set_Hash_Link (Field6)
+
    -- N_Not_Bool (Short)
    --
    --   Get/Set_Presence (State1)
diff --git a/src/psl/psl-nodes_meta.adb b/src/psl/psl-nodes_meta.adb
index 04b42aceb..f33ac5122 100644
--- a/src/psl/psl-nodes_meta.adb
+++ b/src/psl/psl-nodes_meta.adb
@@ -203,6 +203,8 @@ package body PSL.Nodes_Meta is
             return "or_prop";
          when N_And_Prop =>
             return "and_prop";
+         when N_Paren_Prop =>
+            return "paren_prop";
          when N_Braced_SERE =>
             return "braced_sere";
          when N_Concat_SERE =>
@@ -227,6 +229,8 @@ package body PSL.Nodes_Meta is
             return "plus_repeat_seq";
          when N_Equal_Repeat_Seq =>
             return "equal_repeat_seq";
+         when N_Paren_Bool =>
+            return "paren_bool";
          when N_Not_Bool =>
             return "not_bool";
          when N_And_Bool =>
@@ -464,6 +468,8 @@ package body PSL.Nodes_Meta is
       --  N_And_Prop
       Field_Left,
       Field_Right,
+      --  N_Paren_Prop
+      Field_Property,
       --  N_Braced_SERE
       Field_SERE,
       --  N_Concat_SERE
@@ -501,6 +507,11 @@ package body PSL.Nodes_Meta is
       Field_Sequence,
       Field_Low_Bound,
       Field_High_Bound,
+      --  N_Paren_Bool
+      Field_Hash,
+      Field_Presence,
+      Field_Boolean,
+      Field_Hash_Link,
       --  N_Not_Bool
       Field_Hash,
       Field_Presence,
@@ -584,29 +595,31 @@ package body PSL.Nodes_Meta is
       N_Before => 99,
       N_Or_Prop => 101,
       N_And_Prop => 103,
-      N_Braced_SERE => 104,
-      N_Concat_SERE => 106,
-      N_Fusion_SERE => 108,
-      N_Within_SERE => 110,
-      N_Clocked_SERE => 112,
-      N_Match_And_Seq => 114,
-      N_And_Seq => 116,
-      N_Or_Seq => 118,
-      N_Star_Repeat_Seq => 121,
-      N_Goto_Repeat_Seq => 124,
-      N_Plus_Repeat_Seq => 125,
-      N_Equal_Repeat_Seq => 128,
-      N_Not_Bool => 132,
-      N_And_Bool => 137,
-      N_Or_Bool => 142,
-      N_Imp_Bool => 147,
-      N_HDL_Expr => 152,
-      N_False => 152,
-      N_True => 152,
-      N_EOS => 155,
-      N_Name => 157,
-      N_Name_Decl => 159,
-      N_Number => 160
+      N_Paren_Prop => 104,
+      N_Braced_SERE => 105,
+      N_Concat_SERE => 107,
+      N_Fusion_SERE => 109,
+      N_Within_SERE => 111,
+      N_Clocked_SERE => 113,
+      N_Match_And_Seq => 115,
+      N_And_Seq => 117,
+      N_Or_Seq => 119,
+      N_Star_Repeat_Seq => 122,
+      N_Goto_Repeat_Seq => 125,
+      N_Plus_Repeat_Seq => 126,
+      N_Equal_Repeat_Seq => 129,
+      N_Paren_Bool => 133,
+      N_Not_Bool => 137,
+      N_And_Bool => 142,
+      N_Or_Bool => 147,
+      N_Imp_Bool => 152,
+      N_HDL_Expr => 157,
+      N_False => 157,
+      N_True => 157,
+      N_EOS => 160,
+      N_Name => 162,
+      N_Name_Decl => 164,
+      N_Number => 165
      );
 
    function Get_Fields (K : Nkind) return Fields_Array
@@ -1007,7 +1020,8 @@ package body PSL.Nodes_Meta is
            | N_Next_Event
            | N_Next_Event_A
            | N_Next_Event_E
-           | N_Abort =>
+           | N_Abort
+           | N_Paren_Prop =>
             return True;
          when others =>
             return False;
@@ -1178,6 +1192,7 @@ package body PSL.Nodes_Meta is
            | N_Next_Event_E
            | N_Abort
            | N_Clocked_SERE
+           | N_Paren_Bool
            | N_Not_Bool =>
             return True;
          when others =>
@@ -1198,7 +1213,8 @@ package body PSL.Nodes_Meta is
    function Has_Hash (K : Nkind) return Boolean is
    begin
       case K is
-         when N_Not_Bool
+         when N_Paren_Bool
+           | N_Not_Bool
            | N_And_Bool
            | N_Or_Bool
            | N_Imp_Bool
@@ -1213,7 +1229,8 @@ package body PSL.Nodes_Meta is
    function Has_Hash_Link (K : Nkind) return Boolean is
    begin
       case K is
-         when N_Not_Bool
+         when N_Paren_Bool
+           | N_Not_Bool
            | N_And_Bool
            | N_Or_Bool
            | N_Imp_Bool
@@ -1239,7 +1256,8 @@ package body PSL.Nodes_Meta is
    function Has_Presence (K : Nkind) return Boolean is
    begin
       case K is
-         when N_Not_Bool
+         when N_Paren_Bool
+           | N_Not_Bool
            | N_And_Bool
            | N_Or_Bool
            | N_Imp_Bool
diff --git a/src/psl/psl-subsets.adb b/src/psl/psl-subsets.adb
index 8aaf2b063..95f8d781c 100644
--- a/src/psl/psl-subsets.adb
+++ b/src/psl/psl-subsets.adb
@@ -163,7 +163,8 @@ package body PSL.Subsets is
             Check_Simple (Get_Right (N));
          when N_Next
            | N_Next_A
-           | N_Next_E =>
+           | N_Next_E
+           | N_Paren_Prop =>
             Check_Simple (Get_Property (N));
          when N_Next_Event
            | N_Next_Event_A
@@ -171,7 +172,8 @@ package body PSL.Subsets is
            | N_Abort =>
             Check_Simple (Get_Boolean (N));
             Check_Simple (Get_Property (N));
-         when N_Not_Bool =>
+         when N_Not_Bool
+           | N_Paren_Bool =>
             Check_Simple (Get_Boolean (N));
          when N_Const_Parameter
            | N_Sequence_Parameter
-- 
cgit v1.2.3