Open
Description
The #ivar_name
attribute of each RBS::Members::Attribute*
class can return one of 3 things:
# ivar_name will return `nil`, which indicates the default (@a) is inferred
attr_reader a: Integer
# ivar_name will return `:something_else`
attr_reader b(@something_else): String
# ivar_name will return `false`
attr_reader c(): bool
This has a few downsides:
-
The distinction between
nil
andfalse
is subtle and non-obvious -
Most callers (e.g. a type checker, LSP, etc.) probably care about the instance variable name regardless of whether it was inferred or explicit, and will have to compute it themselves when they get
nil
. -
The RBS type of this field is complex:
Line 177 in 3fc6b05
- This will also makes the C API less clear, since the type has to be some general node type (e.g.
rbs_node_t *
), rather than specifically a symbol type (rbs_symbol_t *
orNULL
).
- This will also makes the C API less clear, since the type has to be some general node type (e.g.
I propose we deprecate this field, and come up with an easier-to-consume alternative.
Metadata
Metadata
Assignees
Labels
No labels