summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2021-06-21 18:44:10 +0900
committeraycabta <aycabta@gmail.com>2021-06-21 18:44:10 +0900
commit30cc07fdc127e36d42e832bfcca755c863daf336 (patch)
treec479eb4430097a4dab7b22a319eabef8b88dedcf
parent5cc11845b2feb609a54fd1be8748da590eeebdb3 (diff)
Check Ruby version to use Fiddle with variadic args in test-all
-rw-r--r--lib/reline/terminfo.rb11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/reline/terminfo.rb b/lib/reline/terminfo.rb
index cfc8280926..01e8df410f 100644
--- a/lib/reline/terminfo.rb
+++ b/lib/reline/terminfo.rb
@@ -9,8 +9,17 @@ module Reline::Terminfo
@curses_dl = nil
def self.curses_dl
return @curses_dl if @curses_dl
- if Fiddle.const_defined?(:VERSION) and Gem::Version.create(Fiddle::VERSION) >= Gem::Version.create('1.0.1')
+ if RUBY_VERSION >= '3.0.0'
+ # Gem module isn't defined in test-all of the Ruby repository, and
+ # Fiddle in Ruby 3.0.0 or later supports Fiddle::TYPE_VARIADIC.
+ fiddle_supports_variadic = true
+ elsif Fiddle.const_defined?(:VERSION) and Gem::Version.create(Fiddle::VERSION) >= Gem::Version.create('1.0.1')
# Fiddle::TYPE_VARIADIC is supported from Fiddle 1.0.1.
+ fiddle_supports_variadic = true
+ else
+ fiddle_supports_variadic = false
+ end
+ if fiddle_supports_variadic
%w[libncursesw.so libcursesw.so libncurses.so libcurses.so].each do |curses_name|
result = Fiddle::Handle.new(curses_name)
rescue Fiddle::DLError