[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]