From 303d4adff90279d0c9ac79adc667abc4d65df945 Mon Sep 17 00:00:00 2001 From: Jed Barber Date: Sat, 5 Dec 2020 18:53:34 +1100 Subject: Bug in parameter visibility when using Traits to instantiate other packages fixed --- src/packrat-no_lex.ads | 6 +++--- src/packrat-standard.ads | 14 +++++++------- src/packrat-traits.ads | 16 ++++++++++++---- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/packrat-no_lex.ads b/src/packrat-no_lex.ads index bde416f..58a5627 100644 --- a/src/packrat-no_lex.ads +++ b/src/packrat-no_lex.ads @@ -20,9 +20,9 @@ package Packrat.No_Lex is package Parser_Traits is new Packrat.Traits - (Label_Enum => Parser_Labels, - Element_Type => Element_Type, - Element_Array => Element_Array); + (Lab_Enum => Parser_Labels, + Elem_Type => Element_Type, + Elem_Array => Element_Array); package Parse_Graphs is new Packrat.Parse_Graphs (Traits => Parser_Traits); diff --git a/src/packrat-standard.ads b/src/packrat-standard.ads index b51804d..005d17a 100644 --- a/src/packrat-standard.ads +++ b/src/packrat-standard.ads @@ -22,9 +22,9 @@ package Packrat.Standard is package Lexer_Traits is new Packrat.Traits - (Label_Enum => Lexer_Labels, - Element_Type => Element_Type, - Element_Array => Element_Array); + (Lab_Enum => Lexer_Labels, + Elem_Type => Element_Type, + Elem_Array => Element_Array); package Lexers is new Packrat.Lexers (Traits => Lexer_Traits); @@ -35,10 +35,10 @@ package Packrat.Standard is package Parser_Traits is new Packrat.Traits - (Label_Enum => Parser_Labels, - Element_Type => Lexer_Tokens.Token_Type, - Element_Array => Lexer_Tokens.Token_Array, - "<" => Lexer_Tokens."<"); + (Lab_Enum => Parser_Labels, + Elem_Type => Lexer_Tokens.Token_Type, + Elem_Array => Lexer_Tokens.Token_Array, + "<" => Lexer_Tokens."<"); package Parse_Graphs is new Packrat.Parse_Graphs (Traits => Parser_Traits); diff --git a/src/packrat-traits.ads b/src/packrat-traits.ads index cf4ba89..7f25dd9 100644 --- a/src/packrat-traits.ads +++ b/src/packrat-traits.ads @@ -7,15 +7,23 @@ with generic - type Label_Enum is (<>); - type Element_Type is private; - type Element_Array is array (Positive range <>) of Element_Type; + type Lab_Enum is (<>); + type Elem_Type is private; + type Elem_Array is array (Positive range <>) of Elem_Type; - with function "<" (Left, Right : in Element_Type) return Boolean is <>; + with function "<" (Left, Right : in Elem_Type) return Boolean is <>; package Packrat.Traits is + -- Should these even really be necessary, or should the original + -- types be visible even to packages that Traits gets passed to? + -- I have no idea. + subtype Label_Enum is Lab_Enum; + subtype Element_Type is Elem_Type; + subtype Element_Array is Elem_Array; + + function "<" (Left, Right : in Element_Array) return Boolean; -- cgit