@@ -87,14 +87,24 @@ class BuiltinTemplate:
8787 "format_int64" : BuiltinTemplate ("str({0})" ),
8888 "format_int32" : BuiltinTemplate ("(str({0}) + 'i32')" ),
8989 "format_uint32" : BuiltinTemplate ("(str({0}) + 'u32')" ),
90- "format_float32" : BuiltinTemplate ("( self.format_float32_value ({0}) + 'f32' )" ),
90+ "format_float32" : BuiltinTemplate ("self.format_float32_literal ({0})" ),
9191 "format_float64" : BuiltinTemplate ("str({0})" ),
9292 "format_string" : BuiltinTemplate ("self.format_string_value({0})" ),
9393 "format_symbol" : BuiltinTemplate ("{0}" ),
9494 "format_bool" : BuiltinTemplate ('("true" if {0} else "false")' ),
9595 "format_decimal" : BuiltinTemplate ("self.format_decimal({0})" ),
9696 "format_int128" : BuiltinTemplate ("self.format_int128({0})" ),
9797 "format_uint128" : BuiltinTemplate ("self.format_uint128({0})" ),
98+ # Formatted variants (same as base in Python)
99+ "format_int64_formatted" : BuiltinTemplate ("str({0})" ),
100+ "format_int32_formatted" : BuiltinTemplate ("(str({0}) + 'i32')" ),
101+ "format_uint32_formatted" : BuiltinTemplate ("(str({0}) + 'u32')" ),
102+ "format_float32_formatted" : BuiltinTemplate ("self.format_float32_literal({0})" ),
103+ "format_float64_formatted" : BuiltinTemplate ("str({0})" ),
104+ "format_string_formatted" : BuiltinTemplate ("self.format_string_value({0})" ),
105+ "format_decimal_formatted" : BuiltinTemplate ("self.format_decimal({0})" ),
106+ "format_int128_formatted" : BuiltinTemplate ("self.format_int128({0})" ),
107+ "format_uint128_formatted" : BuiltinTemplate ("self.format_uint128({0})" ),
98108 "greater" : BuiltinTemplate ("({0} > {1})" ),
99109 "to_string" : BuiltinTemplate ("str({0})" ),
100110 # Type conversions used by pretty printer
@@ -180,17 +190,35 @@ class BuiltinTemplate:
180190 "indent_sexp_io" : BuiltinTemplate ("nothing" , ["indent_sexp!(pp)" ]),
181191 "dedent_io" : BuiltinTemplate ("nothing" , ["dedent!(pp)" ]),
182192 "try_flat_io" : BuiltinTemplate ("try_flat(pp, {0}, {1})" ),
183- "format_int64" : BuiltinTemplate ("format_int(pp, {0})" ),
193+ "format_int64" : BuiltinTemplate ("string( {0})" ),
184194 "format_int32" : BuiltinTemplate ('(string(Int64({0})) * "i32")' ),
185195 "format_uint32" : BuiltinTemplate ('(string(Int64({0})) * "u32")' ),
186- "format_float32" : BuiltinTemplate ('(lowercase(string({0})) * "f32")' ),
187- "format_float64" : BuiltinTemplate ("format_float(pp, {0})" ),
188- "format_string" : BuiltinTemplate ("format_string(pp, {0})" ),
196+ "format_float32" : BuiltinTemplate ("format_float32_literal({0})" ),
197+ "format_float64" : BuiltinTemplate ("lowercase(string({0}))" ),
198+ "format_string" : BuiltinTemplate (
199+ "format_string(DEFAULT_CONSTANT_FORMATTER, pp, {0})"
200+ ),
189201 "format_symbol" : BuiltinTemplate ("{0}" ),
190202 "format_bool" : BuiltinTemplate ("format_bool(pp, {0})" ),
191- "format_decimal" : BuiltinTemplate ("format_decimal(pp, {0})" ),
192- "format_int128" : BuiltinTemplate ("format_int128(pp, {0})" ),
193- "format_uint128" : BuiltinTemplate ("format_uint128(pp, {0})" ),
203+ "format_decimal" : BuiltinTemplate (
204+ "format_decimal(DEFAULT_CONSTANT_FORMATTER, pp, {0})"
205+ ),
206+ "format_int128" : BuiltinTemplate (
207+ "format_int128(DEFAULT_CONSTANT_FORMATTER, pp, {0})"
208+ ),
209+ "format_uint128" : BuiltinTemplate (
210+ "format_uint128(DEFAULT_CONSTANT_FORMATTER, pp, {0})"
211+ ),
212+ # Formatted variants (use constant_formatter hooks in Julia)
213+ "format_int64_formatted" : BuiltinTemplate ("format_int(pp, {0})" ),
214+ "format_int32_formatted" : BuiltinTemplate ("format_int32(pp, {0})" ),
215+ "format_uint32_formatted" : BuiltinTemplate ("format_uint32(pp, {0})" ),
216+ "format_float32_formatted" : BuiltinTemplate ("format_float32(pp, {0})" ),
217+ "format_float64_formatted" : BuiltinTemplate ("format_float(pp, {0})" ),
218+ "format_string_formatted" : BuiltinTemplate ("format_string(pp, {0})" ),
219+ "format_decimal_formatted" : BuiltinTemplate ("format_decimal(pp, {0})" ),
220+ "format_int128_formatted" : BuiltinTemplate ("format_int128(pp, {0})" ),
221+ "format_uint128_formatted" : BuiltinTemplate ("format_uint128(pp, {0})" ),
194222 "greater" : BuiltinTemplate ("({0} > {1})" ),
195223 "to_string" : BuiltinTemplate ("string({0})" ),
196224 # Type conversions used by pretty printer
@@ -281,16 +309,24 @@ class BuiltinTemplate:
281309 "format_int64" : BuiltinTemplate ('fmt.Sprintf("%d", {0})' ),
282310 "format_int32" : BuiltinTemplate ('fmt.Sprintf("%di32", {0})' ),
283311 "format_uint32" : BuiltinTemplate ('fmt.Sprintf("%du32", {0})' ),
284- "format_float32" : BuiltinTemplate (
285- "fmt.Sprintf(\" %sf32\" , strconv.FormatFloat(float64({0}), 'g', -1, 32))"
286- ),
312+ "format_float32" : BuiltinTemplate ("formatFloat32({0})" ),
287313 "format_float64" : BuiltinTemplate ("formatFloat64({0})" ),
288314 "format_string" : BuiltinTemplate ("p.formatStringValue({0})" ),
289315 "format_symbol" : BuiltinTemplate ("{0}" ),
290316 "format_bool" : BuiltinTemplate ("formatBool({0})" ),
291317 "format_decimal" : BuiltinTemplate ("p.formatDecimal({0})" ),
292318 "format_int128" : BuiltinTemplate ("p.formatInt128({0})" ),
293319 "format_uint128" : BuiltinTemplate ("p.formatUint128({0})" ),
320+ # Formatted variants (same as base in Go)
321+ "format_int64_formatted" : BuiltinTemplate ('fmt.Sprintf("%d", {0})' ),
322+ "format_int32_formatted" : BuiltinTemplate ('fmt.Sprintf("%di32", {0})' ),
323+ "format_uint32_formatted" : BuiltinTemplate ('fmt.Sprintf("%du32", {0})' ),
324+ "format_float32_formatted" : BuiltinTemplate ("formatFloat32({0})" ),
325+ "format_float64_formatted" : BuiltinTemplate ("formatFloat64({0})" ),
326+ "format_string_formatted" : BuiltinTemplate ("p.formatStringValue({0})" ),
327+ "format_decimal_formatted" : BuiltinTemplate ("p.formatDecimal({0})" ),
328+ "format_int128_formatted" : BuiltinTemplate ("p.formatInt128({0})" ),
329+ "format_uint128_formatted" : BuiltinTemplate ("p.formatUint128({0})" ),
294330 "greater" : BuiltinTemplate ("({0} > {1})" ),
295331 "to_string" : BuiltinTemplate ('fmt.Sprintf("%v", {0})' ),
296332 # Type conversions used by pretty printer
0 commit comments