diff --git a/include/chaiscript/language/chaiscript_common.hpp b/include/chaiscript/language/chaiscript_common.hpp index 1b16b31..abcfe5b 100644 --- a/include/chaiscript/language/chaiscript_common.hpp +++ b/include/chaiscript/language/chaiscript_common.hpp @@ -77,7 +77,7 @@ namespace chaiscript "Array_Call", "Dot_Access", "Lambda", "Block", "Scopeless_Block", "Def", "While", "If", "For", "Ranged_For", "Inline_Array", "Inline_Map", "Return", "File", "Prefix", "Break", "Continue", "Map_Pair", "Value_Range", "Inline_Range", "Try", "Catch", "Finally", "Method", "Attr_Decl", - "Logical_And", "Logical_Or", "Reference", "Switch", "Case", "Default", "Ternary Condition", "Noop", "Class", "Binary", "Arg", "Global_Decl", "Constant", "Compiled"}; + "Logical_And", "Logical_Or", "Reference", "Switch", "Case", "Default", "Noop", "Class", "Binary", "Arg", "Global_Decl", "Constant", "Compiled"}; return ast_node_types[static_cast(ast_node_type)]; } diff --git a/unittests/integer_literal_test.cpp b/unittests/integer_literal_test.cpp index 5cc91f2..9403a1d 100644 --- a/unittests/integer_literal_test.cpp +++ b/unittests/integer_literal_test.cpp @@ -175,6 +175,7 @@ int main() && TEST_LITERAL(-177777777777777777) && TEST_LITERAL(-1777777777777777777) + // Test 8/16/24/32 bit boundaries for various types && TEST_LITERAL(255) && TEST_LITERAL(65535) @@ -185,6 +186,58 @@ int main() && TEST_LITERAL(-65535) && TEST_LITERAL(-16777215) && TEST_LITERAL(-4294967295) + + && TEST_LITERAL(255u) + && TEST_LITERAL(65535u) + && TEST_LITERAL(16777215u) + && TEST_LITERAL(4294967295u) + + && TEST_LITERAL(-255u) + && TEST_LITERAL(-65535u) + && TEST_LITERAL(-16777215u) + && TEST_LITERAL(-4294967295u) + + && TEST_LITERAL(255l) + && TEST_LITERAL(65535l) + && TEST_LITERAL(16777215l) + && TEST_LITERAL(4294967295l) + + && TEST_LITERAL(-255l) + && TEST_LITERAL(-65535l) + && TEST_LITERAL(-16777215l) + && TEST_LITERAL(-4294967295l) + + && TEST_LITERAL(255ul) + && TEST_LITERAL(65535ul) + && TEST_LITERAL(16777215ul) + && TEST_LITERAL(4294967295ul) + + && TEST_LITERAL(-255ul) + && TEST_LITERAL(-65535ul) + && TEST_LITERAL(-16777215ul) + && TEST_LITERAL(-4294967295ul) + + && TEST_LITERAL(255ull) + && TEST_LITERAL(65535ull) + && TEST_LITERAL(16777215ull) + && TEST_LITERAL(4294967295ull) + + && TEST_LITERAL(-255ull) + && TEST_LITERAL(-65535ull) + && TEST_LITERAL(-16777215ull) + && TEST_LITERAL(-4294967295ull) + + && TEST_LITERAL(255ll) + && TEST_LITERAL(65535ll) + && TEST_LITERAL(16777215ll) + && TEST_LITERAL(4294967295ll) + + && TEST_LITERAL(-255ll) + && TEST_LITERAL(-65535ll) + && TEST_LITERAL(-16777215ll) + && TEST_LITERAL(-4294967295ll) + + ) { return EXIT_SUCCESS; diff --git a/unittests/negative_numbers.chai b/unittests/negative_numbers.chai index 5fdb1db..80a617b 100644 --- a/unittests/negative_numbers.chai +++ b/unittests/negative_numbers.chai @@ -4,5 +4,9 @@ def numFunc(x) } -assert_true(-5.numFunc() == 5); +// Note that unary prefix `-` has lower precedence than `.` +// this is why these values are correct, even if counterintuitive + +assert_true(-5.numFunc() == -15); +assert_true((-5).numFunc() == 5);