diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-11-25 09:31:51 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-11-25 09:31:51 +0900 |
| commit | 79e3980a7fea28a729393f4fb43415948255027e (patch) | |
| tree | 3aafe4b8bf26eedd18a688a763b236ec4ef1e475 /mrbgems/mruby-struct | |
| parent | 7f05ba86f2dee182bde6d6f2f1840f1edd030a37 (diff) | |
| parent | b60d6c42aaa10ac99a03a92a3a34da4bee066af1 (diff) | |
| download | mruby-79e3980a7fea28a729393f4fb43415948255027e.tar.gz mruby-79e3980a7fea28a729393f4fb43415948255027e.zip | |
resolve conflict; ref #3281
Diffstat (limited to 'mrbgems/mruby-struct')
| -rw-r--r-- | mrbgems/mruby-struct/src/struct.c | 26 | ||||
| -rw-r--r-- | mrbgems/mruby-struct/test/struct.rb | 6 |
2 files changed, 14 insertions, 18 deletions
diff --git a/mrbgems/mruby-struct/src/struct.c b/mrbgems/mruby-struct/src/struct.c index 8c8f54f27..edb6f6a0a 100644 --- a/mrbgems/mruby-struct/src/struct.c +++ b/mrbgems/mruby-struct/src/struct.c @@ -273,25 +273,15 @@ mrb_struct_s_def(mrb_state *mrb, mrb_value klass) } else { if (argc > 0) name = argv[0]; - if (argc > 1) rest = argv[1]; - if (mrb_array_p(rest)) { - if (!mrb_nil_p(name) && mrb_symbol_p(name)) { - /* 1stArgument:symbol -> name=nil rest=argv[0]-[n] */ - mrb_ary_unshift(mrb, rest, name); - name = mrb_nil_value(); - } - } - else { - pargv = &argv[1]; - argcnt = argc-1; - if (!mrb_nil_p(name) && mrb_symbol_p(name)) { - /* 1stArgument:symbol -> name=nil rest=argv[0]-[n] */ - name = mrb_nil_value(); - pargv = &argv[0]; - argcnt++; - } - rest = mrb_ary_new_from_values(mrb, argcnt, pargv); + pargv = &argv[1]; + argcnt = argc-1; + if (!mrb_nil_p(name) && mrb_symbol_p(name)) { + /* 1stArgument:symbol -> name=nil rest=argv[0]-[n] */ + name = mrb_nil_value(); + pargv = &argv[0]; + argcnt++; } + rest = mrb_ary_new_from_values(mrb, argcnt, pargv); for (i=0; i<RARRAY_LEN(rest); i++) { id = mrb_obj_to_sym(mrb, RARRAY_PTR(rest)[i]); mrb_ary_set(mrb, rest, i, mrb_symbol_value(id)); diff --git a/mrbgems/mruby-struct/test/struct.rb b/mrbgems/mruby-struct/test/struct.rb index bbfe18cb2..3e5d00d1f 100644 --- a/mrbgems/mruby-struct/test/struct.rb +++ b/mrbgems/mruby-struct/test/struct.rb @@ -179,3 +179,9 @@ assert("Struct#initialize_copy requires struct to be the same type") do Struct.remove_const :Test end end + +assert("Struct.new does not allow array") do + assert_raise(TypeError) do + Struct.new("Test", [:a]) + end +end |
