mirror of
				https://gitea.invidious.io/iv-org/shard-ameba.git
				synced 2024-08-15 00:53:29 +00:00 
			
		
		
		
	Use name(_end)_location helpers consistently
				
					
				
			This commit is contained in:
		
							parent
							
								
									98cc6fd612
								
							
						
					
					
						commit
						f984d83b05
					
				
					 12 changed files with 32 additions and 16 deletions
				
			
		|  | @ -41,7 +41,7 @@ module Ameba::Rule::Lint | |||
|       return unless (obj = node.obj).is_a?(Crystal::Call) | ||||
|       return unless obj.name.in?(obj.block ? BLOCK_CALL_NAMES : CALL_NAMES) | ||||
| 
 | ||||
|       return unless name_location = obj.name_location | ||||
|       return unless name_location = name_location(obj) | ||||
|       return unless name_location_end = name_end_location(obj) | ||||
|       return unless end_location = name_end_location(node) | ||||
| 
 | ||||
|  |  | |||
|  | @ -31,7 +31,7 @@ module Ameba::Rule::Lint | |||
| 
 | ||||
|     def test(source, node : Crystal::StringInterpolation) | ||||
|       string_coercion_nodes(node).each do |expr| | ||||
|         issue_for expr.name_location, expr.end_location, MSG | ||||
|         issue_for name_location(expr), expr.end_location, MSG | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|  |  | |||
|  | @ -27,6 +27,8 @@ module Ameba::Rule::Performance | |||
|   #     - reject | ||||
|   # ``` | ||||
|   class AnyAfterFilter < Base | ||||
|     include AST::Util | ||||
| 
 | ||||
|     properties do | ||||
|       description "Identifies usage of `any?` calls that follow filters" | ||||
|       filter_names %w(select reject) | ||||
|  | @ -39,7 +41,7 @@ module Ameba::Rule::Performance | |||
|       return unless obj.is_a?(Crystal::Call) && obj.block && node.block.nil? | ||||
|       return unless obj.name.in?(filter_names) | ||||
| 
 | ||||
|       issue_for obj.name_location, node.name_end_location, MSG % obj.name | ||||
|       issue_for name_location(obj), name_end_location(node), MSG % obj.name | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -22,6 +22,8 @@ module Ameba::Rule::Performance | |||
|   #   Enabled: true | ||||
|   # ``` | ||||
|   class CompactAfterMap < Base | ||||
|     include AST::Util | ||||
| 
 | ||||
|     properties do | ||||
|       description "Identifies usage of `compact` calls that follow `map`" | ||||
|     end | ||||
|  | @ -37,7 +39,7 @@ module Ameba::Rule::Performance | |||
|       return unless obj.is_a?(Crystal::Call) && obj.block | ||||
|       return unless obj.name == "map" | ||||
| 
 | ||||
|       issue_for obj.name_location, node.name_end_location, MSG | ||||
|       issue_for name_location(obj), name_end_location(node), MSG | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -57,7 +57,7 @@ module Ameba::Rule::Performance | |||
|       return unless obj.args.empty? && obj.block.nil? | ||||
|       return unless method = call_names[obj.name]? | ||||
| 
 | ||||
|       return unless name_location = obj.name_location | ||||
|       return unless name_location = name_location(obj) | ||||
|       return unless end_location = name_end_location(node) | ||||
| 
 | ||||
|       msg = MSG % {method, obj.name} | ||||
|  |  | |||
|  | @ -26,6 +26,8 @@ module Ameba::Rule::Performance | |||
|   #     - select | ||||
|   # ``` | ||||
|   class FirstLastAfterFilter < Base | ||||
|     include AST::Util | ||||
| 
 | ||||
|     properties do | ||||
|       description "Identifies usage of `first/last/first?/last?` calls that follow filters" | ||||
|       filter_names %w(select) | ||||
|  | @ -47,7 +49,7 @@ module Ameba::Rule::Performance | |||
| 
 | ||||
|       message = node.name.includes?(CALL_NAMES.first) ? MSG : MSG_REVERSE | ||||
| 
 | ||||
|       issue_for obj.name_location, node.name_end_location, | ||||
|       issue_for name_location(obj), name_end_location(node), | ||||
|         message % {obj.name, node.name} | ||||
|     end | ||||
|   end | ||||
|  |  | |||
|  | @ -22,6 +22,8 @@ module Ameba::Rule::Performance | |||
|   #   Enabled: true | ||||
|   # ``` | ||||
|   class FlattenAfterMap < Base | ||||
|     include AST::Util | ||||
| 
 | ||||
|     properties do | ||||
|       description "Identifies usage of `flatten` calls that follow `map`" | ||||
|     end | ||||
|  | @ -37,7 +39,7 @@ module Ameba::Rule::Performance | |||
|       return unless obj.is_a?(Crystal::Call) && obj.block | ||||
|       return unless obj.name == "map" | ||||
| 
 | ||||
|       issue_for obj.name_location, node.name_end_location, MSG | ||||
|       issue_for name_location(obj), name_end_location(node), MSG | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -23,6 +23,8 @@ module Ameba::Rule::Performance | |||
|   #   Enabled: true | ||||
|   # ``` | ||||
|   class MapInsteadOfBlock < Base | ||||
|     include AST::Util | ||||
| 
 | ||||
|     properties do | ||||
|       description "Identifies usage of `sum/product` calls that follow `map`" | ||||
|     end | ||||
|  | @ -40,7 +42,7 @@ module Ameba::Rule::Performance | |||
|       return unless obj.is_a?(Crystal::Call) && obj.block | ||||
|       return unless obj.name == MAP_NAME | ||||
| 
 | ||||
|       issue_for obj.name_location, node.name_end_location, | ||||
|       issue_for name_location(obj), name_end_location(node), | ||||
|         MSG % {node.name, node.name} | ||||
|     end | ||||
|   end | ||||
|  |  | |||
|  | @ -26,6 +26,8 @@ module Ameba::Rule::Performance | |||
|   #   Enabled: true | ||||
|   # ``` | ||||
|   class MinMaxAfterMap < Base | ||||
|     include AST::Util | ||||
| 
 | ||||
|     properties do | ||||
|       description "Identifies usage of `min/max/minmax` calls that follow `map`" | ||||
|     end | ||||
|  | @ -42,14 +44,14 @@ module Ameba::Rule::Performance | |||
|       return unless (obj = node.obj) && obj.is_a?(Crystal::Call) | ||||
|       return unless obj.name == "map" && obj.block && obj.args.empty? | ||||
| 
 | ||||
|       return unless name_location = obj.name_location | ||||
|       return unless end_location = node.name_end_location | ||||
|       return unless name_location = name_location(obj) | ||||
|       return unless end_location = name_end_location(node) | ||||
| 
 | ||||
|       of_name = node.name.sub(/(.+?)(\?)?$/, "\\1_of\\2") | ||||
|       message = MSG % {of_name, node.name} | ||||
| 
 | ||||
|       issue_for name_location, end_location, message do |corrector| | ||||
|         next unless node_name_location = node.name_location | ||||
|         next unless node_name_location = name_location(node) | ||||
| 
 | ||||
|         # TODO: switching the order of the below calls breaks the corrector | ||||
|         corrector.replace( | ||||
|  |  | |||
|  | @ -33,6 +33,8 @@ module Ameba::Rule::Performance | |||
|   #     - reject | ||||
|   # ``` | ||||
|   class SizeAfterFilter < Base | ||||
|     include AST::Util | ||||
| 
 | ||||
|     properties do | ||||
|       description "Identifies usage of `size` calls that follow filter" | ||||
|       filter_names %w(select reject) | ||||
|  | @ -49,7 +51,7 @@ module Ameba::Rule::Performance | |||
|       return unless obj.is_a?(Crystal::Call) && obj.block | ||||
|       return unless obj.name.in?(filter_names) | ||||
| 
 | ||||
|       issue_for obj.name_location, node.name_end_location, MSG % obj.name | ||||
|       issue_for name_location(obj), name_end_location(node), MSG % obj.name | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -39,6 +39,8 @@ module Ameba::Rule::Style | |||
|   #     - one? | ||||
|   # ``` | ||||
|   class IsAFilter < Base | ||||
|     include AST::Util | ||||
| 
 | ||||
|     properties do | ||||
|       description "Identifies usage of `is_a?/nil?` calls within filters" | ||||
|       filter_names %w(select reject any? all? none? one?) | ||||
|  | @ -54,7 +56,7 @@ module Ameba::Rule::Style | |||
| 
 | ||||
|     def test(source, node : Crystal::Call) | ||||
|       return unless node.name.in?(filter_names) | ||||
|       return unless filter_location = node.name_location | ||||
|       return unless filter_location = name_location(node) | ||||
|       return unless block = node.block | ||||
|       return unless (body = block.body).is_a?(Crystal::IsA) | ||||
|       return unless (path = body.const).is_a?(Crystal::Path) | ||||
|  |  | |||
|  | @ -47,7 +47,7 @@ module Ameba::Rule::Style | |||
|     CALL_PATTERN = "%s(%s&.%s)" | ||||
| 
 | ||||
|     protected def same_location_lines?(a, b) | ||||
|       return unless a_location = a.name_location | ||||
|       return unless a_location = name_location(a) | ||||
|       return unless b_location = b.location | ||||
| 
 | ||||
|       a_location.line_number == b_location.line_number | ||||
|  | @ -78,7 +78,7 @@ module Ameba::Rule::Style | |||
| 
 | ||||
|     protected def valid_line_length?(node, code) | ||||
|       if max_line_length = self.max_line_length | ||||
|         if location = node.name_location | ||||
|         if location = name_location(node) | ||||
|           final_line_length = location.column_number + code.size | ||||
|           return final_line_length <= max_line_length | ||||
|         end | ||||
|  | @ -203,7 +203,7 @@ module Ameba::Rule::Style | |||
|       return unless valid_line_length?(call, call_code) | ||||
|       return unless valid_length?(call_code) | ||||
| 
 | ||||
|       return unless location = call.name_location | ||||
|       return unless location = name_location(call) | ||||
|       return unless end_location = block.end_location | ||||
| 
 | ||||
|       if call_code.includes?("{...}") | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue