Skip to content

Commit a4dde27

Browse files
committed
fix: remove unused import and escape unicode in comments for Scala 2.12
Motivation: CI fails on two issues: (1) unused `alwaysinline` import in Native CharSWAR.scala, (2) `\uXXXX` sequences in comments are parsed as unicode escapes in Scala 2.12, causing compilation errors. Modification: - Remove unused `scala.scalanative.annotation.alwaysinline` import - Escape backslash-u sequences in comments across BaseByteRenderer and Renderer Result: Full test suite passes across all platforms and Scala versions
1 parent 3ac67a1 commit a4dde27

3 files changed

Lines changed: 7 additions & 8 deletions

File tree

sjsonnet/src-native/sjsonnet/CharSWAR.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package sjsonnet
22

33
import scala.scalanative.runtime.{CharArray, Intrinsics}
4-
import scala.scalanative.annotation.alwaysinline
54

65
/**
76
* SWAR (SIMD Within A Register) escape-char scanner for Scala Native.

sjsonnet/src/sjsonnet/BaseByteRenderer.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ class BaseByteRenderer[T <: java.io.OutputStream](
328328
elemBuilder.length = pos + bLen + 2
329329
} else {
330330
// Dirty string — chunked rendering: copy clean segments, escape inline
331-
// Worst case expansion: each byte → \uXXXX (6 bytes), plus 2 quotes
331+
// Worst case expansion: each byte → \\uXXXX (6 bytes), plus 2 quotes
332332
elemBuilder.ensureLength(bLen + bLen + 2) // 2x is sufficient for realistic strings
333333
elemBuilder.appendUnsafeC('"')
334334

@@ -362,11 +362,11 @@ class BaseByteRenderer[T <: java.io.OutputStream](
362362
}
363363

364364
/**
365-
* Inline JSON escape for a single byte. Handles the 7 named escapes plus \uXXXX for other control
366-
* chars. Only called for bytes that actually need escaping (< 0x20, '"', '\\').
365+
* Inline JSON escape for a single byte. Handles the 7 named escapes plus \\uXXXX for other
366+
* control chars. Only called for bytes that actually need escaping (< 0x20, '"', '\\').
367367
*/
368368
private def escapeByteInline(b: Int): Unit = {
369-
// Ensure space for longest escape sequence (\uXXXX = 6 bytes)
369+
// Ensure space for longest escape sequence (\\uXXXX = 6 bytes)
370370
elemBuilder.ensureLength(6)
371371
(b: @scala.annotation.switch) match {
372372
case '"' =>
@@ -391,7 +391,7 @@ class BaseByteRenderer[T <: java.io.OutputStream](
391391
elemBuilder.appendUnsafeC('\\')
392392
elemBuilder.appendUnsafeC('t')
393393
case c =>
394-
// Other control chars → \u00XX
394+
// Other control chars → \\u00XX
395395
elemBuilder.appendUnsafeC('\\')
396396
elemBuilder.appendUnsafeC('u')
397397
elemBuilder.appendUnsafeC('0')
@@ -446,7 +446,7 @@ object BaseByteRenderer {
446446
a
447447
}
448448

449-
/** Hex digit lookup for \uXXXX escape sequences. */
449+
/** Hex digit lookup for \\uXXXX escape sequences. */
450450
private[sjsonnet] val HEX_CHARS: Array[Char] =
451451
Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f')
452452

sjsonnet/src/sjsonnet/Renderer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ final case class MaterializeJsonRenderer(
418418
case '\r' => elemBuilder.appendUnsafe('\\'); elemBuilder.appendUnsafe('r')
419419
case '\t' => elemBuilder.appendUnsafe('\\'); elemBuilder.appendUnsafe('t')
420420
case _ =>
421-
// Control chars → \u00XX
421+
// Control chars → \\u00XX
422422
elemBuilder.appendUnsafe('\\')
423423
elemBuilder.appendUnsafe('u')
424424
elemBuilder.appendUnsafe('0')

0 commit comments

Comments
 (0)