From 032fb59a1c920305ea7cccccb4a1ced35b0cceea Mon Sep 17 00:00:00 2001 From: "Wei Zhang (Devinfra)" Date: Mon, 4 Dec 2023 10:53:11 -0800 Subject: [PATCH] Add test for @StringDef null assignment Summary: A test for the null assignment fix in D51512837. Reviewed By: itang00 Differential Revision: D51734422 fbshipit-source-id: b7e9264a5b164c4a9f0f9f78c96106c1cd11aac5 --- test/integ/TypedefAnnoCheckerTest.cpp | 27 +++++++++++++++++++++++++- test/integ/TypedefAnnoCheckerTest.java | 4 ++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/test/integ/TypedefAnnoCheckerTest.cpp b/test/integ/TypedefAnnoCheckerTest.cpp index bb687e1eda1..a1dd8b30c8a 100644 --- a/test/integ/TypedefAnnoCheckerTest.cpp +++ b/test/integ/TypedefAnnoCheckerTest.cpp @@ -829,7 +829,6 @@ TEST_F(TypedefAnnoCheckerTest, testSynthAccessor) { EXPECT_TRUE(accessor != nullptr); IRCode* code = accessor->get_code(); code->build_cfg(); - // auto& cfg = code->cfg(); StrDefConstants strdef_constants; IntDefConstants intdef_constants; @@ -887,3 +886,29 @@ TEST_F(TypedefAnnoCheckerTest, testSynthAccessor) { Error invoking Lcom/facebook/redextest/TypedefAnnoCheckerKtTest;.access$takesStrConst:(Lcom/facebook/redextest/TypedefAnnoCheckerKtTest;Ljava/lang/String;)Ljava/lang/String;\n\ Incorrect parameter's index: 1\n\n"); } + +TEST_F(TypedefAnnoCheckerTest, testAssignNullToString) { + auto scope = build_class_scope(stores); + auto method = + DexMethod::get_method( + "Lcom/facebook/redextest/" + "TypedefAnnoCheckerTest;.testAssignNullToString:()Ljava/lang/String;") + ->as_def(); + + IRCode* code = method->get_code(); + code->build_cfg(); + + StrDefConstants strdef_constants; + IntDefConstants intdef_constants; + TypedefAnnoCheckerPass pass = TypedefAnnoCheckerPass(get_config()); + for (auto cls : scope) { + gather_typedef_values(pass, cls, strdef_constants, intdef_constants); + } + + TypedefAnnoChecker checker = + TypedefAnnoChecker(strdef_constants, intdef_constants, get_config()); + checker.run(method); + code->clear_cfg(); + + EXPECT_TRUE(checker.complete()); +} diff --git a/test/integ/TypedefAnnoCheckerTest.java b/test/integ/TypedefAnnoCheckerTest.java index 28ecf6257f7..e5d351d2688 100644 --- a/test/integ/TypedefAnnoCheckerTest.java +++ b/test/integ/TypedefAnnoCheckerTest.java @@ -181,4 +181,8 @@ void testStringField(@TestStringDef String val) { int res = flag ? TestIntDef.ZERO : TestIntDef.ONE; return res; } + + static @TestStringDef String testAssignNullToString() { + return null; + } }