diff --git a/ets2panda/checker/ETSAnalyzer.cpp b/ets2panda/checker/ETSAnalyzer.cpp index 3aa4109c2eb8eb2d86c89482000a32026599fdd0..c7238ef0c51a3c221a77d1458fce52afd5b7c395 100644 --- a/ets2panda/checker/ETSAnalyzer.cpp +++ b/ets2panda/checker/ETSAnalyzer.cpp @@ -2670,6 +2670,9 @@ static bool CheckIfLiteralValueIsAppropriate(ETSChecker *checker, Type *type, ir if (relation->IsIdenticalTo(type, checker->GlobalIntBuiltinType())) { return val >= std::numeric_limits::min() && val <= std::numeric_limits::max(); } + } else if (relation->IsIdenticalTo(type, checker->GlobalCharBuiltinType())) { + auto val = number.GetValueAndCastTo(); + return val >= std::numeric_limits::min() && val <= std::numeric_limits::max(); } else if (number.IsDouble()) { return relation->IsIdenticalTo(checker->GlobalDoubleBuiltinType(), type); } diff --git a/ets2panda/test/unit/annotations/CMakeLists.txt b/ets2panda/test/unit/annotations/CMakeLists.txt index 4391aaf5e941a2b6ca076edae6625140be847ec0..919ec89daadcf7313ae507dbcd7aba63c02ee18d 100644 --- a/ets2panda/test/unit/annotations/CMakeLists.txt +++ b/ets2panda/test/unit/annotations/CMakeLists.txt @@ -11,10 +11,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -# expected values changed after primitives refactoring -#ets2panda_add_gtest(es2panda_annotations_emit_standard_test -# CPP_SOURCES standard_test.cpp -#) +ets2panda_add_gtest(es2panda_annotations_emit_standard_test + CPP_SOURCES standard_test.cpp +) ets2panda_add_gtest(es2panda_mutiple_annotations_for_class CPP_SOURCES mutiple_annotations_for_class.cpp ) diff --git a/ets2panda/test/unit/annotations/standard_test.cpp b/ets2panda/test/unit/annotations/standard_test.cpp index 8cf5681999fc6dcc0241b0f8ea511e150ccb6546..fde486b3b678fc4af093a84f3856c6d7c26f7060 100644 --- a/ets2panda/test/unit/annotations/standard_test.cpp +++ b/ets2panda/test/unit/annotations/standard_test.cpp @@ -71,11 +71,11 @@ public: {"authorAge", "35.000000"}, {"testBool", "0"}, {"favorColor", "1"}, - {"color", "MyClass$ClassAuthor$color$8"}, - {"reviewers", "MyClass$ClassAuthor$reviewers$9"}, - {"reviewersAge", "MyClass$ClassAuthor$reviewersAge$10"}, - {"testBools", "MyClass$ClassAuthor$testBools$11"}, - {"mutiArray", "MyClass$ClassAuthor$mutiArray$15"}, + {"color", "MyClass$ClassAuthor$color$12"}, + {"reviewers", "MyClass$ClassAuthor$reviewers$14"}, + {"reviewersAge", "MyClass$ClassAuthor$reviewersAge$15"}, + {"testBools", "MyClass$ClassAuthor$testBools$13"}, + {"mutiArray", "MyClass$ClassAuthor$mutiArray$11"}, }}, }; AnnotationEmitTest::CheckRecordAnnotations(program, recordName, expectedClassAnnotations); @@ -87,13 +87,13 @@ public: const AnnotationMap expectedFuncAnnotations = { {"ClassAuthor", { - {"mutiArray", "MyClass.foo:void;$ClassAuthor$mutiArray$23"}, - {"color", "MyClass.foo:void;$ClassAuthor$color$16"}, - {"testBools", "MyClass.foo:void;$ClassAuthor$testBools$19"}, - {"reviewers", "MyClass.foo:void;$ClassAuthor$reviewers$17"}, + {"mutiArray", "MyClass.foo:void;$ClassAuthor$mutiArray$19"}, + {"color", "MyClass.foo:void;$ClassAuthor$color$20"}, + {"testBools", "MyClass.foo:void;$ClassAuthor$testBools$21"}, + {"reviewers", "MyClass.foo:void;$ClassAuthor$reviewers$22"}, {"favorColor", "1"}, {"testBool", "0"}, - {"reviewersAge", "MyClass.foo:void;$ClassAuthor$reviewersAge$18"}, + {"reviewersAge", "MyClass.foo:void;$ClassAuthor$reviewersAge$23"}, {"authorAge", "35.000000"}, {"authorName", "Jim"}, }}, @@ -116,35 +116,35 @@ public: std::vector {std::string("ETSGLOBAL$ClassAuthor$mutiArray$4"), std::string("ETSGLOBAL$ClassAuthor$mutiArray$5"), std::string("ETSGLOBAL$ClassAuthor$mutiArray$6")}}, - {"MyClass$ClassAuthor$color$8", std::vector {COLOR_OPTION_0, COLOR_OPTION_1}}, - {"MyClass$ClassAuthor$reviewers$9", + {"MyClass$ClassAuthor$color$12", std::vector {COLOR_OPTION_0, COLOR_OPTION_1}}, + {"MyClass$ClassAuthor$reviewers$14", std::vector {std::string("Bob"), std::string("Jim"), std::string("Tom")}}, - {"MyClass$ClassAuthor$reviewersAge$10", std::vector {AGE_18, AGE_21, AGE_32}}, - {"MyClass$ClassAuthor$testBools$11", std::vector {false, true, false}}, - {"MyClass$ClassAuthor$mutiArray$12", std::vector {VALUE_1, VALUE_2, VALUE_3}}, - {"MyClass$ClassAuthor$mutiArray$13", std::vector {VALUE_4, VALUE_5, VALUE_6}}, - {"MyClass$ClassAuthor$mutiArray$14", std::vector {VALUE_7, VALUE_8, VALUE_9}}, - {"MyClass$ClassAuthor$mutiArray$15", - std::vector {std::string("MyClass$ClassAuthor$mutiArray$12"), - std::string("MyClass$ClassAuthor$mutiArray$13"), - std::string("MyClass$ClassAuthor$mutiArray$14")}}, - {"MyClass.foo:void;$ClassAuthor$color$16", + {"MyClass$ClassAuthor$reviewersAge$15", std::vector {AGE_18, AGE_21, AGE_32}}, + {"MyClass$ClassAuthor$testBools$13", std::vector {false, true, false}}, + {"MyClass$ClassAuthor$mutiArray$8", std::vector {VALUE_1, VALUE_2, VALUE_3}}, + {"MyClass$ClassAuthor$mutiArray$9", std::vector {VALUE_4, VALUE_5, VALUE_6}}, + {"MyClass$ClassAuthor$mutiArray$10", std::vector {VALUE_7, VALUE_8, VALUE_9}}, + {"MyClass$ClassAuthor$mutiArray$11", + std::vector {std::string("MyClass$ClassAuthor$mutiArray$8"), + std::string("MyClass$ClassAuthor$mutiArray$9"), + std::string("MyClass$ClassAuthor$mutiArray$10")}}, + {"MyClass.foo:void;$ClassAuthor$color$20", std::vector {COLOR_OPTION_0, COLOR_OPTION_1}}, - {"MyClass.foo:void;$ClassAuthor$reviewers$17", + {"MyClass.foo:void;$ClassAuthor$reviewers$22", std::vector {std::string("Bob"), std::string("Jim"), std::string("Tom")}}, - {"MyClass.foo:void;$ClassAuthor$reviewersAge$18", + {"MyClass.foo:void;$ClassAuthor$reviewersAge$23", std::vector {AGE_18, AGE_21, AGE_32}}, - {"MyClass.foo:void;$ClassAuthor$testBools$19", std::vector {false, true, false}}, - {"MyClass.foo:void;$ClassAuthor$mutiArray$20", + {"MyClass.foo:void;$ClassAuthor$testBools$21", std::vector {false, true, false}}, + {"MyClass.foo:void;$ClassAuthor$mutiArray$16", std::vector {VALUE_1, VALUE_2, VALUE_3}}, - {"MyClass.foo:void;$ClassAuthor$mutiArray$21", + {"MyClass.foo:void;$ClassAuthor$mutiArray$17", std::vector {VALUE_4, VALUE_5, VALUE_6}}, - {"MyClass.foo:void;$ClassAuthor$mutiArray$22", + {"MyClass.foo:void;$ClassAuthor$mutiArray$18", std::vector {VALUE_7, VALUE_8, VALUE_9}}, - {"MyClass.foo:void;$ClassAuthor$mutiArray$23", - std::vector {std::string("MyClass.foo:void;$ClassAuthor$mutiArray$20"), - std::string("MyClass.foo:void;$ClassAuthor$mutiArray$21"), - std::string("MyClass.foo:void;$ClassAuthor$mutiArray$22")}}, + {"MyClass.foo:void;$ClassAuthor$mutiArray$19", + std::vector {std::string("MyClass.foo:void;$ClassAuthor$mutiArray$16"), + std::string("MyClass.foo:void;$ClassAuthor$mutiArray$17"), + std::string("MyClass.foo:void;$ClassAuthor$mutiArray$18")}}, }; AnnotationEmitTest::CheckLiteralArrayTable(program, expectedLiteralArrayTable);