wiki:SemanticQuery/SpecParamEntity

Version 1 (modified by manualwiki, 10 years ago) (diff)

sq spec-param entity added

Spec-param entity

Spec-param entities correspond to parameters of a -spec attribute. Typically these only contain type expressions related to the expected types of parameters in the referenced function's applications, however names can also be specified for parameters in a -spec attribute. Please note that "-spec" definitions can have multiple clauses, and the index property refers to the parameter's index in the containing clause, so there will be multiple spec-param entities with the same index for any such spec-entity.

Selectors

The type of the result elements are indicated in parenthesis.

  • type (type): The type expression of the spec-parameter.

Properties

The following properties are defined for spec-param entities:

  • name (atom): Name of the spec-parameter.
  • index (int): Index of the spec-parameter in the corresponding clause.
  • text (string): String representation of the spec-parameter.

Textual output format

When using any of our interfaces, other than ris, this entity will be represented in the output as a string with the same format as it was described in the -spec form. (Including whitespaces.)

ri:q("mods.spec.params").
-spec io:format(Format :: string(), list()) -> string().
    Format :: string()
     list()

Review of non-trivial selectors

For some of the selectors it may not be initially clear how and what would they return. A description of these can be found here:

Specparam.type:

Returns the type or type expression of the given specparam. (Single-atom type expressions are filtered.)

ri:q("mods.spec").           
a.erl
    -spec io_lib:format(Format :: io:format(), list(term())) -> [char].
...
ok
ri:q("mods.spec.param.type").
Format :: io:format()
    Format :: io:format()
 list(term())
    erlang:list/1
...

Specparam.name:

Returns the name of the specparam as a string. If the name was omitted, returns "undefined".

ri:q("mods.spec").           
a.erl
    -spec io_lib:format(Format :: io:format(), list(term())) -> [char].
...
ok
ri:q("mods.spec.param.name").
Format :: io:format()
    name = "Format"
 list(term())
    name = "undefined"
...