Skip to content

Commit 86f33c4

Browse files
committed
Fixed bug with indexing in CEL
Fixed a bug with the index operator for arrays in CEL Added a unit test for the virtual machine to prevent regressions. Removed unnecessary includes Kicked version for release
1 parent 256fddb commit 86f33c4

File tree

7 files changed

+42
-9
lines changed

7 files changed

+42
-9
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ if(BUILD_DOCS)
103103
# Set variables for Doxyfile template
104104
set(PROJECT_NAME "Adobe Source Libraries")
105105
set(PROJECT_BRIEF "A collection of C++ libraries.")
106-
set(PROJECT_VERSION "2.0.0")
106+
set(PROJECT_VERSION "2.0.2")
107107
set(INPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
108108
set(OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")
109109
set(AWESOME_CSS_PATH "${AWESOME_CSS_DIR}")

CMakePresets.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"displayName": "debug-windows",
77
"description": "Sets Ninja generator, build and install directory",
88
"generator": "Ninja",
9-
"binaryDir": "${sourceParentDir}/build/asl-${presetName}",
9+
"binaryDir": "${sourceDir}/build/asl-${presetName}",
1010
"cacheVariables": {
1111
"CMAKE_BUILD_TYPE": "DEBUG",
1212
"CMAKE_CXX_STANDARD": "20",
@@ -29,7 +29,7 @@
2929
"displayName": "windows-debug-C++17",
3030
"description": "Sets Ninja generator, build and install directory",
3131
"generator": "Ninja",
32-
"binaryDir": "${sourceParentDir}/build/asl-${presetName}",
32+
"binaryDir": "${sourceDir}/build/asl-${presetName}",
3333
"cacheVariables": {
3434
"CMAKE_BUILD_TYPE": "DEBUG",
3535
"CMAKE_CXX_STANDARD": "17",
@@ -71,7 +71,7 @@
7171
"displayName": "macos-debug-C++17",
7272
"description": "Sets Ninja generator, build and install directory",
7373
"generator": "Ninja",
74-
"binaryDir": "${sourceParentDir}/build/asl-${presetName}",
74+
"binaryDir": "${sourceDir}/build/asl-${presetName}",
7575
"cacheVariables": {
7676
"CMAKE_BUILD_TYPE": "DEBUG",
7777
"CMAKE_CXX_STANDARD": "17"

adobe/virtual_machine.hpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,9 @@
1010

1111
#include <adobe/config.hpp>
1212

13-
#include <bitset>
1413
#include <functional>
15-
#include <optional>
1614
#include <stdexcept>
1715
#include <string>
18-
#include <vector>
19-
2016

2117
#define BOOST_FUNCTION_NO_DEPRECATED
2218
#include <boost/operators.hpp>

source/virtual_machine.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,7 @@ void virtual_machine_t::implementation_t::index_operator() {
643643
result = get_value(cast<dictionary_t>(operand1), index);
644644
}
645645
} else {
646-
auto index{cast<size_t>(operand2)};
646+
auto index{static_cast<size_t>(cast<double>(operand2))};
647647

648648
if (numeric_index_lookup_m) {
649649
result = numeric_index_lookup_m(operand1, index);

test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,5 +89,6 @@ add_subdirectory(sha)
8989
add_subdirectory(stable_partition_selection)
9090
add_subdirectory(to_string)
9191
add_subdirectory(unicode)
92+
add_subdirectory(virtual_machine)
9293
add_subdirectory(xml_parser)
9394
add_subdirectory(zuidgen)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
asl_test(BOOST NAME virtual_machine SOURCES virtual_machine_test.cpp)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
Copyright 2013 Adobe
3+
Distributed under the Boost Software License, Version 1.0.
4+
(See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5+
*/
6+
/**************************************************************************************************/
7+
8+
#include <adobe/virtual_machine.hpp>
9+
10+
#include <adobe/array.hpp>
11+
#include <adobe/expression_parser.hpp>
12+
13+
#include <sstream>
14+
#include <string>
15+
16+
#define BOOST_TEST_MAIN
17+
#include <boost/test/unit_test.hpp>
18+
19+
using namespace std;
20+
using namespace adobe;
21+
22+
BOOST_AUTO_TEST_CASE(index_operator) {
23+
const line_position_t expression_position{__FILE__, __LINE__ + 1};
24+
constexpr const char* expression = R"(
25+
["a", "correct", "c"][1]
26+
)";
27+
istringstream stream{expression};
28+
expression_parser exp(stream, expression_position);
29+
array_t instructions;
30+
exp.require_expression(instructions);
31+
32+
virtual_machine_t vm;
33+
vm.evaluate(instructions);
34+
BOOST_TEST(cast<string>(vm.back()) == "correct");
35+
}

0 commit comments

Comments
 (0)