diff --git a/sjsonnet/src/sjsonnet/Parser.scala b/sjsonnet/src/sjsonnet/Parser.scala index 8318e831..1b74facc 100644 --- a/sjsonnet/src/sjsonnet/Parser.scala +++ b/sjsonnet/src/sjsonnet/Parser.scala @@ -311,10 +311,10 @@ class Parser( SingleChar./.flatMapX { case '\"' => literalDoubleString case '\'' => literalSingleString - case _ => Fail + case _ => Fail.opaque("verbatim string literal (@\" or @')") } case '|' => maybeChompedTripleBarString - case _ => Fail + case _ => Fail.opaque("string literal") } ).map(_.mkString) @@ -693,7 +693,7 @@ class Parser( } case '{' => Pass ~ (objinside(i, currentDepth + 1) ~ "}").map(x => Expr.ObjExtend(i, _: Expr, x)) - case _ => Fail + case _ => Fail.opaque("expression") } } ) @@ -792,7 +792,7 @@ class Parser( SingleChar./.flatMapX { case '\"' => literalDoubleString.map(constructString(pos, _)) case '\'' => literalSingleString.map(constructString(pos, _)) - case _ => Fail + case _ => Fail.opaque("verbatim string literal (@\" or @')") } case '|' => maybeChompedTripleBarString.map(constructString(pos, _)) case '$' => Pass(Expr.$(pos)) @@ -817,7 +817,7 @@ class Parser( case x => Pass(Expr.Id(pos, x)) } } - else Fail + else Fail.opaque("expression") } } } diff --git a/sjsonnet/test/resources/go_test_suite/extvar_static_error.jsonnet.golden b/sjsonnet/test/resources/go_test_suite/extvar_static_error.jsonnet.golden index 4598fbde..3656f025 100644 --- a/sjsonnet/test/resources/go_test_suite/extvar_static_error.jsonnet.golden +++ b/sjsonnet/test/resources/go_test_suite/extvar_static_error.jsonnet.golden @@ -1,3 +1,3 @@ -sjsonnet.ParseError: Expected fail:1:2, found "" +sjsonnet.ParseError: Expected expression:1:2, found "" at [std.extVar].( offset:1) at [].(extvar_static_error.jsonnet:1:11) diff --git a/sjsonnet/test/resources/new_test_suite/error.format_c_empty_string.jsonnet b/sjsonnet/test/resources/new_test_suite/error.format_c_empty_string.jsonnet new file mode 100644 index 00000000..2866fa67 --- /dev/null +++ b/sjsonnet/test/resources/new_test_suite/error.format_c_empty_string.jsonnet @@ -0,0 +1,5 @@ +// %c format conversion must reject empty strings, matching C++/go-jsonnet behavior. +// C++ jsonnet: RUNTIME ERROR: %c expected 1-sized string got: 0 +// go-jsonnet: RUNTIME ERROR: %c expected 1-sized string got: 0 +// jrsonnet: runtime error: %c expected 1 char string, got 0 +"%c" % "" diff --git a/sjsonnet/test/resources/new_test_suite/error.format_c_empty_string.jsonnet.golden b/sjsonnet/test/resources/new_test_suite/error.format_c_empty_string.jsonnet.golden new file mode 100644 index 00000000..e16c76df --- /dev/null +++ b/sjsonnet/test/resources/new_test_suite/error.format_c_empty_string.jsonnet.golden @@ -0,0 +1 @@ +"" diff --git a/sjsonnet/test/resources/new_test_suite/error.format_c_multichar.jsonnet b/sjsonnet/test/resources/new_test_suite/error.format_c_multichar.jsonnet new file mode 100644 index 00000000..30dcbc3e --- /dev/null +++ b/sjsonnet/test/resources/new_test_suite/error.format_c_multichar.jsonnet @@ -0,0 +1,5 @@ +// %c format conversion must reject multi-character strings, matching C++/go-jsonnet behavior. +// C++ jsonnet: RUNTIME ERROR: %c expected 1-sized string got: 2 +// go-jsonnet: RUNTIME ERROR: %c expected 1-sized string got: 2 +// jrsonnet: runtime error: %c expected 1 char string, got 2 +"%c" % "AB" diff --git a/sjsonnet/test/resources/new_test_suite/error.format_c_multichar.jsonnet.golden b/sjsonnet/test/resources/new_test_suite/error.format_c_multichar.jsonnet.golden new file mode 100644 index 00000000..80c2c97b --- /dev/null +++ b/sjsonnet/test/resources/new_test_suite/error.format_c_multichar.jsonnet.golden @@ -0,0 +1 @@ +"AB" diff --git a/sjsonnet/test/resources/test_suite/error.parse.static_error_bad_number.jsonnet.golden b/sjsonnet/test/resources/test_suite/error.parse.static_error_bad_number.jsonnet.golden index 3804b056..29cded2d 100644 --- a/sjsonnet/test/resources/test_suite/error.parse.static_error_bad_number.jsonnet.golden +++ b/sjsonnet/test/resources/test_suite/error.parse.static_error_bad_number.jsonnet.golden @@ -1,3 +1,3 @@ -sjsonnet.ParseError: Expected fail:17:2, found "5\n" +sjsonnet.ParseError: Expected expression:17:2, found "5\n" at [].(error.parse.static_error_bad_number.jsonnet:17:2)