1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/mkmf.rb (check_signedness): should use the prelude code.

[ruby-dev:42731]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2010-12-10 09:11:48 +00:00
parent b38cc52c13
commit 30e0f51a5d
4 changed files with 40 additions and 3 deletions

View file

@ -1,4 +1,7 @@
Fri Dec 10 18:11:08 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
Fri Dec 10 18:11:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/mkmf.rb (check_signedness): should use the prelude code.
[ruby-dev:42731]
* lib/mkmf.rb (Logging.log_close): separate from Logging.logfile.

View file

@ -1167,10 +1167,10 @@ end
# done.
#
def check_signedness(type, headers = nil, opts = nil, &b)
typedef, member, _ = typedef_expr(type, headers)
typedef, member, prelude = typedef_expr(type, headers)
signed = nil
checking_for("signedness of #{type}", STRING_OR_FAILED_FORMAT) do
signed = try_signedness(typedef, member, headers, opts, &b) or next nil
signed = try_signedness(typedef, member, [prelude], opts, &b) or next nil
$defs.push("-DSIGNEDNESS_OF_%s=%+d" % [type.tr_cpp, signed])
signed < 0 ? "signed" : "unsigned"
end

View file

@ -13,6 +13,13 @@ class TestMkmf < Test::Unit::TestCase
class << MKMFLOG
alias to_s call
end
def mkmflog(msg)
log = proc {MKMFLOG[] << msg}
class << log
alias to_s call
end
log
end
def setup
@tmpdir = Dir.mktmpdir

View file

@ -0,0 +1,27 @@
require_relative 'base'
class TestMkmf
class TestSignedness < TestMkmf
def test_typeof_builtin
bug4144 = '[ruby-dev:42731]'
[["", "-1"], ["signed ", "-1"], ["unsigned ", "+1"]].each do |signed, expect|
%w[short int long].each do |type|
assert_equal(expect.to_i, mkmf {check_signedness(signed+type)}, mkmflog(bug4144))
end
end
end
def test_typeof_typedef
[["", "-1"], ["signed ", "-1"], ["unsigned ", "+1"]].each do |signed, expect|
%w[short int long].each do |type|
open("confdefs.h", "w") {|f|
f.puts "typedef #{signed}#{type} test1_t;"
}
$defs.clear
assert_equal(expect.to_i, mkmf {check_signedness("test1_t", "confdefs.h")}, MKMFLOG)
assert_includes($defs, "-DSIGNEDNESS_OF_TEST1_T=#{expect}")
end
end
end
end
end