diff --git a/infer/src/checkers/LithoDomain.ml b/infer/src/checkers/LithoDomain.ml index f6301b5f4..b14f4c50a 100644 --- a/infer/src/checkers/LithoDomain.ml +++ b/infer/src/checkers/LithoDomain.ml @@ -216,7 +216,7 @@ module MethodCalled = struct | Some method_calls_no_build_called, Some method_calls_build_called -> MethodCalls.join method_calls_no_build_called method_calls_build_called in - remove k_no_build_called x |> add k_build_called method_calls + add k_build_called method_calls x let build_method_called created_locations x = diff --git a/infer/tests/codetoanalyze/java/litho-required-props/RequiredProps.java b/infer/tests/codetoanalyze/java/litho-required-props/RequiredProps.java index a3d448d1f..2e19cce9c 100644 --- a/infer/tests/codetoanalyze/java/litho-required-props/RequiredProps.java +++ b/infer/tests/codetoanalyze/java/litho-required-props/RequiredProps.java @@ -488,4 +488,22 @@ public class RequiredProps { MyComponent.Builder builder2 = mMyComponent.create().prop1(new Object()); setProp3AndBuild(builder1); } + + public MyComponent.Builder createWrapper() { + return mMyComponent.create(); + } + + public void twoBuildersOk() { + MyComponent.Builder builder1 = createWrapper(); + MyComponent.Builder builder2 = createWrapper().prop1(new Object()); + builder1.prop1(new Object()).prop3(new Object()).build(); + builder2.prop3(new Object()).build(); + } + + public void twoBuildersBad_FN() { + MyComponent.Builder builder1 = createWrapper(); + MyComponent.Builder builder2 = createWrapper(); + builder1.prop1(new Object()).prop3(new Object()).build(); + builder2.prop3(new Object()).build(); + } }