rubocop-rbs_inline 1.1.1 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b33ed6ff1d6efff790de931d74d2663e0ca262a761d063114e486948828e9ca
4
- data.tar.gz: 2d5678da5232ff06102653fc68a89ced09554eec6a048cc1f6dee322d37228e3
3
+ metadata.gz: df9439ba1e35119fa462bf18e5fa2a95932072807697d9d9a0e6f68e85331a06
4
+ data.tar.gz: c78bec5cc75c31720322a082aa87ab085077c01b010ab1c79e7033b236f54308
5
5
  SHA512:
6
- metadata.gz: 0a6c443fbc4e058be3aca4ccc5b3e25068b139095c01994bfcd8ea62b406701f44fa5b4b643d7a23902e5c4a7d754b4fb5f741f0f0706ab36bc8cd465801751e
7
- data.tar.gz: c6fcb3f88b5685f0a20e7a0c90f723ba4dabd14a029e10585c61bea64258ec29304b53b3e7db3ed962365abacfc21860ef1e65866eacc89b28efcf3aeaae9360
6
+ metadata.gz: 4bd4daa7ae11ace6793d58d78b06cb65b21fb5f3c8fb956b33b021a4b5aacdf397cff2dbf50d2ce9c888e0492764aa8280c24712c554013bb611a646a02d12bf
7
+ data.tar.gz: 020fa5e9e7dff73ba78d14e12b0a9caf4490893efaa422facddbb58097e44dfcd1e2c96e50cdef3beafdc71e9e97229fc4c30e116dc3eacf476fe545a1943b40
@@ -1,5 +1,12 @@
1
1
  {
2
2
  "cSpell.words": [
3
+ "blockarg",
4
+ "Ivar",
5
+ "kwarg",
6
+ "kwoptarg",
7
+ "kwrestarg",
8
+ "optarg",
9
+ "restarg",
3
10
  "strscan"
4
11
  ],
5
12
  "rbs-helper.rbs-inline-on-save": true,
data/Steepfile CHANGED
@@ -8,4 +8,5 @@ target :lib do
8
8
  check 'lib'
9
9
 
10
10
  configure_code_diagnostics(D::Ruby.strict)
11
+ implicitly_returns_nil!
11
12
  end
@@ -30,7 +30,8 @@ module RuboCop
30
30
  RBS_INLINE_KEYWORDS = %w[inherits override use module-self generic skip module class].freeze #: Array[String]
31
31
 
32
32
  def on_new_investigation #: void
33
- processed_source.comments.each do |comment|
33
+ comments = consume_embedded_rbs(processed_source.comments)
34
+ comments.each do |comment|
34
35
  add_offense(comment) if comment.text =~ /\A#\s+#{SIGNATURE_PATTERN}/
35
36
  add_offense(comment) if comment.text =~ /\A#\s+:\s*#{SIGNATURE_PATTERN}/
36
37
 
@@ -40,6 +41,33 @@ module RuboCop
40
41
  end
41
42
  end
42
43
  end
44
+
45
+ private
46
+
47
+ def consume_embedded_rbs(comments) # rubocop:disable Metrics/MethodLength
48
+ in_embedded = false
49
+ indent = 1
50
+ line = 0
51
+ comments.select do |comment|
52
+ case comment.text
53
+ when /\A#(\s+)@rbs!(\s+|\Z)/
54
+ in_embedded = true
55
+ indent = Regexp.last_match(1).to_s.size
56
+ line = comment.loc.line
57
+ false
58
+ when /\A#(\s{#{indent + 1},}.*|\s*)\Z/
59
+ if in_embedded && comment.loc.line == line + 1
60
+ line += 1
61
+ false
62
+ else
63
+ true
64
+ end
65
+ else
66
+ in_embedded = false
67
+ true
68
+ end
69
+ end
70
+ end
43
71
  end
44
72
  end
45
73
  end
@@ -23,10 +23,11 @@ module RuboCop
23
23
  class InvalidTypes < Base
24
24
  include RangeHelp
25
25
  include RBS::Inline::AST::Annotations
26
+ include RBS::Inline::AST::Members
26
27
 
27
28
  MSG = 'Invalid annotation found.'
28
29
 
29
- def on_new_investigation #: void # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
30
+ def on_new_investigation #: void # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
30
31
  results = parse_comments
31
32
  results.each do |result|
32
33
  result.each_annotation do |annotation|
@@ -44,6 +45,11 @@ module RuboCop
44
45
  add_offense(range) if annotation.self_types.empty?
45
46
  when SyntaxErrorAssertion
46
47
  add_offense(range)
48
+ when Embedded
49
+ comment = annotation.source.comments.fetch(0)
50
+ parsing_result = RBS::Inline::AnnotationParser::ParsingResult.new(comment)
51
+ embedded = RBSEmbedded.new(parsing_result, annotation)
52
+ add_offense(range) if embedded.members.is_a?(RBS::ParsingError)
47
53
  end
48
54
  end
49
55
  end
@@ -141,7 +141,7 @@ module RuboCop
141
141
  # RBS::Inline::AST::Annotations::VarType
142
142
  def add_offense_for(annotation) #: void # rubocop:disable Metrics/AbcSize
143
143
  name = annotation_name(annotation)
144
- loc = annotation.source.comments.first.location
144
+ loc = annotation.source.comments.first&.location or raise
145
145
  source = processed_source.buffer.source.dup.force_encoding('ASCII')
146
146
  text = source[loc.start_offset...loc.end_offset] or raise
147
147
  comment = text.force_encoding(processed_source.buffer.source.encoding)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RuboCop
4
4
  module RbsInline
5
- VERSION = '1.1.1'
5
+ VERSION = '1.2.1'
6
6
  end
7
7
  end
@@ -6,7 +6,7 @@ gems:
6
6
  source:
7
7
  type: git
8
8
  name: ruby/gem_rbs_collection
9
- revision: ddba0c60808c22451a194c1b57504fceb4fafd23
9
+ revision: 7651e7b92c15bd5b4bc11fd3dd455be0ea571fd0
10
10
  remote: https://github.com/ruby/gem_rbs_collection.git
11
11
  repo_dir: gems
12
12
  - name: dbm
@@ -18,7 +18,7 @@ gems:
18
18
  source:
19
19
  type: git
20
20
  name: ruby/gem_rbs_collection
21
- revision: ddba0c60808c22451a194c1b57504fceb4fafd23
21
+ revision: 7651e7b92c15bd5b4bc11fd3dd455be0ea571fd0
22
22
  remote: https://github.com/ruby/gem_rbs_collection.git
23
23
  repo_dir: gems
24
24
  - name: fileutils
@@ -46,7 +46,7 @@ gems:
46
46
  source:
47
47
  type: git
48
48
  name: ruby/gem_rbs_collection
49
- revision: ddba0c60808c22451a194c1b57504fceb4fafd23
49
+ revision: 7651e7b92c15bd5b4bc11fd3dd455be0ea571fd0
50
50
  remote: https://github.com/ruby/gem_rbs_collection.git
51
51
  repo_dir: gems
52
52
  - name: parser
@@ -54,7 +54,7 @@ gems:
54
54
  source:
55
55
  type: git
56
56
  name: ruby/gem_rbs_collection
57
- revision: ddba0c60808c22451a194c1b57504fceb4fafd23
57
+ revision: 7651e7b92c15bd5b4bc11fd3dd455be0ea571fd0
58
58
  remote: https://github.com/ruby/gem_rbs_collection.git
59
59
  repo_dir: gems
60
60
  - name: pathname
@@ -62,7 +62,7 @@ gems:
62
62
  source:
63
63
  type: stdlib
64
64
  - name: prism
65
- version: 1.0.0
65
+ version: 1.2.0
66
66
  source:
67
67
  type: rubygems
68
68
  - name: pstore
@@ -78,7 +78,7 @@ gems:
78
78
  source:
79
79
  type: git
80
80
  name: ruby/gem_rbs_collection
81
- revision: ddba0c60808c22451a194c1b57504fceb4fafd23
81
+ revision: 7651e7b92c15bd5b4bc11fd3dd455be0ea571fd0
82
82
  remote: https://github.com/ruby/gem_rbs_collection.git
83
83
  repo_dir: gems
84
84
  - name: rake
@@ -86,15 +86,15 @@ gems:
86
86
  source:
87
87
  type: git
88
88
  name: ruby/gem_rbs_collection
89
- revision: ddba0c60808c22451a194c1b57504fceb4fafd23
89
+ revision: 7651e7b92c15bd5b4bc11fd3dd455be0ea571fd0
90
90
  remote: https://github.com/ruby/gem_rbs_collection.git
91
91
  repo_dir: gems
92
92
  - name: rbs
93
- version: 3.6.1
93
+ version: 3.8.1
94
94
  source:
95
95
  type: rubygems
96
96
  - name: rbs-inline
97
- version: 0.9.0
97
+ version: 0.10.0
98
98
  source:
99
99
  type: rubygems
100
100
  - name: rdoc
@@ -106,7 +106,7 @@ gems:
106
106
  source:
107
107
  type: git
108
108
  name: ruby/gem_rbs_collection
109
- revision: ddba0c60808c22451a194c1b57504fceb4fafd23
109
+ revision: 7651e7b92c15bd5b4bc11fd3dd455be0ea571fd0
110
110
  remote: https://github.com/ruby/gem_rbs_collection.git
111
111
  repo_dir: gems
112
112
  - name: rubocop
@@ -114,7 +114,7 @@ gems:
114
114
  source:
115
115
  type: git
116
116
  name: ruby/gem_rbs_collection
117
- revision: ddba0c60808c22451a194c1b57504fceb4fafd23
117
+ revision: 7651e7b92c15bd5b4bc11fd3dd455be0ea571fd0
118
118
  remote: https://github.com/ruby/gem_rbs_collection.git
119
119
  repo_dir: gems
120
120
  - name: rubocop-ast
@@ -122,7 +122,7 @@ gems:
122
122
  source:
123
123
  type: git
124
124
  name: ruby/gem_rbs_collection
125
- revision: ddba0c60808c22451a194c1b57504fceb4fafd23
125
+ revision: 7651e7b92c15bd5b4bc11fd3dd455be0ea571fd0
126
126
  remote: https://github.com/ruby/gem_rbs_collection.git
127
127
  repo_dir: gems
128
128
  - name: strscan
@@ -27,6 +27,10 @@ module RuboCop
27
27
  RBS_INLINE_KEYWORDS: Array[String]
28
28
 
29
29
  def on_new_investigation: () -> void
30
+
31
+ private
32
+
33
+ def consume_embedded_rbs: (untyped comments) -> untyped
30
34
  end
31
35
  end
32
36
  end
@@ -22,6 +22,8 @@ module RuboCop
22
22
 
23
23
  include RBS::Inline::AST::Annotations
24
24
 
25
+ include RBS::Inline::AST::Members
26
+
25
27
  MSG: ::String
26
28
 
27
29
  def on_new_investigation: () -> void
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-rbs_inline
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takeshi KOMIYA
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-10-07 00:00:00.000000000 Z
10
+ date: 2025-01-13 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rbs-inline
@@ -87,7 +86,6 @@ metadata:
87
86
  source_code_uri: https://github.com/tk0miya/rubocop-rbs_inline
88
87
  changelog_uri: https://github.com/tk0miya/rubocop-rbs_inline
89
88
  rubygems_mfa_required: 'true'
90
- post_install_message:
91
89
  rdoc_options: []
92
90
  require_paths:
93
91
  - lib
@@ -102,8 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
100
  - !ruby/object:Gem::Version
103
101
  version: '0'
104
102
  requirements: []
105
- rubygems_version: 3.5.16
106
- signing_key:
103
+ rubygems_version: 3.6.2
107
104
  specification_version: 4
108
105
  summary: rubocop extension to check RBS annotation comments
109
106
  test_files: []