Inspectopedia Help

Invalid type argument usage

Reports type variables used as arguments in locations that their variance does not allow, so long as they are not marked as unchecked. A type variable may have a variance of either covariant (out), contravariant (in), or invariant (neither out nor in).

The following rules are used to check the type arguments used in attribute and method declarations:

  • unchecked type arguments are ignored.

  • Covariant type arguments may only be used in locations that produce values (for example, return types and block parameters).

  • Contravariant type arguments may only be used in locations that consume arguments (for example, parameters and block return types).

  • Invariant type arguments may be used in both locations that produce values and consume arguments.

Example:

class Example[in A, out B] # Covariant type variable 'B' of class 'Example' used in a contravariant position, ... def call: (B) -> A end

Inspection Details

Available in:

Qodana for Ruby 2023.3, RubyMine 2023.3

Plugin:

Ruby, 233.SNAPSHOT

Last modified: 13 July 2023