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; + } }