, pOpPriority
, pDependencies
, pComment
+ , pReason
])
-- | Default common parameter values.
, opPriority = OpPrioNormal
, opDepends = Nothing
, opComment = Nothing
+ , opReason = []
}
-- | The top-level opcode type.
, pOpPriority
, pDependencies
, pComment
+ , pReason
, pEnabledDiskTemplates
, dOldQuery
, dOldQueryNoLocking
pComment :: Field
pComment = optionalNullSerField $ stringField "comment"
+-- | Reason trail field.
+pReason :: Field
+pReason = simpleField C.opcodeReason [t| ReasonTrail |]
+
-- * Entire opcode parameter list
-- | Old-style query opcode, with locking.
genNameNE
_ -> fail $ "Undefined arbitrary for opcode " ++ op_id
+-- | Generates one element of a reason trail
+genReasonElem :: Gen ReasonElem
+genReasonElem = (,,) <$> genFQDN <*> genFQDN <*> arbitrary
+
+-- | Generates a reason trail
+genReasonTrail :: Gen ReasonTrail
+genReasonTrail = do
+ size <- choose (0, 10)
+ vectorOf size genReasonElem
+
instance Arbitrary OpCodes.CommonOpParams where
arbitrary = OpCodes.CommonOpParams <$> arbitrary <*> arbitrary <*>
- arbitrary <*> resize 5 arbitrary <*> genMaybe genName
+ arbitrary <*> resize 5 arbitrary <*> genMaybe genName <*>
+ genReasonTrail
-- * Helper functions