Collect information from calls to constructors.

Also add test for collecting information from constructor bodies, just to make it clear we are covering them.

PiperOrigin-RevId: 578915862
Change-Id: Ic4fd38e5f701e56ff4831991def3ef52cb322535
diff --git a/nullability/inference/collect_evidence_test.cc b/nullability/inference/collect_evidence_test.cc
index 58ed6ca..87567b3 100644
--- a/nullability/inference/collect_evidence_test.cc
+++ b/nullability/inference/collect_evidence_test.cc
@@ -452,6 +452,22 @@
                                 functionNamed("operator()"))));
 }
 
+TEST(CollectEvidenceFromImplementationTest, ConstructorCall) {
+  static constexpr llvm::StringRef Src = R"cc(
+    class S {
+     public:
+      S(Nonnull<int*> a);
+    };
+    void target(int* p) { S s(p); }
+  )cc";
+  EXPECT_THAT(
+      collectEvidenceFromTargetFunction(Src),
+      UnorderedElementsAre(evidence(paramSlot(0), Evidence::BOUND_TO_NONNULL,
+                                    functionNamed("target")),
+                           evidence(paramSlot(0), Evidence::UNKNOWN_ARGUMENT,
+                                    functionNamed("S"))));
+}
+
 TEST(CollectEvidenceFromImplementationTest, PassedToNonnull) {
   static constexpr llvm::StringRef Src = R"cc(
     void callee(Nonnull<int*> i);
@@ -709,6 +725,7 @@
     auto Lambda = []() {};  // Not analyzed yet.
 
     struct S {
+      S() {}
       void member();
     };
     void S::member() {}
@@ -716,11 +733,11 @@
   auto Sites = EvidenceSites::discover(AST.context());
   EXPECT_THAT(Sites.Declarations,
               ElementsAre(declNamed("foo"), declNamed("bar"), declNamed("bar"),
-                          declNamed("baz"), declNamed("S::member"),
+                          declNamed("baz"), declNamed("S::S"),
+                          declNamed("S::member"), declNamed("S::member")));
+  EXPECT_THAT(Sites.Implementations,
+              ElementsAre(declNamed("bar"), declNamed("baz"), declNamed("S::S"),
                           declNamed("S::member")));
-  EXPECT_THAT(
-      Sites.Implementations,
-      ElementsAre(declNamed("bar"), declNamed("baz"), declNamed("S::member")));
 }
 
 TEST(EvidenceSitesTest, Variables) {