From 5c48ec84cbe0e58c6a02797bea3b20fe3555a543 Mon Sep 17 00:00:00 2001 From: stepan <stepan.sindelar@oracle.com> Date: Fri, 20 Jan 2017 14:27:28 +0100 Subject: [PATCH] Sprintf: handle '%g' with integer argument --- .../com/oracle/truffle/r/nodes/builtin/base/Sprintf.java | 6 +++++- .../src/com/oracle/truffle/r/test/ExpectedTestOutput.test | 4 ++++ .../oracle/truffle/r/test/builtins/TestBuiltin_sprintf.java | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Sprintf.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Sprintf.java index c40704dc7a..a18ee23a79 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Sprintf.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Sprintf.java @@ -337,7 +337,11 @@ public abstract class Sprintf extends RBuiltinNode { } conversions[fi.numArg - 1] = fi.conversion; } - sb.append(fi.conversion); + char conversion = fi.conversion; + if (conversion == 'g' && args[fi.numArg - 1] instanceof Integer) { + conversion = 'd'; + } + sb.append(conversion); i = fi.nextChar; } diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test index b69fe6363c..ced94c6968 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test @@ -60049,6 +60049,10 @@ character(0) #{ sprintf("foo") } [1] "foo" +##com.oracle.truffle.r.test.builtins.TestBuiltin_sprintf.testSprintf# +#{ sprintf('plot_%02g', 3L) } +[1] "plot_03" + ##com.oracle.truffle.r.test.builtins.TestBuiltin_sprintf.testSprintf# #{ sprintf(c("foo %f %d", "bar %f %d"), 7, 42L) } [1] "foo 7.000000 42" "bar 7.000000 42" diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_sprintf.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_sprintf.java index 7a95cae934..d48f6c25f0 100644 --- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_sprintf.java +++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/builtins/TestBuiltin_sprintf.java @@ -146,5 +146,6 @@ public class TestBuiltin_sprintf extends TestBase { assertEval("{ sprintf(c(\"foo %f %d\", \"bar %f %d\"), 7, 42L) }"); assertEval("{ sprintf(c(\"foo %f %d\", \"bar %f %d\"), c(7,1), c(42L, 2L)) }"); assertEval("{ sprintf(\"%.3g\", 1.234) }"); + assertEval("{ sprintf('plot_%02g', 3L) }"); } } -- GitLab