ruby-changes:37038
From: hsbt <ko1@a...>
Date: Sat, 3 Jan 2015 18:23:57 +0900 (JST)
Subject: [ruby-changes:37038] hsbt:r49119 (trunk): * ext/fiddle/lib/fiddle/cparser.rb: r49110 brake Fiddle::Import with
hsbt 2015-01-03 18:23:43 +0900 (Sat, 03 Jan 2015) New Revision: 49119 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=49119 Log: * ext/fiddle/lib/fiddle/cparser.rb: r49110 brake Fiddle::Import with type_alias * test/fiddle/test_cparser.rb: added type_alias test for parse_ctype and parse_struct_signature. Modified files: trunk/ChangeLog trunk/ext/fiddle/lib/fiddle/cparser.rb trunk/test/fiddle/test_cparser.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 49118) +++ ChangeLog (revision 49119) @@ -1,3 +1,10 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Sat Jan 3 18:19:50 2015 SHIBATA Hiroshi <shibata.hiroshi@g...> + + * ext/fiddle/lib/fiddle/cparser.rb: r49110 brake Fiddle::Import with + type_alias + * test/fiddle/test_cparser.rb: added type_alias test for parse_ctype + and parse_struct_signature. + Sat Jan 3 16:02:20 2015 Ayumu AIZAWA <ayumu.aizawa@g...> * lib/net/http.rb (Net::HTTP.proxy_user): retrieve proxy user from http_proxy. Index: ext/fiddle/lib/fiddle/cparser.rb =================================================================== --- ext/fiddle/lib/fiddle/cparser.rb (revision 49118) +++ ext/fiddle/lib/fiddle/cparser.rb (revision 49119) @@ -169,6 +169,7 @@ module Fiddle https://github.com/ruby/ruby/blob/trunk/ext/fiddle/lib/fiddle/cparser.rb#L169 when /\*/, /\[[\s\d]*\]/ return TYPE_VOIDP else + ty = ty.split(' ')[0] if( tymap[ty] ) return parse_ctype(tymap[ty], tymap) else Index: test/fiddle/test_cparser.rb =================================================================== --- test/fiddle/test_cparser.rb (revision 49118) +++ test/fiddle/test_cparser.rb (revision 49119) @@ -59,6 +59,14 @@ module Fiddle https://github.com/ruby/ruby/blob/trunk/test/fiddle/test_cparser.rb#L59 assert_equal(TYPE_UINTPTR_T, parse_ctype("uintptr_t")) end + def test_undefined_ctype + assert_raises(DLError) { parse_ctype('DWORD') } + end + + def test_undefined_ctype_with_type_alias + assert_equal(-TYPE_LONG, parse_ctype('DWORD', {"DWORD" => "unsigned long"})) + end + def test_struct_basic assert_equal [[TYPE_INT, TYPE_CHAR], ['i', 'c']], parse_struct_signature(['int i', 'char c']) end @@ -83,6 +91,14 @@ module Fiddle https://github.com/ruby/ruby/blob/trunk/test/fiddle/test_cparser.rb#L91 assert_equal [[TYPE_INT,TYPE_VOIDP,TYPE_VOIDP], ['x', 'cb', 'name']], parse_struct_signature('int x; void (*cb)(); const char* name') end + def test_struct_undefined + assert_raises(DLError) { parse_struct_signature(['int i', 'DWORD cb']) } + end + + def test_struct_undefined_with_type_alias + assert_equal [[TYPE_INT,-TYPE_LONG], ['i', 'cb']], parse_struct_signature(['int i', 'DWORD cb'], {"DWORD" => "unsigned long"}) + end + def test_signature_basic func, ret, args = parse_signature('void func()') assert_equal 'func', func -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/