Produce error on duplicate constructors in traits
commit5031053ffd9844d857a81b6e29a73c3bd3676f94
authorHenri Verroken <hverr@fb.com>
Fri, 18 Oct 2019 17:03:33 +0000 (18 10:03 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Fri, 18 Oct 2019 17:05:53 +0000 (18 10:05 -0700)
tree91d27dd6c45f9940c08670a64ad7654dac51dd7f
parentd670ccfef72f7b606cc688eae846efb9fe231665
Produce error on duplicate constructors in traits

Summary:
Produce an error when multiple traits implement constructors.

Produces an error for the following code example:

```
trait D  {
  public function __construct(): void {}
}

trait E  {
  public function __construct(): void {}
}

class C {
  use D;
  use E;
}
```

Reviewed By: Wilfred

Differential Revision: D17830201

fbshipit-source-id: bffa103d492a29999035663bd0de2584330e52a1
hphp/hack/src/typing/typing_extends.ml
hphp/hack/test/typecheck/ambiguous_constructor.php [new file with mode: 0644]
hphp/hack/test/typecheck/ambiguous_constructor.php.exp [new file with mode: 0644]
hphp/hack/test/typecheck/ambiguous_declaration_concrete.php.exp
hphp/hack/test/typecheck/ambiguous_distant_constructor.php [new file with mode: 0644]
hphp/hack/test/typecheck/ambiguous_distant_constructor.php.exp [new file with mode: 0644]
hphp/hack/test/typecheck/const_attribute/static/multiple_concrete_defs_from_traits_bad.php.exp
hphp/hack/test/typecheck/const_attribute/static/multiple_concrete_defs_from_traits_good.php.exp
hphp/hack/test/typecheck/method_redeclaration_renamed_conflict.php.exp