37 lines
		
	
	
		
			822 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
		
			822 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| 
								 | 
							
								# typed: true
							 | 
						||
| 
								 | 
							
								# frozen_string_literal: true
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								require "warning"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Helper module for handling warnings.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# @api private
							 | 
						||
| 
								 | 
							
								module Warnings
							 | 
						||
| 
								 | 
							
								  module_function
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  COMMON_WARNINGS = {
							 | 
						||
| 
								 | 
							
								    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\.},
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								  }.freeze
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  def ignore(*warnings)
							 | 
						||
| 
								 | 
							
								    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?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    result = yield
							 | 
						||
| 
								 | 
							
								    Warning.clear
							 | 
						||
| 
								 | 
							
								    result
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								end
							 |