1
1
use chrono:: prelude:: * ;
2
2
use itertools:: Itertools ;
3
- use function_name:: named;
4
3
5
4
use super :: * ;
6
5
7
- #[ named]
8
6
pub ( super ) fn parse_date (
9
7
word_and_ctx1 : ( & str , & Cursor ) ,
10
8
word_and_ctx2 : ( & str , & Cursor ) ,
@@ -19,7 +17,8 @@ pub(super) fn parse_date(
19
17
20
18
let days = [ "Mon" , "Tue" , "Wed" , "Thu" , "Fri" , "Sat" , "Sun" ] ;
21
19
if !days. contains ( & word) {
22
- let msg = format ! ( "reached end of file without parser leaving {}\n " , function_name!( ) ) ;
20
+ let msg = format ! ( "Error near {}:{}. Reached end of file without \
21
+ terminating parser", file!( ) , line!( ) ) ;
23
22
let msg2 = format ! ( "{word} is not a valid weekday : expected one of {days:?}\n " ) ;
24
23
let msg3 = format ! ( "failure location: {cursor:?}" ) ;
25
24
return Err ( format ! ( "{}{}{}" , msg, msg2, msg3) )
@@ -39,7 +38,8 @@ pub(super) fn parse_date(
39
38
] ;
40
39
41
40
if !months. contains ( & word) {
42
- let msg = format ! ( "reached end of file without parser leaving {}\n " , function_name!( ) ) ;
41
+ let msg = format ! ( "Error near {}:{}. Reached end of file without \
42
+ terminating parser", file!( ) , line!( ) ) ;
43
43
let msg2 = format ! ( "{word} is not a valid month : expected one of {months:?}\n " ) ;
44
44
let msg3 = format ! ( "failure location: {cursor:?}" ) ;
45
45
return Err ( format ! ( "{}{}{}" , msg, msg2, msg3) )
@@ -58,7 +58,8 @@ pub(super) fn parse_date(
58
58
} ;
59
59
60
60
if date > 31 {
61
- let msg = format ! ( "reached end of file without parser leaving {}\n " , function_name!( ) ) ;
61
+ let msg = format ! ( "Error near {}:{}. Reached end of file without \
62
+ terminating parser", file!( ) , line!( ) ) ;
62
63
let msg2 = format ! ( "{word} is not a valid date : must be between 0 and 31\n " ) ;
63
64
let msg3 = format ! ( "failure location: {cursor:?}" ) ;
64
65
return Err ( format ! ( "{}{}{}" , msg, msg2, msg3) )
@@ -79,7 +80,7 @@ pub(super) fn parse_date(
79
80
. map_err ( |_| "failed to parse" . to_string ( ) ) ?;
80
81
81
82
if hh > 23 {
82
- let msg = format ! ( "reached end of file without parser leaving {} \n " , function_name !( ) ) ;
83
+ let msg = format ! ( "Error near {}:{}. " , file! ( ) , line !( ) ) ;
83
84
let msg2 = format ! ( "{hh} is not a valid hour : must be between 0 and 23\n " ) ;
84
85
let msg3 = format ! ( "failure location: {cursor:?}" ) ;
85
86
return Err ( format ! ( "{}{}{}" , msg, msg2, msg3) )
@@ -94,7 +95,7 @@ pub(super) fn parse_date(
94
95
. map_err ( |_| "failed to parse" . to_string ( ) ) ?;
95
96
96
97
if mm > 60 {
97
- let msg = format ! ( "reached end of file without parser leaving {} \n " , function_name !( ) ) ;
98
+ let msg = format ! ( "Error near {}:{}. " , file! ( ) , line !( ) ) ;
98
99
let msg2 = format ! ( "{mm} is not a valid minute : must be between 0 and 60\n " ) ;
99
100
let msg3 = format ! ( "failure location: {cursor:?}" ) ;
100
101
return Err ( format ! ( "{}{}{}" , msg, msg2, msg3) )
@@ -109,7 +110,7 @@ pub(super) fn parse_date(
109
110
. map_err ( |_| "failed to parse" . to_string ( ) ) ?;
110
111
111
112
if ss > 60 {
112
- let msg = format ! ( "reached end of file without parser leaving {} \n " , function_name !( ) ) ;
113
+ let msg = format ! ( "Error near {}:{}. " , file! ( ) , line !( ) ) ;
113
114
let msg2 = format ! ( "{ss} is not a valid second : must be between 0 and 60\n " ) ;
114
115
let msg3 = format ! ( "failure location: {cursor:?}" ) ;
115
116
return Err ( format ! ( "{}{}{}" , msg, msg2, msg3) )
@@ -135,7 +136,6 @@ pub(super) fn parse_date(
135
136
136
137
}
137
138
138
- #[ named]
139
139
pub ( super ) fn parse_version ( word_reader : & mut WordReader ) -> Result < Version , String > {
140
140
let mut version = String :: new ( ) ;
141
141
@@ -144,7 +144,9 @@ pub(super) fn parse_version(word_reader : &mut WordReader) -> Result<Version, St
144
144
145
145
// if there isn't another word left in the file, then we exit
146
146
if word. is_none ( ) {
147
- return Err ( format ! ( "reached end of file without parser leaving {}" , function_name!( ) ) )
147
+ let msg = format ! ( "Error near {}:{}. Reached end of file without \
148
+ terminating parser", file!( ) , line!( ) ) ;
149
+ return Err ( msg)
148
150
}
149
151
150
152
let ( word, _) = word. unwrap ( ) ;
@@ -162,9 +164,9 @@ pub(super) fn parse_version(word_reader : &mut WordReader) -> Result<Version, St
162
164
}
163
165
}
164
166
165
- #[ named]
166
167
pub ( super ) fn parse_timescale ( word_reader : & mut WordReader ) -> Result < ( Option < u32 > , Timescale ) , String > {
167
- let err_msg = format ! ( "failed in {}" , function_name!( ) ) ;
168
+ let err_msg = format ! ( "Error near {}:{}. No more words left in vcd file." ,
169
+ file!( ) , line!( ) ) ;
168
170
169
171
// we might see `scalarunit $end` or `scalar unit $end`
170
172
@@ -214,9 +216,9 @@ pub(super) fn parse_timescale(word_reader : &mut WordReader) -> Result<(Option<u
214
216
215
217
}
216
218
217
- #[ named]
218
219
pub ( super ) fn parse_metadata ( word_reader : & mut WordReader ) -> Result < Metadata , String > {
219
- let err_msg = format ! ( "reached end of file without parser leaving {}" , function_name!( ) ) ;
220
+ let err_msg = format ! ( "Error near {}:{}. No more words left in vcd file." ,
221
+ file!( ) , line!( ) ) ;
220
222
221
223
let mut metadata = Metadata {
222
224
date : None ,
@@ -234,7 +236,6 @@ pub(super) fn parse_metadata(word_reader : &mut WordReader) -> Result<Metadata,
234
236
"$" => {
235
237
match residual {
236
238
"date" => {
237
- let err_msg = format ! ( "reached end of file without parser leaving {}" , function_name!( ) ) ;
238
239
// a date is typically composed of the 5 following words which can
239
240
// occur in any order:
240
241
// {Day, Month, Date(number in month), hh:mm:ss, year}.
0 commit comments