Fix minus sign color for negative numbers (#8621)

Don't show in changelog
This commit is contained in:
D8H
2026-05-20 16:35:51 +02:00
committed by GitHub
parent 59e5a7ae8e
commit 6dc9ed5d2c
10 changed files with 528 additions and 27 deletions
+63 -2
View File
@@ -166,7 +166,7 @@ TEST_CASE("ExpressionCodeGenerator", "[common][events]") {
}
}
SECTION("Valid unary operator generation") {
SECTION("Valid negative number generation") {
{
auto node = parser.ParseExpression("-12.45");
gd::ExpressionCodeGenerator expressionCodeGenerator("number",
@@ -175,10 +175,71 @@ TEST_CASE("ExpressionCodeGenerator", "[common][events]") {
context);
REQUIRE(node);
node->Visit(expressionCodeGenerator);
REQUIRE(expressionCodeGenerator.GetOutput() == "-12.45");
}
{
auto node = parser.ParseExpression("12.5 + -2. / (.3)");
gd::ExpressionCodeGenerator expressionCodeGenerator("number",
"",
codeGenerator,
context);
REQUIRE(node);
node->Visit(expressionCodeGenerator);
REQUIRE(expressionCodeGenerator.GetOutput() == "12.5 + -2. / (0.3)");
}
// `--3` is a unary minus on the negative literal -3 (no extra unary wrap
// around the inner -3 because it's a NumberNode, not a UnaryOperatorNode).
{
auto node = parser.ParseExpression("--3");
gd::ExpressionCodeGenerator expressionCodeGenerator("number",
"",
codeGenerator,
context);
REQUIRE(node);
node->Visit(expressionCodeGenerator);
REQUIRE(expressionCodeGenerator.GetOutput() == "-(-3)");
}
// `1 - -2` becomes JS-friendly `1 - -2` (the negative literal is emitted
// as-is on the right side of the binary subtract).
{
auto node = parser.ParseExpression("1 - -2");
gd::ExpressionCodeGenerator expressionCodeGenerator("number",
"",
codeGenerator,
context);
REQUIRE(node);
node->Visit(expressionCodeGenerator);
REQUIRE(expressionCodeGenerator.GetOutput() == "1 - -2");
}
// A negative literal as a function argument is emitted without an extra
// unary wrapper.
{
auto node = parser.ParseExpression(
"MyExtension::GetNumberWith3Params(-1, \"hello\", -2.5)");
gd::ExpressionCodeGenerator expressionCodeGenerator("number",
"",
codeGenerator,
context);
REQUIRE(node);
node->Visit(expressionCodeGenerator);
REQUIRE(expressionCodeGenerator.GetOutput() ==
"getNumberWith3Params(-1, \"hello\", -2.5)");
}
}
SECTION("Valid unary operator generation") {
{
auto node = parser.ParseExpression("- 12.45");
gd::ExpressionCodeGenerator expressionCodeGenerator("number",
"",
codeGenerator,
context);
REQUIRE(node);
node->Visit(expressionCodeGenerator);
REQUIRE(expressionCodeGenerator.GetOutput() == "-(12.45)");
}
{
auto node = parser.ParseExpression("12.5 + -2. / (.3)");
auto node = parser.ParseExpression("12.5 + - 2. / (.3)");
gd::ExpressionCodeGenerator expressionCodeGenerator("number",
"",
codeGenerator,