Skip to content

Commit

Permalink
Struct#members and Struct::members should return an Array of Symbols …
Browse files Browse the repository at this point in the history
…in 1.9

Signed-off-by: Hiro Asari <asari.ruby@gmail.com>
  • Loading branch information
eregon authored and BanzaiMan committed Nov 20, 2011
1 parent 5ae757d commit 6348138
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 3 deletions.
1 change: 0 additions & 1 deletion spec/tags/1.9/ruby/core/struct/members_tags.txt

This file was deleted.

27 changes: 25 additions & 2 deletions src/org/jruby/RubyStruct.java
Expand Up @@ -305,10 +305,15 @@ public static IRubyObject newStruct(IRubyObject recv, IRubyObject arg0, IRubyObj
return RubyStruct.newStruct(recv, arg0, arg1, arg2, block);
}

@JRubyMethod
@JRubyMethod(name = "members", compat = CompatVersion.RUBY1_8)
public static IRubyObject members(IRubyObject recv, Block block) {
return RubyStruct.members(recv, block);
}

@JRubyMethod(name = "members", compat = CompatVersion.RUBY1_9)
public static IRubyObject members19(IRubyObject recv, Block block) {
return RubyStruct.members19(recv, block);
}
}

/** Create new Structure.
Expand Down Expand Up @@ -428,10 +433,28 @@ public static RubyArray members(IRubyObject recv, Block block) {
return result;
}

@JRubyMethod
public static RubyArray members19(IRubyObject recv, Block block) {
RubyArray member = (RubyArray) getInternalVariable((RubyClass) recv, "__member__");

assert !member.isNil() : "uninitialized struct";

RubyArray result = recv.getRuntime().newArray(member.getLength());
for (int i = 0,k=member.getLength(); i < k; i++) {
result.append(member.eltInternal(i));
}

return result;
}

@JRubyMethod(name = "members", compat = CompatVersion.RUBY1_8)
public RubyArray members() {
return members(classOf(), Block.NULL_BLOCK);
}

@JRubyMethod(name = "members", compat = CompatVersion.RUBY1_9)
public RubyArray members19() {
return members19(classOf(), Block.NULL_BLOCK);
}

@JRubyMethod
public RubyArray select(ThreadContext context, Block block) {
Expand Down

0 comments on commit 6348138

Please sign in to comment.