Class: RuboCop::Cop::Style::RbsInline::MissingDataClassAnnotation

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Includes:
DataClassMatcher, FileFilter, MissingClassAnnotation
Defined in:
lib/rubocop/cop/style/rbs_inline/missing_data_class_annotation.rb,
sig/rubocop/cop/style/rbs_inline/missing_data_class_annotation.rbs

Overview

Checks that Data.define attributes have inline type annotations.

Each attribute passed to Data.define should have a trailing #: type annotation comment on the same line.

Examples:

# bad
MethodEntry = Data.define(:name, :node, :visibility)

# good
MethodEntry = Data.define(
  :name,       #: Symbol
  :node,       #: Parser::AST::Node
  :visibility  #: Symbol
)

Constant Summary collapse

MSG =

Returns:

  • (::String)
"Missing inline type annotation for Data attribute (e.g., `#: Type`)."

Constants included from FileFilter

FileFilter::MAGIC_COMMENT_DISABLED, FileFilter::MAGIC_COMMENT_ENABLED, FileFilter::SUPPORTED_MODES

Instance Method Summary collapse

Methods included from DataClassMatcher

#struct_like_class?

Methods included from MissingClassAnnotation

#add_offenses_for_folded, #check_missing_annotations, #check_multiline, #correct_multiline, #insert_annotation

Methods included from DataStructHelper

#annotation_column, #attr_argument?, #attr_arguments, #build_multiline_replacement, #find_regular_comment, #folded?, #inline_type_annotation?, #inline_type_comment, #longest_argname

Methods included from SourceCodeHelper

#annotation_range, #blank_line?, #char_at, #character_offset, #comment_at, #comment_range, #line_range, #location_to_range, #source_code_at

Methods included from ASTUtils

#args_node_for, #end_line, #method_parameter_list_end_line, #name_location, #source!, #value_to_sym

Methods included from FileFilter

#add_offense, #configured_mode, #on_new_investigation, #rbs_inline_disabled?, #rbs_inline_enabled?, #rbs_inline_file_skipped?, #skip_by_mode?, warn_invalid_mode

Instance Method Details

#on_send(node) ⇒ void

This method returns an undefined value.

Parameters:

  • node (RuboCop::AST::SendNode)


32
33
34
35
36
# File 'lib/rubocop/cop/style/rbs_inline/missing_data_class_annotation.rb', line 32

def on_send(node) #: void
  return unless struct_like_class?(node)

  check_missing_annotations(node)
end