Skip to content

Commit af8cb04

Browse files
committed
Print non-integer number at full precision in inspect mode
1 parent d6f4f17 commit af8cb04

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

lib/src/visitor/serialize.dart

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,14 +1193,24 @@ final class _SerializeVisitor
11931193
// Dart always converts integers to strings in the obvious way, so all we
11941194
// have to do is clamp doubles that are close to being integers.
11951195
if (fuzzyAsInt(number) case var integer?) {
1196-
// JS still uses exponential notation for integers, so we have to handle
1197-
// it here.
1198-
buffer.write(_removeExponent(integer.toString()));
1199-
return;
1196+
// Write the number as fuzzy integer only if not in inspect mode or if the
1197+
// number precisely equals to the fuzzy interger
1198+
if (!_inspect || number == integer) {
1199+
// JS still uses exponential notation for integers, so we have to handle
1200+
// it here.
1201+
buffer.write(_removeExponent(integer.toString()));
1202+
return;
1203+
}
12001204
}
12011205

12021206
var text = _removeExponent(number.toString());
12031207

1208+
// Write the number at full precision in inspect mode.
1209+
if (_inspect) {
1210+
buffer.write(text);
1211+
return;
1212+
}
1213+
12041214
// Any double that's less than `SassNumber.precision + 2` digits long is
12051215
// guaranteed to be safe to emit directly, since it'll contain at most `0.`
12061216
// followed by [SassNumber.precision] digits.

0 commit comments

Comments
 (0)