2 +----------------------------------------------------------------------+
4 +----------------------------------------------------------------------+
5 | Copyright (c) 2010-present Facebook, Inc. (http://www.facebook.com) |
6 +----------------------------------------------------------------------+
7 | This source file is subject to version 3.01 of the PHP license, |
8 | that is bundled with this package in the file LICENSE, and is |
9 | available through the world-wide-web at the following url: |
10 | http://www.php.net/license/3_01.txt |
11 | If you did not receive a copy of the PHP license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@php.net so we can mail you a copy immediately. |
14 +----------------------------------------------------------------------+
17 #ifndef incl_HPHP_VM_REIFIEDGENERICSINFO_H_
18 #define incl_HPHP_VM_REIFIEDGENERICSINFO_H_
26 struct TypeParamInfo
{
27 // Is the type parameter reified
29 // Does the type parameter contain a soft annotation
31 // Does the type parameter contain a warn annotation
36 * Struct that contains information regarding reified generics of a function
39 struct ReifiedGenericsInfo
{
40 // Number of reified generics
41 size_t m_numReifiedGenerics
;
42 // Whether it has any soft generics
43 bool m_hasSoftGenerics
;
44 // Bitmap used to compare whether generics match in terms of parity in the
45 // fast path of CheckFunReifiedGenericMismatch
47 // Information regarding each type parameter
48 std::vector
<TypeParamInfo
> m_typeParamInfo
;
50 bool allGenericsSoft() const {
51 return !std::any_of(m_typeParamInfo
.begin(), m_typeParamInfo
.end(),