[Bug #19167] Remove useless conversion of classes for special const
This commit is contained in:
parent
181d4bee5e
commit
11acb7f7bc
@ -1040,9 +1040,11 @@ end
|
|||||||
@s.rb_sprintf3(true.class).should == s
|
@s.rb_sprintf3(true.class).should == s
|
||||||
end
|
end
|
||||||
|
|
||||||
it "formats a TrueClass VALUE as 'true' if sign specified in format" do
|
ruby_bug "#19167", ""..."3.2" do
|
||||||
s = 'Result: true.'
|
it "formats a TrueClass VALUE as 'true' if sign specified in format" do
|
||||||
@s.rb_sprintf4(true.class).should == s
|
s = 'Result: TrueClass.'
|
||||||
|
@s.rb_sprintf4(true.class).should == s
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it "truncates a string to a supplied precision if that is shorter than the string" do
|
it "truncates a string to a supplied precision if that is shorter than the string" do
|
||||||
|
26
sprintf.c
26
sprintf.c
@ -1106,26 +1106,16 @@ ruby__sfvextra(rb_printf_buffer *fp, size_t valsize, void *valp, long *sz, int s
|
|||||||
rb_raise(rb_eRuntimeError, "rb_vsprintf reentered");
|
rb_raise(rb_eRuntimeError, "rb_vsprintf reentered");
|
||||||
}
|
}
|
||||||
if (sign == '+') {
|
if (sign == '+') {
|
||||||
if (RB_TYPE_P(value, T_CLASS)) {
|
|
||||||
# define LITERAL(str) (*sz = rb_strlen_lit(str), str)
|
# define LITERAL(str) (*sz = rb_strlen_lit(str), str)
|
||||||
|
/* optimize special const cases */
|
||||||
if (value == rb_cNilClass) {
|
switch (value) {
|
||||||
return LITERAL("nil");
|
# define LITERAL_CASE(x) case Q##x: return LITERAL(#x)
|
||||||
}
|
LITERAL_CASE(nil);
|
||||||
else if (value == rb_cInteger) {
|
LITERAL_CASE(true);
|
||||||
return LITERAL("Integer");
|
LITERAL_CASE(false);
|
||||||
}
|
# undef LITERAL_CASE
|
||||||
else if (value == rb_cSymbol) {
|
|
||||||
return LITERAL("Symbol");
|
|
||||||
}
|
|
||||||
else if (value == rb_cTrueClass) {
|
|
||||||
return LITERAL("true");
|
|
||||||
}
|
|
||||||
else if (value == rb_cFalseClass) {
|
|
||||||
return LITERAL("false");
|
|
||||||
}
|
|
||||||
# undef LITERAL
|
|
||||||
}
|
}
|
||||||
|
# undef LITERAL
|
||||||
value = rb_inspect(value);
|
value = rb_inspect(value);
|
||||||
}
|
}
|
||||||
else if (SYMBOL_P(value)) {
|
else if (SYMBOL_P(value)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user