Project

General

Profile

Bug #16522

Ruby 2.7 logs deprecation warning when Warning[:deprecated] is set to false.

Added by snehasomwanshi@gmail.com (Sneha Somwanshi) 2 months ago. Updated 2 months ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:96969]

Description

Hi

While upgrading our monolithic app to ruby 2.7, we realised that ruby 2.7 is not suppressing all deprecation warnings.

Here is the test case:

~/dev/freeagent (ruby_2_7_0 *%) $ ruby -W:no-deprecated -e 'require "json"; JSON::Ext::Parser.new("hello", {})'
-e:1: warning: Using the last argument as keyword parameters is deprecated

The warning is originating from https://github.com/ruby/ruby/blob/647ee6f091eafcce70ffb75ddf7e121e192ab217/class.c#L2054 and setting Warning[:deprecated] = false or RUBYOPT=-W:no-deprecated -W:no-experimental does not suppress this warning.

#1

Updated by snehasomwanshi@gmail.com (Sneha Somwanshi) 2 months ago

  • Description updated (diff)

Updated by jeremyevans0 (Jeremy Evans) 2 months ago

This no longer applies to the master branch, as the warnings have been removed.

Fixing this in 2.7 could be challenging, as the function to deduplicate warnings is static in vm_args.c. That function would have to be made non-static at least. The function also requires access to ec and iseq, and while I think ec is possible to get access to, I'm not sure about iseq.

You can work around the issue using the warning gem and using Warning.dedup.

Also available in: Atom PDF