@@ -63,34 +63,30 @@ impl Parse for BitRange {
6363 SVDError :: InvalidBitRange ( tree. clone ( ) , InvalidBitRange :: Syntax )
6464 } ) ?
6565 . parse :: < u32 > ( )
66- . context ( SVDError :: InvalidBitRange (
67- tree. clone ( ) ,
68- InvalidBitRange :: ParseError ,
69- ) ) ?,
66+ . with_context ( || {
67+ SVDError :: InvalidBitRange ( tree. clone ( ) , InvalidBitRange :: ParseError )
68+ } ) ?,
7069 parts
7170 . next ( )
7271 . ok_or_else ( || {
7372 SVDError :: InvalidBitRange ( tree. clone ( ) , InvalidBitRange :: Syntax )
7473 } ) ?
7574 . parse :: < u32 > ( )
76- . context ( SVDError :: InvalidBitRange (
77- tree. clone ( ) ,
78- InvalidBitRange :: ParseError ,
79- ) ) ?,
75+ . with_context ( || {
76+ SVDError :: InvalidBitRange ( tree. clone ( ) , InvalidBitRange :: ParseError )
77+ } ) ?,
8078 BitRangeType :: BitRange ,
8179 )
8280 // TODO: Consider matching instead so we can say which of these tags are missing
8381 } else if let ( Some ( lsb) , Some ( msb) ) = ( tree. get_child ( "lsb" ) , tree. get_child ( "msb" ) ) {
8482 (
8583 // TODO: `u32::parse` should not hide it's errors
86- u32:: parse ( msb) . context ( SVDError :: InvalidBitRange (
87- tree. clone ( ) ,
88- InvalidBitRange :: MsbLsb ,
89- ) ) ?,
90- u32:: parse ( lsb) . context ( SVDError :: InvalidBitRange (
91- tree. clone ( ) ,
92- InvalidBitRange :: MsbLsb ,
93- ) ) ?,
84+ u32:: parse ( msb) . with_context ( || {
85+ SVDError :: InvalidBitRange ( tree. clone ( ) , InvalidBitRange :: MsbLsb )
86+ } ) ?,
87+ u32:: parse ( lsb) . with_context ( || {
88+ SVDError :: InvalidBitRange ( tree. clone ( ) , InvalidBitRange :: MsbLsb )
89+ } ) ?,
9490 BitRangeType :: MsbLsb ,
9591 )
9692 } else if let ( Some ( offset) , Some ( width) ) =
@@ -102,14 +98,12 @@ impl Parse for BitRange {
10298 return Ok ( BitRange {
10399 // TODO: capture that error comes from offset/width tag
104100 // TODO: `u32::parse` should not hide it's errors
105- offset : u32:: parse ( offset) . context ( SVDError :: InvalidBitRange (
106- tree. clone ( ) ,
107- InvalidBitRange :: ParseError ,
108- ) ) ?,
109- width : u32:: parse ( width) . context ( SVDError :: InvalidBitRange (
110- tree. clone ( ) ,
111- InvalidBitRange :: ParseError ,
112- ) ) ?,
101+ offset : u32:: parse ( offset) . with_context ( || {
102+ SVDError :: InvalidBitRange ( tree. clone ( ) , InvalidBitRange :: ParseError )
103+ } ) ?,
104+ width : u32:: parse ( width) . with_context ( || {
105+ SVDError :: InvalidBitRange ( tree. clone ( ) , InvalidBitRange :: ParseError )
106+ } ) ?,
113107 range_type : BitRangeType :: OffsetWidth ,
114108 } )
115109 )
0 commit comments