[spec] Improving consistency of explain-data for instrument/macroexpand-check

Description

Description

If you instrument a function, you may get a spec error like the following:

As you can see,

  • the explain-data has a regex (ie. the spec for the args of f) in it as ::s/spec

  • each problem contains :args in their ath

These facts can cause a confusion to spec error reporters because the spec for the args of f ((s/and integer? even?)) has no subspec corresponding to the key :args (I believe ath should only contains keys that is a clue to indicate which subspec to be chosen from a spec).

Possible resolutions

To resolve this confusing situation and improve the consistency of explain-data for instrument check, I think there are two options as follows:

  • Solution 1. removing :args from ath

  • Solution 2. modifying explain-data for instrument check so that they have fspec (rather than :args of it) as ::s/spec

Personally, I prefer Solution 2. since adding fspec in explain-data makes it possible to provide richer error information to explain-out implementors.

The same goes for macroexpand-check.

Environment

None

Status

Assignee

Unassigned

Reporter

Shogo Ohta

Labels

Approval

None

Patch

Code

Affects versions

Priority

Major
Configure