@@ -246,13 +246,12 @@ validateScriptData d =
246
246
[] -> Right ()
247
247
err: _ -> Left err
248
248
where
249
- -- collect all errors in a monoidal fold style:
250
- collect (ScriptDataNumber n) =
251
- [ ScriptDataNumberOutOfRange n
252
- | n > fromIntegral (maxBound :: Word64 )
253
- || n < negate (fromIntegral (maxBound :: Word64 ))
254
- ]
255
- collect ScriptDataBytes {} = []
249
+ -- Arbitrary size numbers are fine
250
+ collect (ScriptDataNumber _) = []
251
+
252
+ -- Arbitrary sized bytes are fine
253
+ collect (ScriptDataBytes _) = []
254
+
256
255
collect (ScriptDataList xs) =
257
256
foldMap collect xs
258
257
@@ -261,36 +260,28 @@ validateScriptData d =
261
260
<> collect v)
262
261
kvs
263
262
263
+ -- Constr tags do need to be less than a Word64
264
264
collect (ScriptDataConstructor n xs) =
265
265
[ ScriptDataConstructorOutOfRange n
266
266
| n > fromIntegral (maxBound :: Word64 ) || n < 0 ]
267
267
<> foldMap collect xs
268
268
269
269
-- | An error in script data due to an out-of-range value.
270
270
--
271
- data ScriptDataRangeError =
272
-
273
- -- | The number is outside the maximum range of @-2^64-1 .. 2^64-1@.
274
- --
275
- ScriptDataNumberOutOfRange ! Integer
271
+ newtype ScriptDataRangeError =
276
272
277
273
-- | The number is outside the maximum range of @-2^64-1 .. 2^64-1@.
278
274
--
279
- | ScriptDataConstructorOutOfRange ! Integer
275
+ ScriptDataConstructorOutOfRange Integer
280
276
deriving (Eq , Show )
281
277
282
278
instance Error ScriptDataRangeError where
283
- displayError (ScriptDataNumberOutOfRange n) =
284
- " Number in script data value "
285
- <> show n
286
- <> " is outside the range -(2^64-1) .. 2^64-1."
287
279
displayError (ScriptDataConstructorOutOfRange n) =
288
280
" Constructor numbers in script data value "
289
281
<> show n
290
282
<> " is outside the range 0 .. 2^64-1."
291
283
292
284
293
-
294
285
-- ----------------------------------------------------------------------------
295
286
-- JSON conversion
296
287
--
0 commit comments