| 
									
										
										
										
											2024-09-27 12:30:49 -04:00
										 |  |  | # typed: strict | 
					
						
							| 
									
										
										
										
											2021-02-14 11:56:32 -05:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "warning" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Helper module for handling warnings. | 
					
						
							|  |  |  | module Warnings | 
					
						
							| 
									
										
										
										
											2024-09-27 12:30:49 -04:00
										 |  |  |   COMMON_WARNINGS = T.let({ | 
					
						
							| 
									
										
										
										
											2021-02-14 11:56:32 -05:00
										 |  |  |     parser_syntax: [ | 
					
						
							|  |  |  |       %r{warning: parser/current is loading parser/ruby\d+, which recognizes}, | 
					
						
							|  |  |  |       /warning: \d+\.\d+\.\d+-compliant syntax, but you are running \d+\.\d+\.\d+\./, | 
					
						
							|  |  |  |       %r{warning: please see https://github\.com/whitequark/parser#compatibility-with-ruby-mri\.}, | 
					
						
							| 
									
										
										
										
											2024-05-17 14:42:44 +09:00
										 |  |  |     ], | 
					
						
							| 
									
										
										
										
											2024-09-27 12:30:49 -04:00
										 |  |  |   }.freeze, T::Hash[Symbol, T::Array[Regexp]]) | 
					
						
							| 
									
										
										
										
											2021-02-14 11:56:32 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-27 12:30:49 -04:00
										 |  |  |   sig { params(warnings: T.any(Symbol, Regexp), _block: T.nilable(T.proc.void)).void } | 
					
						
							|  |  |  |   def self.ignore(*warnings, &_block) | 
					
						
							| 
									
										
										
										
											2021-02-14 11:56:32 -05:00
										 |  |  |     warnings.map! do |warning| | 
					
						
							|  |  |  |       next warning if !warning.is_a?(Symbol) || !COMMON_WARNINGS.key?(warning) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       COMMON_WARNINGS[warning] | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     warnings.flatten.each do |warning| | 
					
						
							|  |  |  |       Warning.ignore warning | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |     return unless block_given? | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-27 12:30:49 -04:00
										 |  |  |     yield | 
					
						
							| 
									
										
										
										
											2021-02-14 11:56:32 -05:00
										 |  |  |     Warning.clear | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |