diff --git a/codegen/inferred_relationships.hack b/codegen/inferred_relationships.hack index 1be8b7c3..db86930c 100644 --- a/codegen/inferred_relationships.hack +++ b/codegen/inferred_relationships.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<0cb6442b34479c8ca9d81ac0cc1ec48a>> + * @generated SignedSource<> */ namespace Facebook\HHAST\__Private; @@ -3490,6 +3490,7 @@ const dict> INFERRED_RELATIONSHIPS = dict[ 'list|list_item>', 'list|list_item>', 'list|list_item>', + 'list|list_item>', 'list>', 'list>', 'list>', diff --git a/codegen/syntax/AliasDeclaration.hack b/codegen/syntax/AliasDeclaration.hack index e1e34ab4..6f39e7a3 100644 --- a/codegen/syntax/AliasDeclaration.hack +++ b/codegen/syntax/AliasDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<9bc6058071f1c761171f262079d5a9ed>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -154,16 +154,19 @@ final class AliasDeclaration extends Node implements IHasAttributeSpec { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute_spec, - /* HH_IGNORE_ERROR[4110] */ $modifiers, - /* HH_IGNORE_ERROR[4110] */ $module_kw_opt, - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $generic_parameter, - /* HH_IGNORE_ERROR[4110] */ $constraint, - /* HH_IGNORE_ERROR[4110] */ $equal, - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $attribute_spec as ?OldAttributeSpecification, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $module_kw_opt as ?ModuleToken, + $keyword as Token, + $name as NameToken, + $generic_parameter as ?TypeParameters, + $constraint as ?TypeConstraint, + $equal as EqualToken, + $type as ITypeSpecifier, + $semicolon as SemicolonToken, $source_ref, ); } @@ -227,7 +230,10 @@ final class AliasDeclaration extends Node implements IHasAttributeSpec { } return new static( $attribute_spec as ?OldAttributeSpecification, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $modifiers, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $module_kw_opt as ?ModuleToken, $keyword as Token, $name as NameToken, diff --git a/codegen/syntax/AnonymousClass.hack b/codegen/syntax/AnonymousClass.hack index 08b10106..7b2d160a 100644 --- a/codegen/syntax/AnonymousClass.hack +++ b/codegen/syntax/AnonymousClass.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<5488c598e4c75388e89ada9be6df2018>> + * @generated SignedSource<<2317dd0b0aedd9cbe976c0906cba81b1>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -145,15 +145,15 @@ final class AnonymousClass extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $class_keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $argument_list, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - /* HH_IGNORE_ERROR[4110] */ $extends_keyword, - /* HH_IGNORE_ERROR[4110] */ $extends_list, - /* HH_IGNORE_ERROR[4110] */ $implements_keyword, - /* HH_IGNORE_ERROR[4110] */ $implements_list, - /* HH_IGNORE_ERROR[4110] */ $body, + $class_keyword, + $left_paren, + $argument_list, + $right_paren, + $extends_keyword, + $extends_list, + $implements_keyword, + $implements_list, + $body, $source_ref, ); } diff --git a/codegen/syntax/AnonymousFunction.hack b/codegen/syntax/AnonymousFunction.hack index 07d62cb5..bb41026f 100644 --- a/codegen/syntax/AnonymousFunction.hack +++ b/codegen/syntax/AnonymousFunction.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<4de5781bcaa7e6a93cf2b796ecbe43b8>> + * @generated SignedSource<<6e17f0c5860853dc26ded3c41eab38ae>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -179,18 +179,24 @@ final class AnonymousFunction 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute_spec, - /* HH_IGNORE_ERROR[4110] */ $async_keyword, - /* HH_IGNORE_ERROR[4110] */ $function_keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $parameters, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - /* HH_IGNORE_ERROR[4110] */ $ctx_list, - /* HH_IGNORE_ERROR[4110] */ $colon, - /* HH_IGNORE_ERROR[4110] */ $readonly_return, - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $use, - /* HH_IGNORE_ERROR[4110] */ $body, + $attribute_spec as ?OldAttributeSpecification, + $async_keyword as ?AsyncToken, + $function_keyword as FunctionToken, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $parameters as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as RightParenToken, + $ctx_list, + $colon as ?ColonToken, + $readonly_return as ?ReadonlyToken, + $type as ?ITypeSpecifier, + $use as ?AnonymousFunctionUseClause, + $body as CompoundStatement, $source_ref, ); } @@ -262,7 +268,13 @@ final class AnonymousFunction $async_keyword as ?AsyncToken, $function_keyword as FunctionToken, $left_paren as LeftParenToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $parameters, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $parameters as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as RightParenToken, $ctx_list as ?Node, $colon as ?ColonToken, diff --git a/codegen/syntax/AnonymousFunctionUseClause.hack b/codegen/syntax/AnonymousFunctionUseClause.hack index 2582b49f..154c8491 100644 --- a/codegen/syntax/AnonymousFunctionUseClause.hack +++ b/codegen/syntax/AnonymousFunctionUseClause.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<955f117d1a8d01f011b78bdd734b0795>> + * @generated SignedSource<<2e726f06a92097461d26c95b2ad04cc6>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,16 @@ final class AnonymousFunctionUseClause extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $variables, - /* HH_IGNORE_ERROR[4110] */ $right_paren, + $keyword as UseToken, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $variables as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as RightParenToken, $source_ref, ); } @@ -127,7 +133,13 @@ final class AnonymousFunctionUseClause extends Node { return new static( $keyword as UseToken, $left_paren as LeftParenToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $variables, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $variables as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as RightParenToken, ); } diff --git a/codegen/syntax/AsExpression.hack b/codegen/syntax/AsExpression.hack index b3c7210b..c7d29975 100644 --- a/codegen/syntax/AsExpression.hack +++ b/codegen/syntax/AsExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<543d941329cda45a434d2534a4c3d432>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,9 @@ final class AsExpression extends Node implements ILambdaBody, IExpression { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_operand, - /* HH_IGNORE_ERROR[4110] */ $operator, - /* HH_IGNORE_ERROR[4110] */ $right_operand, + $left_operand as IExpression, + $operator as AsToken, + $right_operand as ITypeSpecifier, $source_ref, ); } diff --git a/codegen/syntax/Attribute.hack b/codegen/syntax/Attribute.hack index ae17efa2..fdaa23e2 100644 --- a/codegen/syntax/Attribute.hack +++ b/codegen/syntax/Attribute.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<7d7292faf0ec632b2025374386c0a99f>> + * @generated SignedSource<<9bb2fa9544ee9459f94610f89d0157fb>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -59,11 +59,7 @@ final class Attribute extends Node { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $at, - /* HH_IGNORE_ERROR[4110] */ $attribute_name, - $source_ref, - ); + return new static($at, $attribute_name, $source_ref); } <<__Override>> diff --git a/codegen/syntax/AttributeSpecification.hack b/codegen/syntax/AttributeSpecification.hack index a2472084..b2d6d13d 100644 --- a/codegen/syntax/AttributeSpecification.hack +++ b/codegen/syntax/AttributeSpecification.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<8483f16a64a5e5d65cabc95c597cb11b>> + * @generated SignedSource<<1b80a525f6a531292ececabd673a3aed>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -48,7 +48,7 @@ final class AttributeSpecification extends Node { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static(/* HH_IGNORE_ERROR[4110] */ $attributes, $source_ref); + return new static($attributes, $source_ref); } <<__Override>> diff --git a/codegen/syntax/AttributizedSpecifier.hack b/codegen/syntax/AttributizedSpecifier.hack index b17982bd..61f3eba6 100644 --- a/codegen/syntax/AttributizedSpecifier.hack +++ b/codegen/syntax/AttributizedSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<0292b8b73ed163d95845503bd88c184a>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -61,8 +61,8 @@ final class AttributizedSpecifier extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute_spec, - /* HH_IGNORE_ERROR[4110] */ $type, + $attribute_spec as OldAttributeSpecification, + $type as ITypeSpecifier, $source_ref, ); } diff --git a/codegen/syntax/AwaitableCreationExpression.hack b/codegen/syntax/AwaitableCreationExpression.hack index 874d549e..9f355132 100644 --- a/codegen/syntax/AwaitableCreationExpression.hack +++ b/codegen/syntax/AwaitableCreationExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<67b875b609e405e368b8ab7a0037444c>> + * @generated SignedSource<<43b98712603c4b85612a22bb5e81ce11>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -75,9 +75,9 @@ abstract class AwaitableCreationExpressionGeneratedBase 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute_spec, - /* HH_IGNORE_ERROR[4110] */ $async, - /* HH_IGNORE_ERROR[4110] */ $compound_statement, + $attribute_spec as ?OldAttributeSpecification, + $async as AsyncToken, + $compound_statement as CompoundStatement, $source_ref, ); } diff --git a/codegen/syntax/BinaryExpression.hack b/codegen/syntax/BinaryExpression.hack index 1914efd0..88755171 100644 --- a/codegen/syntax/BinaryExpression.hack +++ b/codegen/syntax/BinaryExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<38bcc98afa24fc8c24ef4e98813ff68c>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -75,9 +75,9 @@ final class BinaryExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_operand, - /* HH_IGNORE_ERROR[4110] */ $operator, - /* HH_IGNORE_ERROR[4110] */ $right_operand, + $left_operand as IExpression, + $operator as Token, + $right_operand as IExpression, $source_ref, ); } diff --git a/codegen/syntax/BracedExpression.hack b/codegen/syntax/BracedExpression.hack index ec5071f1..62269e41 100644 --- a/codegen/syntax/BracedExpression.hack +++ b/codegen/syntax/BracedExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<684000a6d02626999e58f7d55369c6a6>> + * @generated SignedSource<<2a9c72dab274c67bea3c054d06b84e29>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,9 @@ final class BracedExpression extends Node implements ILambdaBody, IExpression { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $expression, - /* HH_IGNORE_ERROR[4110] */ $right_brace, + $left_brace as LeftBraceToken, + $expression as IExpression, + $right_brace as RightBraceToken, $source_ref, ); } diff --git a/codegen/syntax/BreakStatement.hack b/codegen/syntax/BreakStatement.hack index 788bf302..4a7d5bdf 100644 --- a/codegen/syntax/BreakStatement.hack +++ b/codegen/syntax/BreakStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<2c00ae47596381fae7c363ae6a5c3f9a>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -61,8 +61,8 @@ final class BreakStatement extends Node implements IStatement { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as BreakToken, + $semicolon as SemicolonToken, $source_ref, ); } diff --git a/codegen/syntax/CaseLabel.hack b/codegen/syntax/CaseLabel.hack index 2f1787cb..afe25893 100644 --- a/codegen/syntax/CaseLabel.hack +++ b/codegen/syntax/CaseLabel.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<4b31993b99a2ba9810f46d0ef63e67b7>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,9 @@ final class CaseLabel extends Node implements ISwitchLabel { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $expression, - /* HH_IGNORE_ERROR[4110] */ $colon, + $keyword as CaseToken, + $expression as IExpression, + $colon as ColonToken, $source_ref, ); } diff --git a/codegen/syntax/CastExpression.hack b/codegen/syntax/CastExpression.hack index d1ff41e0..5dcf1b89 100644 --- a/codegen/syntax/CastExpression.hack +++ b/codegen/syntax/CastExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,10 @@ final class CastExpression extends Node implements ILambdaBody, IExpression { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - /* HH_IGNORE_ERROR[4110] */ $operand, + $left_paren as LeftParenToken, + $type as Token, + $right_paren as RightParenToken, + $operand as IExpression, $source_ref, ); } diff --git a/codegen/syntax/CatchClause.hack b/codegen/syntax/CatchClause.hack index 4e33d8bc..6842c332 100644 --- a/codegen/syntax/CatchClause.hack +++ b/codegen/syntax/CatchClause.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<32c92319f025e33ecb8b330835f0d03b>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -109,12 +109,12 @@ final class CatchClause extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $variable, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - /* HH_IGNORE_ERROR[4110] */ $body, + $keyword as CatchToken, + $left_paren as LeftParenToken, + $type as SimpleTypeSpecifier, + $variable as VariableToken, + $right_paren as RightParenToken, + $body as CompoundStatement, $source_ref, ); } diff --git a/codegen/syntax/ClassishBody.hack b/codegen/syntax/ClassishBody.hack index 92ea3fe9..5203e6a4 100644 --- a/codegen/syntax/ClassishBody.hack +++ b/codegen/syntax/ClassishBody.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<0ef87b0510915c96527a592dcda3eb55>> + * @generated SignedSource<<7381609bda2299d214007e0181b13c0d>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,12 @@ final class ClassishBody extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $elements, - /* HH_IGNORE_ERROR[4110] */ $right_brace, + $left_brace as LeftBraceToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $elements as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_brace as RightBraceToken, $source_ref, ); } @@ -109,7 +112,10 @@ final class ClassishBody extends Node { } return new static( $left_brace as LeftBraceToken, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $elements, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $elements as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_brace as RightBraceToken, ); } diff --git a/codegen/syntax/ClassishDeclaration.hack b/codegen/syntax/ClassishDeclaration.hack index 5db579f4..9786b1d0 100644 --- a/codegen/syntax/ClassishDeclaration.hack +++ b/codegen/syntax/ClassishDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -182,18 +182,33 @@ final class ClassishDeclaration 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute, - /* HH_IGNORE_ERROR[4110] */ $modifiers, - /* HH_IGNORE_ERROR[4110] */ $xhp, - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $type_parameters, - /* HH_IGNORE_ERROR[4110] */ $extends_keyword, - /* HH_IGNORE_ERROR[4110] */ $extends_list, - /* HH_IGNORE_ERROR[4110] */ $implements_keyword, - /* HH_IGNORE_ERROR[4110] */ $implements_list, - /* HH_IGNORE_ERROR[4110] */ $where_clause, - /* HH_IGNORE_ERROR[4110] */ $body, + $attribute as ?OldAttributeSpecification, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $xhp, + $keyword as Token, + $name as Token, + $type_parameters as ?TypeParameters, + $extends_keyword as ?ExtendsToken, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $extends_list as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $implements_keyword as ?ImplementsToken, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $implements_list as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $where_clause, + $body as ClassishBody, $source_ref, ); } @@ -269,15 +284,30 @@ final class ClassishDeclaration } return new static( $attribute as ?OldAttributeSpecification, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $modifiers, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $xhp as ?Node, $keyword as Token, $name as Token, $type_parameters as ?TypeParameters, $extends_keyword as ?ExtendsToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $extends_list, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $extends_list as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $implements_keyword as ?ImplementsToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $implements_list, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $implements_list as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $where_clause as ?Node, $body as ClassishBody, ); diff --git a/codegen/syntax/ClassnameTypeSpecifier.hack b/codegen/syntax/ClassnameTypeSpecifier.hack index 8661c69d..c78c9cc2 100644 --- a/codegen/syntax/ClassnameTypeSpecifier.hack +++ b/codegen/syntax/ClassnameTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<940b4d1283c6d974b2cf6f65a60e33f5>> + * @generated SignedSource<<816cb6bbb8e37b3ee2bd9f365d5ae4d9>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -96,11 +96,11 @@ final class ClassnameTypeSpecifier extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_angle, - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $trailing_comma, - /* HH_IGNORE_ERROR[4110] */ $right_angle, + $keyword as ClassnameToken, + $left_angle as ?LessThanToken, + $type as ?ITypeSpecifier, + $trailing_comma, + $right_angle as ?GreaterThanToken, $source_ref, ); } diff --git a/codegen/syntax/ClosureParameterTypeSpecifier.hack b/codegen/syntax/ClosureParameterTypeSpecifier.hack index e39b2efd..f3edb4c0 100644 --- a/codegen/syntax/ClosureParameterTypeSpecifier.hack +++ b/codegen/syntax/ClosureParameterTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<55d72fb9278f435bc783fac6b2270095>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -75,9 +75,9 @@ final class ClosureParameterTypeSpecifier 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $call_convention, - /* HH_IGNORE_ERROR[4110] */ $readonly, - /* HH_IGNORE_ERROR[4110] */ $type, + $call_convention as ?InoutToken, + $readonly, + $type as ITypeSpecifier, $source_ref, ); } diff --git a/codegen/syntax/ClosureTypeSpecifier.hack b/codegen/syntax/ClosureTypeSpecifier.hack index b509b90a..194cff3e 100644 --- a/codegen/syntax/ClosureTypeSpecifier.hack +++ b/codegen/syntax/ClosureTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<9c84879ef1b8682f02bbf8aafc171109>> + * @generated SignedSource<<9862ac186f57d4ae7f63e0a12adf8dde>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -168,17 +168,23 @@ final class ClosureTypeSpecifier extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $outer_left_paren, - /* HH_IGNORE_ERROR[4110] */ $readonly_keyword, - /* HH_IGNORE_ERROR[4110] */ $function_keyword, - /* HH_IGNORE_ERROR[4110] */ $inner_left_paren, - /* HH_IGNORE_ERROR[4110] */ $parameter_list, - /* HH_IGNORE_ERROR[4110] */ $inner_right_paren, - /* HH_IGNORE_ERROR[4110] */ $contexts, - /* HH_IGNORE_ERROR[4110] */ $colon, - /* HH_IGNORE_ERROR[4110] */ $readonly_return, - /* HH_IGNORE_ERROR[4110] */ $return_type, - /* HH_IGNORE_ERROR[4110] */ $outer_right_paren, + $outer_left_paren as LeftParenToken, + $readonly_keyword as ?ReadonlyToken, + $function_keyword as FunctionToken, + $inner_left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $parameter_list as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $inner_right_paren as RightParenToken, + $contexts as ?Contexts, + $colon as ColonToken, + $readonly_return as ?ReadonlyToken, + $return_type as ITypeSpecifier, + $outer_right_paren as RightParenToken, $source_ref, ); } @@ -245,7 +251,13 @@ final class ClosureTypeSpecifier extends Node implements ITypeSpecifier { $readonly_keyword as ?ReadonlyToken, $function_keyword as FunctionToken, $inner_left_paren as LeftParenToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $parameter_list, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $parameter_list as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $inner_right_paren as RightParenToken, $contexts as ?Contexts, $colon as ColonToken, diff --git a/codegen/syntax/CollectionLiteralExpression.hack b/codegen/syntax/CollectionLiteralExpression.hack index 4890ec12..25ece936 100644 --- a/codegen/syntax/CollectionLiteralExpression.hack +++ b/codegen/syntax/CollectionLiteralExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<786dd603c6bb60cb6ee106de52240fbb>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -87,10 +87,13 @@ final class CollectionLiteralExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $initializers, - /* HH_IGNORE_ERROR[4110] */ $right_brace, + $name as ISimpleCreationSpecifier, + $left_brace as LeftBraceToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $initializers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_brace as RightBraceToken, $source_ref, ); } @@ -129,7 +132,10 @@ final class CollectionLiteralExpression return new static( $name as ISimpleCreationSpecifier, $left_brace as LeftBraceToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $initializers, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $initializers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_brace as RightBraceToken, ); } diff --git a/codegen/syntax/CompoundStatement.hack b/codegen/syntax/CompoundStatement.hack index bde5d04c..73b5c846 100644 --- a/codegen/syntax/CompoundStatement.hack +++ b/codegen/syntax/CompoundStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<71525dfadca7504b3742e23f479aed24>> + * @generated SignedSource<<23864588f2709c8f4c04b109e10f7a2a>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -72,9 +72,12 @@ final class CompoundStatement extends Node implements ILambdaBody, IStatement { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $statements, - /* HH_IGNORE_ERROR[4110] */ $right_brace, + $left_brace as LeftBraceToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $statements as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_brace as RightBraceToken, $source_ref, ); } @@ -109,7 +112,10 @@ final class CompoundStatement extends Node implements ILambdaBody, IStatement { } return new static( $left_brace as LeftBraceToken, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $statements, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $statements as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_brace as RightBraceToken, ); } diff --git a/codegen/syntax/ConcurrentStatement.hack b/codegen/syntax/ConcurrentStatement.hack index 4ac9dbea..35ab8ef2 100644 --- a/codegen/syntax/ConcurrentStatement.hack +++ b/codegen/syntax/ConcurrentStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<466a81eeed014e00ea0e4a9ca7222073>> + * @generated SignedSource<<134b0bab7a09d5da42b8655fb8726b15>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -61,8 +61,8 @@ final class ConcurrentStatement extends Node implements IStatement { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $statement, + $keyword as ConcurrentToken, + $statement as CompoundStatement, $source_ref, ); } diff --git a/codegen/syntax/ConditionalExpression.hack b/codegen/syntax/ConditionalExpression.hack index 4c4dfff3..20e0f005 100644 --- a/codegen/syntax/ConditionalExpression.hack +++ b/codegen/syntax/ConditionalExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<7255f3f181caf44cfd0d0e2de1bebefb>> + * @generated SignedSource<<4710ec77b08b21604c81e049d24642be>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -99,11 +99,11 @@ final class ConditionalExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $test, - /* HH_IGNORE_ERROR[4110] */ $question, - /* HH_IGNORE_ERROR[4110] */ $consequence, - /* HH_IGNORE_ERROR[4110] */ $colon, - /* HH_IGNORE_ERROR[4110] */ $alternative, + $test as IExpression, + $question as QuestionToken, + $consequence as IExpression, + $colon as ColonToken, + $alternative as IExpression, $source_ref, ); } diff --git a/codegen/syntax/ConstDeclaration.hack b/codegen/syntax/ConstDeclaration.hack index 163776c1..d85f69c4 100644 --- a/codegen/syntax/ConstDeclaration.hack +++ b/codegen/syntax/ConstDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<5e18f81b83c25278e45f05d5ada547dd>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -108,12 +108,21 @@ final class ConstDeclaration extends Node implements IClassBodyDeclaration { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute_spec, - /* HH_IGNORE_ERROR[4110] */ $modifiers, - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $type_specifier, - /* HH_IGNORE_ERROR[4110] */ $declarators, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $attribute_spec as ?OldAttributeSpecification, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $keyword as ConstToken, + $type_specifier as ?ITypeSpecifier, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >( + $declarators as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $semicolon as SemicolonToken, $source_ref, ); } @@ -161,10 +170,19 @@ final class ConstDeclaration extends Node implements IClassBodyDeclaration { } return new static( $attribute_spec as ?OldAttributeSpecification, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $modifiers, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $keyword as ConstToken, $type_specifier as ?ITypeSpecifier, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $declarators, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >( + $declarators as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $semicolon as SemicolonToken, ); } diff --git a/codegen/syntax/ConstantDeclarator.hack b/codegen/syntax/ConstantDeclarator.hack index e1e5db11..90f2d226 100644 --- a/codegen/syntax/ConstantDeclarator.hack +++ b/codegen/syntax/ConstantDeclarator.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<5d8e015cb516a2876d35026c3b4d677f>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -61,8 +61,8 @@ final class ConstantDeclarator extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $initializer, + $name as NameToken, + $initializer as ?SimpleInitializer, $source_ref, ); } diff --git a/codegen/syntax/ConstructorCall.hack b/codegen/syntax/ConstructorCall.hack index 43fec52e..79139511 100644 --- a/codegen/syntax/ConstructorCall.hack +++ b/codegen/syntax/ConstructorCall.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,13 @@ final class ConstructorCall extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $argument_list, - /* HH_IGNORE_ERROR[4110] */ $right_paren, + $type, + $left_paren as ?LeftParenToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $argument_list as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as ?RightParenToken, $source_ref, ); } @@ -131,7 +134,10 @@ final class ConstructorCall extends Node { return new static( $type as Node, $left_paren as ?LeftParenToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $argument_list, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $argument_list as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as ?RightParenToken, ); } diff --git a/codegen/syntax/ContextAliasDeclaration.hack b/codegen/syntax/ContextAliasDeclaration.hack index bef12720..41369ddc 100644 --- a/codegen/syntax/ContextAliasDeclaration.hack +++ b/codegen/syntax/ContextAliasDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<565cc4ddff64bf69989e050ba7ffda0d>> + * @generated SignedSource<<72edea266dc0e1bc0dfe5e191fbd8e8f>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -131,14 +131,17 @@ final class ContextAliasDeclaration extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute_spec, - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $generic_parameter, - /* HH_IGNORE_ERROR[4110] */ $as_constraint, - /* HH_IGNORE_ERROR[4110] */ $equal, - /* HH_IGNORE_ERROR[4110] */ $context, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $attribute_spec, + $keyword as NewctxToken, + $name as NameToken, + $generic_parameter, + \HH\FIXME\UNSAFE_CAST, NodeList>( + $as_constraint as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $equal, + $context, + $semicolon as SemicolonToken, $source_ref, ); } @@ -194,7 +197,10 @@ final class ContextAliasDeclaration extends Node { $keyword as NewctxToken, $name as NameToken, $generic_parameter as ?Node, - /* HH_FIXME[4110] NodeList may not be enforceable */ $as_constraint, + \HH\FIXME\UNSAFE_CAST, NodeList>( + $as_constraint as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $equal as ?Node, $context as ?Node, $semicolon as SemicolonToken, diff --git a/codegen/syntax/ContextConstDeclaration.hack b/codegen/syntax/ContextConstDeclaration.hack index 86564922..819143d1 100644 --- a/codegen/syntax/ContextConstDeclaration.hack +++ b/codegen/syntax/ContextConstDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<925ac9aeff38758f27c23870b9e37367>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -146,15 +146,21 @@ final class ContextConstDeclaration 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $modifiers, - /* HH_IGNORE_ERROR[4110] */ $const_keyword, - /* HH_IGNORE_ERROR[4110] */ $ctx_keyword, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $type_parameters, - /* HH_IGNORE_ERROR[4110] */ $constraint, - /* HH_IGNORE_ERROR[4110] */ $equal, - /* HH_IGNORE_ERROR[4110] */ $ctx_list, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $const_keyword as ConstToken, + $ctx_keyword as CtxToken, + $name as NameToken, + $type_parameters, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $constraint as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $equal as ?EqualToken, + $ctx_list as ?Contexts, + $semicolon as SemicolonToken, $source_ref, ); } @@ -211,12 +217,18 @@ final class ContextConstDeclaration return $this; } return new static( - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $modifiers, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $const_keyword as ConstToken, $ctx_keyword as CtxToken, $name as NameToken, $type_parameters as ?Node, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $constraint, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $constraint as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $equal as ?EqualToken, $ctx_list as ?Contexts, $semicolon as SemicolonToken, diff --git a/codegen/syntax/ContextConstraint.hack b/codegen/syntax/ContextConstraint.hack index a7a9a4e1..110fd7b3 100644 --- a/codegen/syntax/ContextConstraint.hack +++ b/codegen/syntax/ContextConstraint.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<3a7a455500a11f53cacd519e3652bf45>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -60,11 +60,7 @@ final class ContextConstraint extends Node { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $ctx_list, - $source_ref, - ); + return new static($keyword as Token, $ctx_list as Contexts, $source_ref); } <<__Override>> diff --git a/codegen/syntax/Contexts.hack b/codegen/syntax/Contexts.hack index c43d8e80..58a76f0a 100644 --- a/codegen/syntax/Contexts.hack +++ b/codegen/syntax/Contexts.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -72,9 +72,12 @@ final class Contexts extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_bracket, - /* HH_IGNORE_ERROR[4110] */ $types, - /* HH_IGNORE_ERROR[4110] */ $right_bracket, + $left_bracket as LeftBracketToken, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >($types as ?NodeList<_>, 'Open for sound approaches that are not O(n).'), + $right_bracket as RightBracketToken, $source_ref, ); } @@ -107,7 +110,10 @@ final class Contexts extends Node { } return new static( $left_bracket as LeftBracketToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $types, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >($types as ?NodeList<_>, 'Open for sound approaches that are not O(n).'), $right_bracket as RightBracketToken, ); } diff --git a/codegen/syntax/ContinueStatement.hack b/codegen/syntax/ContinueStatement.hack index 2833c68b..98ffbaf5 100644 --- a/codegen/syntax/ContinueStatement.hack +++ b/codegen/syntax/ContinueStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<1d719f96b775abcbb01d42c7899afc26>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -61,8 +61,8 @@ final class ContinueStatement extends Node implements IStatement { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as ContinueToken, + $semicolon as SemicolonToken, $source_ref, ); } diff --git a/codegen/syntax/CtxInRefinement.hack b/codegen/syntax/CtxInRefinement.hack index a48e7dfe..ccbdbeb8 100644 --- a/codegen/syntax/CtxInRefinement.hack +++ b/codegen/syntax/CtxInRefinement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<971da060047eba588612a0499b1f9ff3>> + * @generated SignedSource<<1b8256fac85477af8b84b5f34bce6029>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -109,12 +109,12 @@ final class CtxInRefinement extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $type_parameters, - /* HH_IGNORE_ERROR[4110] */ $constraints, - /* HH_IGNORE_ERROR[4110] */ $equal, - /* HH_IGNORE_ERROR[4110] */ $ctx_list, + $keyword, + $name, + $type_parameters, + $constraints, + $equal, + $ctx_list, $source_ref, ); } diff --git a/codegen/syntax/DarrayIntrinsicExpression.hack b/codegen/syntax/DarrayIntrinsicExpression.hack index 8944344c..6d773f3e 100644 --- a/codegen/syntax/DarrayIntrinsicExpression.hack +++ b/codegen/syntax/DarrayIntrinsicExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<588f481a1005c97bf14f05d9fee418ce>> + * @generated SignedSource<<76543444fbb8919c7a7e9b02c12f206b>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -99,11 +99,17 @@ final class DarrayIntrinsicExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $explicit_type, - /* HH_IGNORE_ERROR[4110] */ $left_bracket, - /* HH_IGNORE_ERROR[4110] */ $members, - /* HH_IGNORE_ERROR[4110] */ $right_bracket, + $keyword as DarrayToken, + $explicit_type as ?TypeArguments, + $left_bracket as LeftBracketToken, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $members as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_bracket as RightBracketToken, $source_ref, ); } @@ -147,7 +153,13 @@ final class DarrayIntrinsicExpression $keyword as DarrayToken, $explicit_type as ?TypeArguments, $left_bracket as LeftBracketToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $members, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $members as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_bracket as RightBracketToken, ); } diff --git a/codegen/syntax/DarrayTypeSpecifier.hack b/codegen/syntax/DarrayTypeSpecifier.hack index 7b9bf294..c51e8f7d 100644 --- a/codegen/syntax/DarrayTypeSpecifier.hack +++ b/codegen/syntax/DarrayTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<7a8e2062b7d28a4461f2a7dcf9fc863f>> + * @generated SignedSource<<439b473db4b2673302c4c5de126138f7>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -121,13 +121,13 @@ final class DarrayTypeSpecifier extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_angle, - /* HH_IGNORE_ERROR[4110] */ $key, - /* HH_IGNORE_ERROR[4110] */ $comma, - /* HH_IGNORE_ERROR[4110] */ $value, - /* HH_IGNORE_ERROR[4110] */ $trailing_comma, - /* HH_IGNORE_ERROR[4110] */ $right_angle, + $keyword as DarrayToken, + $left_angle as LessThanToken, + $key as ITypeSpecifier, + $comma as CommaToken, + $value as ITypeSpecifier, + $trailing_comma, + $right_angle as GreaterThanToken, $source_ref, ); } diff --git a/codegen/syntax/DecoratedExpression.hack b/codegen/syntax/DecoratedExpression.hack index 49d9a221..c2d0360f 100644 --- a/codegen/syntax/DecoratedExpression.hack +++ b/codegen/syntax/DecoratedExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<06fb91fe5add4ec33b22a0175ea83cab>> + * @generated SignedSource<<9a5a6aef9d6a49dfc4f54243193c134b>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -62,11 +62,8 @@ final class DecoratedExpression 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $decorator, - /* HH_IGNORE_ERROR[4110] */ $expression, - $source_ref, - ); + return + new static($decorator as Token, $expression as IExpression, $source_ref); } <<__Override>> diff --git a/codegen/syntax/DefaultLabel.hack b/codegen/syntax/DefaultLabel.hack index 27f79371..9b28edc9 100644 --- a/codegen/syntax/DefaultLabel.hack +++ b/codegen/syntax/DefaultLabel.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<088ddba8a29ac1d79f78ea2a5bfedd1b>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -60,11 +60,8 @@ final class DefaultLabel extends Node implements ISwitchLabel { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $colon, - $source_ref, - ); + return + new static($keyword as DefaultToken, $colon as ColonToken, $source_ref); } <<__Override>> diff --git a/codegen/syntax/DictionaryIntrinsicExpression.hack b/codegen/syntax/DictionaryIntrinsicExpression.hack index ec9d5b64..e0feccde 100644 --- a/codegen/syntax/DictionaryIntrinsicExpression.hack +++ b/codegen/syntax/DictionaryIntrinsicExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<154a388f4c22ad5b744590f8fa45361c>> + * @generated SignedSource<<6a2094fd6b0ef7c88fb542596a374439>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -99,11 +99,17 @@ final class DictionaryIntrinsicExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $explicit_type, - /* HH_IGNORE_ERROR[4110] */ $left_bracket, - /* HH_IGNORE_ERROR[4110] */ $members, - /* HH_IGNORE_ERROR[4110] */ $right_bracket, + $keyword as DictToken, + $explicit_type as ?TypeArguments, + $left_bracket as LeftBracketToken, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $members as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_bracket as RightBracketToken, $source_ref, ); } @@ -147,7 +153,13 @@ final class DictionaryIntrinsicExpression $keyword as DictToken, $explicit_type as ?TypeArguments, $left_bracket as LeftBracketToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $members, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $members as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_bracket as RightBracketToken, ); } diff --git a/codegen/syntax/DictionaryTypeSpecifier.hack b/codegen/syntax/DictionaryTypeSpecifier.hack index e1dc1465..dc75a85a 100644 --- a/codegen/syntax/DictionaryTypeSpecifier.hack +++ b/codegen/syntax/DictionaryTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<69c7077da9abbda7c325ce16f648442e>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,13 @@ final class DictionaryTypeSpecifier extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_angle, - /* HH_IGNORE_ERROR[4110] */ $members, - /* HH_IGNORE_ERROR[4110] */ $right_angle, + $keyword as DictToken, + $left_angle as LessThanToken, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $members as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_angle as GreaterThanToken, $source_ref, ); } @@ -125,7 +128,10 @@ final class DictionaryTypeSpecifier extends Node implements ITypeSpecifier { return new static( $keyword as DictToken, $left_angle as LessThanToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $members, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $members as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_angle as GreaterThanToken, ); } diff --git a/codegen/syntax/DoStatement.hack b/codegen/syntax/DoStatement.hack index e02d5149..075b8e47 100644 --- a/codegen/syntax/DoStatement.hack +++ b/codegen/syntax/DoStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<3bb44d055612de73057a24db5f93ef3f>> + * @generated SignedSource<<87e6a9ff5c3d9623b15c48e3639d0e61>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -123,13 +123,13 @@ final class DoStatement 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $body, - /* HH_IGNORE_ERROR[4110] */ $while_keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $condition, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as DoToken, + $body as IStatement, + $while_keyword as WhileToken, + $left_paren as LeftParenToken, + $condition as IExpression, + $right_paren as RightParenToken, + $semicolon as SemicolonToken, $source_ref, ); } diff --git a/codegen/syntax/ETSpliceExpression.hack b/codegen/syntax/ETSpliceExpression.hack index 1b236eac..77defe8c 100644 --- a/codegen/syntax/ETSpliceExpression.hack +++ b/codegen/syntax/ETSpliceExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -86,13 +86,8 @@ final class ETSpliceExpression 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $dollar, - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $expression, - /* HH_IGNORE_ERROR[4110] */ $right_brace, - $source_ref, - ); + return + new static($dollar, $left_brace, $expression, $right_brace, $source_ref); } <<__Override>> diff --git a/codegen/syntax/EchoStatement.hack b/codegen/syntax/EchoStatement.hack index e2c29580..c9980d95 100644 --- a/codegen/syntax/EchoStatement.hack +++ b/codegen/syntax/EchoStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<512bea22bc4609af55ed732b9923be21>> + * @generated SignedSource<<11fa470bb0382baefb26e48a6990477e>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,12 @@ final class EchoStatement extends Node implements IStatement { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $expressions, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as EchoToken, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $expressions as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $semicolon as SemicolonToken, $source_ref, ); } @@ -108,7 +111,10 @@ final class EchoStatement extends Node implements IStatement { } return new static( $keyword as EchoToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $expressions, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $expressions as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $semicolon as SemicolonToken, ); } diff --git a/codegen/syntax/ElementInitializer.hack b/codegen/syntax/ElementInitializer.hack index eaed1d26..8e11d2fa 100644 --- a/codegen/syntax/ElementInitializer.hack +++ b/codegen/syntax/ElementInitializer.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<96d085c469992b9436ca0b970b75f6b9>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,9 @@ final class ElementInitializer extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $key, - /* HH_IGNORE_ERROR[4110] */ $arrow, - /* HH_IGNORE_ERROR[4110] */ $value, + $key as IExpression, + $arrow as EqualGreaterThanToken, + $value as IExpression, $source_ref, ); } diff --git a/codegen/syntax/ElseClause.hack b/codegen/syntax/ElseClause.hack index fb4da150..e284208c 100644 --- a/codegen/syntax/ElseClause.hack +++ b/codegen/syntax/ElseClause.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<390356a2040ed125251932d900a2a7eb>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -60,11 +60,8 @@ final class ElseClause extends Node implements IControlFlowStatement { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $statement, - $source_ref, - ); + return + new static($keyword as ElseToken, $statement as IStatement, $source_ref); } <<__Override>> diff --git a/codegen/syntax/EmbeddedBracedExpression.hack b/codegen/syntax/EmbeddedBracedExpression.hack index 839e66fb..2d54913b 100644 --- a/codegen/syntax/EmbeddedBracedExpression.hack +++ b/codegen/syntax/EmbeddedBracedExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<74550a934a1712eda932b8ea69c1b3b6>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -80,12 +80,7 @@ final class EmbeddedBracedExpression 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $expression, - /* HH_IGNORE_ERROR[4110] */ $right_brace, - $source_ref, - ); + return new static($left_brace, $expression, $right_brace, $source_ref); } <<__Override>> diff --git a/codegen/syntax/EmbeddedMemberSelectionExpression.hack b/codegen/syntax/EmbeddedMemberSelectionExpression.hack index ec33abc7..60879d61 100644 --- a/codegen/syntax/EmbeddedMemberSelectionExpression.hack +++ b/codegen/syntax/EmbeddedMemberSelectionExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<2140ca235ed062243921d40c13749123>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -74,12 +74,7 @@ final class EmbeddedMemberSelectionExpression 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $object, - /* HH_IGNORE_ERROR[4110] */ $operator, - /* HH_IGNORE_ERROR[4110] */ $name, - $source_ref, - ); + return new static($object, $operator, $name, $source_ref); } <<__Override>> diff --git a/codegen/syntax/EmbeddedSubscriptExpression.hack b/codegen/syntax/EmbeddedSubscriptExpression.hack index 83e8cc9f..8f2c9260 100644 --- a/codegen/syntax/EmbeddedSubscriptExpression.hack +++ b/codegen/syntax/EmbeddedSubscriptExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -86,13 +86,8 @@ final class EmbeddedSubscriptExpression 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $receiver, - /* HH_IGNORE_ERROR[4110] */ $left_bracket, - /* HH_IGNORE_ERROR[4110] */ $index, - /* HH_IGNORE_ERROR[4110] */ $right_bracket, - $source_ref, - ); + return + new static($receiver, $left_bracket, $index, $right_bracket, $source_ref); } <<__Override>> diff --git a/codegen/syntax/EndOfFile.hack b/codegen/syntax/EndOfFile.hack index e1fb6f92..48f209bd 100644 --- a/codegen/syntax/EndOfFile.hack +++ b/codegen/syntax/EndOfFile.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -48,7 +48,7 @@ final class EndOfFile extends Node { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static(/* HH_IGNORE_ERROR[4110] */ $token, $source_ref); + return new static($token as EndOfFileToken, $source_ref); } <<__Override>> diff --git a/codegen/syntax/EnumClassDeclaration.hack b/codegen/syntax/EnumClassDeclaration.hack index dc47a5dc..8fa7deb3 100644 --- a/codegen/syntax/EnumClassDeclaration.hack +++ b/codegen/syntax/EnumClassDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<71ee494596dad01a0be73d16ce53f8f8>> + * @generated SignedSource<<0da4cb9fdc6b9c3ed197bf9ba43a81c7>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -179,18 +179,30 @@ final class EnumClassDeclaration extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute_spec, - /* HH_IGNORE_ERROR[4110] */ $modifiers, - /* HH_IGNORE_ERROR[4110] */ $enum_keyword, - /* HH_IGNORE_ERROR[4110] */ $class_keyword, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $colon, - /* HH_IGNORE_ERROR[4110] */ $base, - /* HH_IGNORE_ERROR[4110] */ $extends, - /* HH_IGNORE_ERROR[4110] */ $extends_list, - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $elements, - /* HH_IGNORE_ERROR[4110] */ $right_brace, + $attribute_spec as ?OldAttributeSpecification, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $enum_keyword as EnumToken, + $class_keyword as ClassToken, + $name as NameToken, + $colon as ColonToken, + $base as ITypeSpecifier, + $extends as ?ExtendsToken, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $extends_list as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $left_brace as LeftBraceToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $elements as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_brace as RightBraceToken, $source_ref, ); } @@ -258,16 +270,28 @@ final class EnumClassDeclaration extends Node { } return new static( $attribute_spec as ?OldAttributeSpecification, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $modifiers, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $enum_keyword as EnumToken, $class_keyword as ClassToken, $name as NameToken, $colon as ColonToken, $base as ITypeSpecifier, $extends as ?ExtendsToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $extends_list, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $extends_list as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $left_brace as LeftBraceToken, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $elements, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $elements as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_brace as RightBraceToken, ); } diff --git a/codegen/syntax/EnumClassEnumerator.hack b/codegen/syntax/EnumClassEnumerator.hack index ed8db5a8..1ef3638e 100644 --- a/codegen/syntax/EnumClassEnumerator.hack +++ b/codegen/syntax/EnumClassEnumerator.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<2f6ca00a20eed650f03db2996c441559>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -97,11 +97,14 @@ final class EnumClassEnumerator extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $modifiers, - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $initializer, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $type as ITypeSpecifier, + $name as NameToken, + $initializer as ?SimpleInitializer, + $semicolon as SemicolonToken, $source_ref, ); } @@ -143,7 +146,10 @@ final class EnumClassEnumerator extends Node { return $this; } return new static( - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $modifiers, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $type as ITypeSpecifier, $name as NameToken, $initializer as ?SimpleInitializer, diff --git a/codegen/syntax/EnumClassLabelExpression.hack b/codegen/syntax/EnumClassLabelExpression.hack index 6691081b..f2fd9fda 100644 --- a/codegen/syntax/EnumClassLabelExpression.hack +++ b/codegen/syntax/EnumClassLabelExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<17f073115ce7aebe04d017aa25aaa1e0>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -74,12 +74,7 @@ final class EnumClassLabelExpression 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $qualifier, - /* HH_IGNORE_ERROR[4110] */ $hash, - /* HH_IGNORE_ERROR[4110] */ $expression, - $source_ref, - ); + return new static($qualifier, $hash, $expression, $source_ref); } <<__Override>> diff --git a/codegen/syntax/EnumDeclaration.hack b/codegen/syntax/EnumDeclaration.hack index 2b9b023b..a4c9c7cd 100644 --- a/codegen/syntax/EnumDeclaration.hack +++ b/codegen/syntax/EnumDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<194693a524b90d5d00f80feff66c9e73>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -164,17 +164,26 @@ final class EnumDeclaration extends Node implements IHasAttributeSpec { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute_spec, - /* HH_IGNORE_ERROR[4110] */ $modifiers, - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $colon, - /* HH_IGNORE_ERROR[4110] */ $base, - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $use_clauses, - /* HH_IGNORE_ERROR[4110] */ $enumerators, - /* HH_IGNORE_ERROR[4110] */ $right_brace, + $attribute_spec as ?OldAttributeSpecification, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $keyword as EnumToken, + $name as NameToken, + $colon as ColonToken, + $base as ITypeSpecifier, + $type as ?TypeConstraint, + $left_brace as LeftBraceToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $use_clauses as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $enumerators as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_brace as RightBraceToken, $source_ref, ); } @@ -239,15 +248,24 @@ final class EnumDeclaration extends Node implements IHasAttributeSpec { } return new static( $attribute_spec as ?OldAttributeSpecification, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $modifiers, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $keyword as EnumToken, $name as NameToken, $colon as ColonToken, $base as ITypeSpecifier, $type as ?TypeConstraint, $left_brace as LeftBraceToken, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $use_clauses, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $enumerators, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $use_clauses as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $enumerators as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_brace as RightBraceToken, ); } diff --git a/codegen/syntax/EnumUse.hack b/codegen/syntax/EnumUse.hack index 1369b1b1..408f9cf8 100644 --- a/codegen/syntax/EnumUse.hack +++ b/codegen/syntax/EnumUse.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,12 @@ final class EnumUse extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $names, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as UseToken, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >($names as NodeList<_>, 'Open for sound approaches that are not O(n).'), + $semicolon as SemicolonToken, $source_ref, ); } @@ -108,7 +111,10 @@ final class EnumUse extends Node { } return new static( $keyword as UseToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $names, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >($names as NodeList<_>, 'Open for sound approaches that are not O(n).'), $semicolon as SemicolonToken, ); } diff --git a/codegen/syntax/Enumerator.hack b/codegen/syntax/Enumerator.hack index 207602b1..f91bf1c2 100644 --- a/codegen/syntax/Enumerator.hack +++ b/codegen/syntax/Enumerator.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<91f93b6ec5f12d0c97c142e8af19d139>> + * @generated SignedSource<<062ba1738a53a6c9aed6a3f874622c5d>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,10 @@ final class Enumerator extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $equal, - /* HH_IGNORE_ERROR[4110] */ $value, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $name as NameToken, + $equal as EqualToken, + $value as IExpression, + $semicolon as SemicolonToken, $source_ref, ); } diff --git a/codegen/syntax/ErrorSyntax.hack b/codegen/syntax/ErrorSyntax.hack index d531b6ec..e5d7cb4c 100644 --- a/codegen/syntax/ErrorSyntax.hack +++ b/codegen/syntax/ErrorSyntax.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<5bed80736f100a1252edf023be0d0855>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -47,7 +47,7 @@ final class ErrorSyntax extends Node { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static(/* HH_IGNORE_ERROR[4110] */ $error, $source_ref); + return new static($error, $source_ref); } <<__Override>> diff --git a/codegen/syntax/EvalExpression.hack b/codegen/syntax/EvalExpression.hack index b8da2ec2..ad068fd7 100644 --- a/codegen/syntax/EvalExpression.hack +++ b/codegen/syntax/EvalExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<1a38379e38d9ab39c1ecf1886964c5c1>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,10 @@ final class EvalExpression extends Node implements ILambdaBody, IExpression { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $argument, - /* HH_IGNORE_ERROR[4110] */ $right_paren, + $keyword as EvalToken, + $left_paren as LeftParenToken, + $argument as IExpression, + $right_paren as RightParenToken, $source_ref, ); } diff --git a/codegen/syntax/ExpressionStatement.hack b/codegen/syntax/ExpressionStatement.hack index a91916e4..15569b2a 100644 --- a/codegen/syntax/ExpressionStatement.hack +++ b/codegen/syntax/ExpressionStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<1194a0d59cc75e69360ae0daf491bc86>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -61,8 +61,8 @@ final class ExpressionStatement extends Node implements IStatement { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $expression, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $expression as ?IExpression, + $semicolon as SemicolonToken, $source_ref, ); } diff --git a/codegen/syntax/FieldInitializer.hack b/codegen/syntax/FieldInitializer.hack index f2384905..0440656f 100644 --- a/codegen/syntax/FieldInitializer.hack +++ b/codegen/syntax/FieldInitializer.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<1c2647d3c781721f3183c03c3c4dcd6c>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,9 @@ final class FieldInitializer extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $arrow, - /* HH_IGNORE_ERROR[4110] */ $value, + $name as IExpression, + $arrow as EqualGreaterThanToken, + $value as IExpression, $source_ref, ); } diff --git a/codegen/syntax/FieldSpecifier.hack b/codegen/syntax/FieldSpecifier.hack index ec3438ef..bfc22619 100644 --- a/codegen/syntax/FieldSpecifier.hack +++ b/codegen/syntax/FieldSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<29d5388bdd052b39f124825c2b08a834>> + * @generated SignedSource<<3718e409df5ef8c517508b3975b273a7>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -84,10 +84,10 @@ final class FieldSpecifier extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $question, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $arrow, - /* HH_IGNORE_ERROR[4110] */ $type, + $question as ?QuestionToken, + $name as IExpression, + $arrow as EqualGreaterThanToken, + $type as ITypeSpecifier, $source_ref, ); } diff --git a/codegen/syntax/FileAttributeSpecification.hack b/codegen/syntax/FileAttributeSpecification.hack index 1181ff8c..e07d5026 100644 --- a/codegen/syntax/FileAttributeSpecification.hack +++ b/codegen/syntax/FileAttributeSpecification.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -97,11 +97,17 @@ final class FileAttributeSpecification extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_double_angle, - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $colon, - /* HH_IGNORE_ERROR[4110] */ $attributes, - /* HH_IGNORE_ERROR[4110] */ $right_double_angle, + $left_double_angle as LessThanLessThanToken, + $keyword as FileToken, + $colon as ColonToken, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >( + $attributes as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_double_angle as GreaterThanGreaterThanToken, $source_ref, ); } @@ -142,7 +148,13 @@ final class FileAttributeSpecification extends Node { $left_double_angle as LessThanLessThanToken, $keyword as FileToken, $colon as ColonToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $attributes, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >( + $attributes as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_double_angle as GreaterThanGreaterThanToken, ); } diff --git a/codegen/syntax/FinallyClause.hack b/codegen/syntax/FinallyClause.hack index fd05a68d..8adf48eb 100644 --- a/codegen/syntax/FinallyClause.hack +++ b/codegen/syntax/FinallyClause.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -61,8 +61,8 @@ final class FinallyClause extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $body, + $keyword as FinallyToken, + $body as CompoundStatement, $source_ref, ); } diff --git a/codegen/syntax/ForStatement.hack b/codegen/syntax/ForStatement.hack index c20debfb..3080e260 100644 --- a/codegen/syntax/ForStatement.hack +++ b/codegen/syntax/ForStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -144,15 +144,21 @@ final class ForStatement 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $initializer, - /* HH_IGNORE_ERROR[4110] */ $first_semicolon, - /* HH_IGNORE_ERROR[4110] */ $control, - /* HH_IGNORE_ERROR[4110] */ $second_semicolon, - /* HH_IGNORE_ERROR[4110] */ $end_of_loop, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - /* HH_IGNORE_ERROR[4110] */ $body, + $keyword as ForToken, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $initializer as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $first_semicolon as SemicolonToken, + $control as ?IExpression, + $second_semicolon as SemicolonToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $end_of_loop as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as RightParenToken, + $body as IStatement, $source_ref, ); } @@ -209,11 +215,17 @@ final class ForStatement return new static( $keyword as ForToken, $left_paren as LeftParenToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $initializer, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $initializer as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $first_semicolon as SemicolonToken, $control as ?IExpression, $second_semicolon as SemicolonToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $end_of_loop, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $end_of_loop as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as RightParenToken, $body as IStatement, ); diff --git a/codegen/syntax/ForeachStatement.hack b/codegen/syntax/ForeachStatement.hack index 789ef51a..e6f12daa 100644 --- a/codegen/syntax/ForeachStatement.hack +++ b/codegen/syntax/ForeachStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<83d516a16e955f0c95bf335c86404860>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -157,16 +157,16 @@ final class ForeachStatement 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $collection, - /* HH_IGNORE_ERROR[4110] */ $await_keyword, - /* HH_IGNORE_ERROR[4110] */ $as, - /* HH_IGNORE_ERROR[4110] */ $key, - /* HH_IGNORE_ERROR[4110] */ $arrow, - /* HH_IGNORE_ERROR[4110] */ $value, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - /* HH_IGNORE_ERROR[4110] */ $body, + $keyword as ForeachToken, + $left_paren as LeftParenToken, + $collection as IExpression, + $await_keyword as ?AwaitToken, + $as as AsToken, + $key as ?IExpression, + $arrow as ?EqualGreaterThanToken, + $value as IExpression, + $right_paren as RightParenToken, + $body as IStatement, $source_ref, ); } diff --git a/codegen/syntax/FunctionCallExpression.hack b/codegen/syntax/FunctionCallExpression.hack index 635b150d..50729f76 100644 --- a/codegen/syntax/FunctionCallExpression.hack +++ b/codegen/syntax/FunctionCallExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<18913689b7721adc5fd92a1d0453d818>> + * @generated SignedSource<<7549531c875b3917560ec97ba207360d>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -99,11 +99,14 @@ final class FunctionCallExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $receiver, - /* HH_IGNORE_ERROR[4110] */ $type_args, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $argument_list, - /* HH_IGNORE_ERROR[4110] */ $right_paren, + $receiver, + $type_args as ?TypeArguments, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $argument_list as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as RightParenToken, $source_ref, ); } @@ -148,7 +151,10 @@ final class FunctionCallExpression $receiver as Node, $type_args as ?TypeArguments, $left_paren as LeftParenToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $argument_list, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $argument_list as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as RightParenToken, ); } diff --git a/codegen/syntax/FunctionCtxTypeSpecifier.hack b/codegen/syntax/FunctionCtxTypeSpecifier.hack index 89ab1cc0..d4813842 100644 --- a/codegen/syntax/FunctionCtxTypeSpecifier.hack +++ b/codegen/syntax/FunctionCtxTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<5f60bd9e49ef0ec0309ccf51a474b35a>> + * @generated SignedSource<<40d8aa2260fbe6c7b3835d29f170dca3>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -60,11 +60,8 @@ final class FunctionCtxTypeSpecifier extends Node implements ITypeSpecifier { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $variable, - $source_ref, - ); + return + new static($keyword as CtxToken, $variable as VariableToken, $source_ref); } <<__Override>> diff --git a/codegen/syntax/FunctionDeclaration.hack b/codegen/syntax/FunctionDeclaration.hack index 71d65495..d47fade8 100644 --- a/codegen/syntax/FunctionDeclaration.hack +++ b/codegen/syntax/FunctionDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<357059e64232775c7411ada8399f0546>> + * @generated SignedSource<<1002045f59014e9f1f70af80457c70c8>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -75,9 +75,9 @@ final class FunctionDeclaration 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute_spec, - /* HH_IGNORE_ERROR[4110] */ $declaration_header, - /* HH_IGNORE_ERROR[4110] */ $body, + $attribute_spec as ?OldAttributeSpecification, + $declaration_header as FunctionDeclarationHeader, + $body, $source_ref, ); } diff --git a/codegen/syntax/FunctionDeclarationHeader.hack b/codegen/syntax/FunctionDeclarationHeader.hack index 1729471a..4d25da15 100644 --- a/codegen/syntax/FunctionDeclarationHeader.hack +++ b/codegen/syntax/FunctionDeclarationHeader.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<24665462d5c5e66ed6bc35d92fc9b6b1>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -177,18 +177,24 @@ final class FunctionDeclarationHeader extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $modifiers, - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $type_parameter_list, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $parameter_list, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - /* HH_IGNORE_ERROR[4110] */ $contexts, - /* HH_IGNORE_ERROR[4110] */ $colon, - /* HH_IGNORE_ERROR[4110] */ $readonly_return, - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $where_clause, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $keyword as FunctionToken, + $name as Token, + $type_parameter_list as ?TypeParameters, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $parameter_list as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as RightParenToken, + $contexts as ?Contexts, + $colon as ?ColonToken, + $readonly_return as ?ReadonlyToken, + $type as ?ITypeSpecifier, + $where_clause as ?WhereClause, $source_ref, ); } @@ -258,12 +264,18 @@ final class FunctionDeclarationHeader extends Node { return $this; } return new static( - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $modifiers, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $keyword as FunctionToken, $name as Token, $type_parameter_list as ?TypeParameters, $left_paren as LeftParenToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $parameter_list, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $parameter_list as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as RightParenToken, $contexts as ?Contexts, $colon as ?ColonToken, diff --git a/codegen/syntax/FunctionPointerExpression.hack b/codegen/syntax/FunctionPointerExpression.hack index 35e400cb..527da549 100644 --- a/codegen/syntax/FunctionPointerExpression.hack +++ b/codegen/syntax/FunctionPointerExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<0aa14f716f65104431220b291b8230af>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -63,8 +63,8 @@ final class FunctionPointerExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $receiver, - /* HH_IGNORE_ERROR[4110] */ $type_args, + $receiver as IExpression, + $type_args as TypeArguments, $source_ref, ); } diff --git a/codegen/syntax/GenericTypeSpecifier.hack b/codegen/syntax/GenericTypeSpecifier.hack index 09e65a60..e13fbda4 100644 --- a/codegen/syntax/GenericTypeSpecifier.hack +++ b/codegen/syntax/GenericTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<63fce2719adbf4a5cb13e27997f551cd>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -62,11 +62,8 @@ final class GenericTypeSpecifier 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $class_type, - /* HH_IGNORE_ERROR[4110] */ $argument_list, - $source_ref, - ); + return + new static($class_type, $argument_list as TypeArguments, $source_ref); } <<__Override>> diff --git a/codegen/syntax/IfStatement.hack b/codegen/syntax/IfStatement.hack index d11d7831..70027195 100644 --- a/codegen/syntax/IfStatement.hack +++ b/codegen/syntax/IfStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<1a56fb44690438bdbb7a3b0d15660cb4>> + * @generated SignedSource<<7975ab6101c98a108a3af48c0c70a6b1>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -110,12 +110,12 @@ final class IfStatement 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $condition, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - /* HH_IGNORE_ERROR[4110] */ $statement, - /* HH_IGNORE_ERROR[4110] */ $else_clause, + $keyword as IfToken, + $left_paren as LeftParenToken, + $condition as IExpression, + $right_paren as RightParenToken, + $statement as IStatement, + $else_clause as ?ElseClause, $source_ref, ); } diff --git a/codegen/syntax/InclusionDirective.hack b/codegen/syntax/InclusionDirective.hack index 6c65e4f4..1c4c00aa 100644 --- a/codegen/syntax/InclusionDirective.hack +++ b/codegen/syntax/InclusionDirective.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -60,11 +60,7 @@ final class InclusionDirective extends Node implements IStatement { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $expression, - /* HH_IGNORE_ERROR[4110] */ $semicolon, - $source_ref, - ); + return new static($expression, $semicolon, $source_ref); } <<__Override>> diff --git a/codegen/syntax/InclusionExpression.hack b/codegen/syntax/InclusionExpression.hack index 72118816..132a3bab 100644 --- a/codegen/syntax/InclusionExpression.hack +++ b/codegen/syntax/InclusionExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -62,11 +62,7 @@ final class InclusionExpression 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $require, - /* HH_IGNORE_ERROR[4110] */ $filename, - $source_ref, - ); + return new static($require as Token, $filename as IExpression, $source_ref); } <<__Override>> diff --git a/codegen/syntax/IntersectionTypeSpecifier.hack b/codegen/syntax/IntersectionTypeSpecifier.hack index 0355893f..9f47fc27 100644 --- a/codegen/syntax/IntersectionTypeSpecifier.hack +++ b/codegen/syntax/IntersectionTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<9d4e7f2a5d89c42e3af443b3fa6ad8fd>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -71,12 +71,7 @@ final class IntersectionTypeSpecifier extends Node implements ITypeSpecifier { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $types, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - $source_ref, - ); + return new static($left_paren, $types, $right_paren, $source_ref); } <<__Override>> diff --git a/codegen/syntax/IsExpression.hack b/codegen/syntax/IsExpression.hack index 9ccab917..8732d5f4 100644 --- a/codegen/syntax/IsExpression.hack +++ b/codegen/syntax/IsExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<39d0ddf0080da50f0c3abdad45e5544c>> + * @generated SignedSource<<17181cb4a47c13c80c83a97f089530ae>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,9 @@ final class IsExpression extends Node implements ILambdaBody, IExpression { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_operand, - /* HH_IGNORE_ERROR[4110] */ $operator, - /* HH_IGNORE_ERROR[4110] */ $right_operand, + $left_operand as IExpression, + $operator as IsToken, + $right_operand as ITypeSpecifier, $source_ref, ); } diff --git a/codegen/syntax/IssetExpression.hack b/codegen/syntax/IssetExpression.hack index 6e97a990..d31c72c7 100644 --- a/codegen/syntax/IssetExpression.hack +++ b/codegen/syntax/IssetExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,13 @@ final class IssetExpression extends Node implements ILambdaBody, IExpression { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $argument_list, - /* HH_IGNORE_ERROR[4110] */ $right_paren, + $keyword as IssetToken, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $argument_list as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as RightParenToken, $source_ref, ); } @@ -125,7 +128,10 @@ final class IssetExpression extends Node implements ILambdaBody, IExpression { return new static( $keyword as IssetToken, $left_paren as LeftParenToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $argument_list, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $argument_list as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as RightParenToken, ); } diff --git a/codegen/syntax/KeysetIntrinsicExpression.hack b/codegen/syntax/KeysetIntrinsicExpression.hack index fbe87f8e..99bbf767 100644 --- a/codegen/syntax/KeysetIntrinsicExpression.hack +++ b/codegen/syntax/KeysetIntrinsicExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<63a3e44f8a1f226c162e0c56b2d6c24d>> + * @generated SignedSource<<106ba8351580a97e6f479a06214bd4b8>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -99,11 +99,14 @@ final class KeysetIntrinsicExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $explicit_type, - /* HH_IGNORE_ERROR[4110] */ $left_bracket, - /* HH_IGNORE_ERROR[4110] */ $members, - /* HH_IGNORE_ERROR[4110] */ $right_bracket, + $keyword as KeysetToken, + $explicit_type as ?TypeArguments, + $left_bracket as LeftBracketToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $members as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_bracket as RightBracketToken, $source_ref, ); } @@ -147,7 +150,10 @@ final class KeysetIntrinsicExpression $keyword as KeysetToken, $explicit_type as ?TypeArguments, $left_bracket as LeftBracketToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $members, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $members as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_bracket as RightBracketToken, ); } diff --git a/codegen/syntax/KeysetTypeSpecifier.hack b/codegen/syntax/KeysetTypeSpecifier.hack index c498bbe6..ee0c8c6a 100644 --- a/codegen/syntax/KeysetTypeSpecifier.hack +++ b/codegen/syntax/KeysetTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<7f104333205c57d90221f3dc1252d771>> + * @generated SignedSource<<37508b9aa09314f13dc1248046e098e4>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -97,11 +97,11 @@ final class KeysetTypeSpecifier extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_angle, - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $trailing_comma, - /* HH_IGNORE_ERROR[4110] */ $right_angle, + $keyword as KeysetToken, + $left_angle as LessThanToken, + $type as ITypeSpecifier, + $trailing_comma, + $right_angle as GreaterThanToken, $source_ref, ); } diff --git a/codegen/syntax/LambdaExpression.hack b/codegen/syntax/LambdaExpression.hack index 01744e86..67ca2a74 100644 --- a/codegen/syntax/LambdaExpression.hack +++ b/codegen/syntax/LambdaExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<097a1f1e47bfd77ce63c58fe0740f31a>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -98,11 +98,11 @@ final class LambdaExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute_spec, - /* HH_IGNORE_ERROR[4110] */ $async, - /* HH_IGNORE_ERROR[4110] */ $signature, - /* HH_IGNORE_ERROR[4110] */ $arrow, - /* HH_IGNORE_ERROR[4110] */ $body, + $attribute_spec as ?OldAttributeSpecification, + $async as ?AsyncToken, + $signature, + $arrow as EqualEqualGreaterThanToken, + $body as ILambdaBody, $source_ref, ); } diff --git a/codegen/syntax/LambdaSignature.hack b/codegen/syntax/LambdaSignature.hack index 07b016a0..a3c131cd 100644 --- a/codegen/syntax/LambdaSignature.hack +++ b/codegen/syntax/LambdaSignature.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<14570b7cb058cb66262c993f1ecb67c6>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -117,13 +117,16 @@ final class LambdaSignature extends Node implements ILambdaSignature { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $parameters, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - /* HH_IGNORE_ERROR[4110] */ $contexts, - /* HH_IGNORE_ERROR[4110] */ $colon, - /* HH_IGNORE_ERROR[4110] */ $readonly_return, - /* HH_IGNORE_ERROR[4110] */ $type, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $parameters as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as RightParenToken, + $contexts as ?Contexts, + $colon as ?ColonToken, + $readonly_return as ?ReadonlyToken, + $type as ?ITypeSpecifier, $source_ref, ); } @@ -173,7 +176,10 @@ final class LambdaSignature extends Node implements ILambdaSignature { } return new static( $left_paren as LeftParenToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $parameters, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $parameters as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as RightParenToken, $contexts as ?Contexts, $colon as ?ColonToken, diff --git a/codegen/syntax/LikeTypeSpecifier.hack b/codegen/syntax/LikeTypeSpecifier.hack index 9919e8c2..60d76e0c 100644 --- a/codegen/syntax/LikeTypeSpecifier.hack +++ b/codegen/syntax/LikeTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<941aa8f9de40fb233269411d3d530084>> + * @generated SignedSource<<4d20283ec81b909f381b9c339a1e4685>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -60,11 +60,8 @@ final class LikeTypeSpecifier extends Node implements ITypeSpecifier { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $tilde, - /* HH_IGNORE_ERROR[4110] */ $type, - $source_ref, - ); + return + new static($tilde as TildeToken, $type as ITypeSpecifier, $source_ref); } <<__Override>> diff --git a/codegen/syntax/ListExpression.hack b/codegen/syntax/ListExpression.hack index d791de94..a46de0f8 100644 --- a/codegen/syntax/ListExpression.hack +++ b/codegen/syntax/ListExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<7f79c315696ea1693da504b1dfb3c5a6>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -84,10 +84,13 @@ final class ListExpression extends Node implements ILambdaBody, IExpression { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $members, - /* HH_IGNORE_ERROR[4110] */ $right_paren, + $keyword as ListToken, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $members as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as RightParenToken, $source_ref, ); } @@ -125,7 +128,10 @@ final class ListExpression extends Node implements ILambdaBody, IExpression { return new static( $keyword as ListToken, $left_paren as LeftParenToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $members, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $members as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as RightParenToken, ); } diff --git a/codegen/syntax/LiteralExpression.hack b/codegen/syntax/LiteralExpression.hack index f8a013e4..9fff65a0 100644 --- a/codegen/syntax/LiteralExpression.hack +++ b/codegen/syntax/LiteralExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<41b802f511e67bf68df696e705ddc935>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -47,7 +47,7 @@ final class LiteralExpression extends Node implements ILambdaBody, IExpression { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static(/* HH_IGNORE_ERROR[4110] */ $expression, $source_ref); + return new static($expression, $source_ref); } <<__Override>> diff --git a/codegen/syntax/MarkupSection.hack b/codegen/syntax/MarkupSection.hack index b44699a1..791eaa28 100644 --- a/codegen/syntax/MarkupSection.hack +++ b/codegen/syntax/MarkupSection.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<1299c5885611d1a45ddc84170416f090>> + * @generated SignedSource<<80a7593a69a4911e3420ff68cce0c4cb>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -59,8 +59,8 @@ final class MarkupSection extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $hashbang, - /* HH_IGNORE_ERROR[4110] */ $suffix, + $hashbang as ?HashbangToken, + $suffix as ?MarkupSuffix, $source_ref, ); } diff --git a/codegen/syntax/MarkupSuffix.hack b/codegen/syntax/MarkupSuffix.hack index 63cdefd8..ca485634 100644 --- a/codegen/syntax/MarkupSuffix.hack +++ b/codegen/syntax/MarkupSuffix.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<795022f12a88558f4b0ab25510e45ae9>> + * @generated SignedSource<<1d3916b9ddacd9d1928d5e1850650ecb>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -61,8 +61,8 @@ final class MarkupSuffix extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $less_than_question, - /* HH_IGNORE_ERROR[4110] */ $name, + $less_than_question as LessThanQuestionToken, + $name as NameToken, $source_ref, ); } diff --git a/codegen/syntax/MemberSelectionExpression.hack b/codegen/syntax/MemberSelectionExpression.hack index fa32f035..eda38b4e 100644 --- a/codegen/syntax/MemberSelectionExpression.hack +++ b/codegen/syntax/MemberSelectionExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -75,9 +75,9 @@ final class MemberSelectionExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $object, - /* HH_IGNORE_ERROR[4110] */ $operator, - /* HH_IGNORE_ERROR[4110] */ $name, + $object as IExpression, + $operator as MinusGreaterThanToken, + $name as IExpression, $source_ref, ); } diff --git a/codegen/syntax/MethodishDeclaration.hack b/codegen/syntax/MethodishDeclaration.hack index c09eed12..7ff7381d 100644 --- a/codegen/syntax/MethodishDeclaration.hack +++ b/codegen/syntax/MethodishDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<4cec254e49fcc712bbb4997d7b708998>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -89,10 +89,10 @@ abstract class MethodishDeclarationGeneratedBase 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute, - /* HH_IGNORE_ERROR[4110] */ $function_decl_header, - /* HH_IGNORE_ERROR[4110] */ $function_body, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $attribute as ?OldAttributeSpecification, + $function_decl_header as FunctionDeclarationHeader, + $function_body as ?CompoundStatement, + $semicolon as ?SemicolonToken, $source_ref, ); } diff --git a/codegen/syntax/MethodishTraitResolution.hack b/codegen/syntax/MethodishTraitResolution.hack index 5dc45785..04ca3baa 100644 --- a/codegen/syntax/MethodishTraitResolution.hack +++ b/codegen/syntax/MethodishTraitResolution.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<8b66bbd041711dafdeda91a06ffc369c>> + * @generated SignedSource<<14173b4d02247fee1e685e52c653a4f8>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -101,11 +101,11 @@ final class MethodishTraitResolution 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute, - /* HH_IGNORE_ERROR[4110] */ $function_decl_header, - /* HH_IGNORE_ERROR[4110] */ $equal, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $attribute, + $function_decl_header, + $equal, + $name, + $semicolon, $source_ref, ); } diff --git a/codegen/syntax/ModuleDeclaration.hack b/codegen/syntax/ModuleDeclaration.hack index 97f24c72..c7510f4c 100644 --- a/codegen/syntax/ModuleDeclaration.hack +++ b/codegen/syntax/ModuleDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<1d1fb415307f0976061bdb3cbad664a8>> + * @generated SignedSource<<589a6f001bcc405f13627a0e9823358c>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -133,14 +133,14 @@ final class ModuleDeclaration extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute_spec, - /* HH_IGNORE_ERROR[4110] */ $new_keyword, - /* HH_IGNORE_ERROR[4110] */ $module_keyword, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $exports, - /* HH_IGNORE_ERROR[4110] */ $imports, - /* HH_IGNORE_ERROR[4110] */ $right_brace, + $attribute_spec as ?OldAttributeSpecification, + $new_keyword as NewToken, + $module_keyword as ModuleToken, + $name as ModuleName, + $left_brace as LeftBraceToken, + $exports, + $imports, + $right_brace as RightBraceToken, $source_ref, ); } diff --git a/codegen/syntax/ModuleExports.hack b/codegen/syntax/ModuleExports.hack index 7a1dc578..dde67e64 100644 --- a/codegen/syntax/ModuleExports.hack +++ b/codegen/syntax/ModuleExports.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<54f7c7fd94e8ce26e0d0f5e21a2a65ec>> + * @generated SignedSource<<620aadd00bffc91a9642c0c4fcc095ed>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,10 @@ final class ModuleExports extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $exports_keyword, - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $exports, - /* HH_IGNORE_ERROR[4110] */ $right_brace, + $exports_keyword, + $left_brace, + $exports, + $right_brace, $source_ref, ); } diff --git a/codegen/syntax/ModuleImports.hack b/codegen/syntax/ModuleImports.hack index a1ac1e8c..c43f0f1f 100644 --- a/codegen/syntax/ModuleImports.hack +++ b/codegen/syntax/ModuleImports.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<4cce7c2ecfcdefa1bd56e2cbd86295cd>> + * @generated SignedSource<<96bdea20a6df3de34ee12ec2da1d4fde>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,10 @@ final class ModuleImports extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $imports_keyword, - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $imports, - /* HH_IGNORE_ERROR[4110] */ $right_brace, + $imports_keyword, + $left_brace, + $imports, + $right_brace, $source_ref, ); } diff --git a/codegen/syntax/ModuleMembershipDeclaration.hack b/codegen/syntax/ModuleMembershipDeclaration.hack index 175b9f41..152871dc 100644 --- a/codegen/syntax/ModuleMembershipDeclaration.hack +++ b/codegen/syntax/ModuleMembershipDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<30ce5c85ba4149a8bac7eb3b682dea3e>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,9 @@ final class ModuleMembershipDeclaration extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $module_keyword, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $module_keyword as ModuleToken, + $name as ModuleName, + $semicolon as SemicolonToken, $source_ref, ); } diff --git a/codegen/syntax/ModuleName.hack b/codegen/syntax/ModuleName.hack index 13e62d29..3ab252ba 100644 --- a/codegen/syntax/ModuleName.hack +++ b/codegen/syntax/ModuleName.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<35558e0c06821f8d651304e0d93d185d>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -48,7 +48,13 @@ final class ModuleName extends Node { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static(/* HH_IGNORE_ERROR[4110] */ $parts, $source_ref); + return new static( + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $parts as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $source_ref, + ); } <<__Override>> @@ -70,7 +76,10 @@ final class ModuleName extends Node { return $this; } return new static( - /* HH_FIXME[4110] NodeList> may not be enforceable */ $parts, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $parts as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), ); } diff --git a/codegen/syntax/NamespaceBody.hack b/codegen/syntax/NamespaceBody.hack index 2fec0cc6..cd2ddd2f 100644 --- a/codegen/syntax/NamespaceBody.hack +++ b/codegen/syntax/NamespaceBody.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<7237a6fcfb9ca940aecfdfdcfbaf63b1>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,9 @@ final class NamespaceBody extends Node implements INamespaceBody { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $declarations, - /* HH_IGNORE_ERROR[4110] */ $right_brace, + $left_brace as LeftBraceToken, + $declarations as ?NodeList<_>, + $right_brace as RightBraceToken, $source_ref, ); } @@ -110,7 +110,7 @@ final class NamespaceBody extends Node implements INamespaceBody { } return new static( $left_brace as LeftBraceToken, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $declarations, + $declarations as ?NodeList<_>, $right_brace as RightBraceToken, ); } diff --git a/codegen/syntax/NamespaceDeclaration.hack b/codegen/syntax/NamespaceDeclaration.hack index e0d28058..f10cbc8e 100644 --- a/codegen/syntax/NamespaceDeclaration.hack +++ b/codegen/syntax/NamespaceDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<1a7e4fd270cf56553eb596b3694878dd>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -61,8 +61,8 @@ abstract class NamespaceDeclarationGeneratedBase extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $header, - /* HH_IGNORE_ERROR[4110] */ $body, + $header as NamespaceDeclarationHeader, + $body as INamespaceBody, $source_ref, ); } diff --git a/codegen/syntax/NamespaceDeclarationHeader.hack b/codegen/syntax/NamespaceDeclarationHeader.hack index 98be4e68..f35fbc2c 100644 --- a/codegen/syntax/NamespaceDeclarationHeader.hack +++ b/codegen/syntax/NamespaceDeclarationHeader.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<553566b3945022c4d17c65784014627f>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -60,8 +60,8 @@ final class NamespaceDeclarationHeader extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $name, + $keyword as NamespaceToken, + $name as ?INameishNode, $source_ref, ); } diff --git a/codegen/syntax/NamespaceEmptyBody.hack b/codegen/syntax/NamespaceEmptyBody.hack index 669798ff..d3bab98c 100644 --- a/codegen/syntax/NamespaceEmptyBody.hack +++ b/codegen/syntax/NamespaceEmptyBody.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -48,7 +48,7 @@ final class NamespaceEmptyBody extends Node implements INamespaceBody { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static(/* HH_IGNORE_ERROR[4110] */ $semicolon, $source_ref); + return new static($semicolon as SemicolonToken, $source_ref); } <<__Override>> diff --git a/codegen/syntax/NamespaceGroupUseDeclaration.hack b/codegen/syntax/NamespaceGroupUseDeclaration.hack index 57ecd01c..fd8a2c09 100644 --- a/codegen/syntax/NamespaceGroupUseDeclaration.hack +++ b/codegen/syntax/NamespaceGroupUseDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -123,13 +123,19 @@ final class NamespaceGroupUseDeclaration 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $kind, - /* HH_IGNORE_ERROR[4110] */ $prefix, - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $clauses, - /* HH_IGNORE_ERROR[4110] */ $right_brace, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as UseToken, + $kind as ?Token, + $prefix as QualifiedName, + $left_brace as LeftBraceToken, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >( + $clauses as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_brace as RightBraceToken, + $semicolon as SemicolonToken, $source_ref, ); } @@ -177,7 +183,13 @@ final class NamespaceGroupUseDeclaration $kind as ?Token, $prefix as QualifiedName, $left_brace as LeftBraceToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $clauses, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >( + $clauses as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_brace as RightBraceToken, $semicolon as SemicolonToken, ); diff --git a/codegen/syntax/NamespaceUseClause.hack b/codegen/syntax/NamespaceUseClause.hack index af585e23..943c7499 100644 --- a/codegen/syntax/NamespaceUseClause.hack +++ b/codegen/syntax/NamespaceUseClause.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<8776f0cd238bba561e0cec9368d0b501>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -83,10 +83,10 @@ final class NamespaceUseClause extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $clause_kind, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $as, - /* HH_IGNORE_ERROR[4110] */ $alias, + $clause_kind as ?Token, + $name as INameishNode, + $as as ?AsToken, + $alias as ?NameToken, $source_ref, ); } diff --git a/codegen/syntax/NamespaceUseDeclaration.hack b/codegen/syntax/NamespaceUseDeclaration.hack index fd8e704b..97faefce 100644 --- a/codegen/syntax/NamespaceUseDeclaration.hack +++ b/codegen/syntax/NamespaceUseDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<00832e53cc653d93335dea7d4af0ba65>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -86,10 +86,16 @@ final class NamespaceUseDeclaration 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $kind, - /* HH_IGNORE_ERROR[4110] */ $clauses, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as UseToken, + $kind as ?Token, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >( + $clauses as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $semicolon as SemicolonToken, $source_ref, ); } @@ -126,7 +132,13 @@ final class NamespaceUseDeclaration return new static( $keyword as UseToken, $kind as ?Token, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $clauses, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >( + $clauses as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $semicolon as SemicolonToken, ); } diff --git a/codegen/syntax/NullableAsExpression.hack b/codegen/syntax/NullableAsExpression.hack index 0d62f4d4..965e396a 100644 --- a/codegen/syntax/NullableAsExpression.hack +++ b/codegen/syntax/NullableAsExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<40cdf15742608db8c47cbbb6e282c538>> + * @generated SignedSource<<37c09f31fa6388975d78aa2cb8c48dad>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -75,9 +75,9 @@ final class NullableAsExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_operand, - /* HH_IGNORE_ERROR[4110] */ $operator, - /* HH_IGNORE_ERROR[4110] */ $right_operand, + $left_operand as IExpression, + $operator as QuestionAsToken, + $right_operand as ITypeSpecifier, $source_ref, ); } diff --git a/codegen/syntax/NullableTypeSpecifier.hack b/codegen/syntax/NullableTypeSpecifier.hack index 92eb01eb..89474c44 100644 --- a/codegen/syntax/NullableTypeSpecifier.hack +++ b/codegen/syntax/NullableTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<56e1e3f1e8b1b13180dce338161b4c7f>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -61,8 +61,8 @@ final class NullableTypeSpecifier extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $question, - /* HH_IGNORE_ERROR[4110] */ $type, + $question as QuestionToken, + $type as ITypeSpecifier, $source_ref, ); } diff --git a/codegen/syntax/ObjectCreationExpression.hack b/codegen/syntax/ObjectCreationExpression.hack index a6175675..4141e351 100644 --- a/codegen/syntax/ObjectCreationExpression.hack +++ b/codegen/syntax/ObjectCreationExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<35f96f3a147c57f8322a9e1d15bcc740>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -63,8 +63,8 @@ final class ObjectCreationExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $new_keyword, - /* HH_IGNORE_ERROR[4110] */ $object, + $new_keyword as NewToken, + $object as ConstructorCall, $source_ref, ); } diff --git a/codegen/syntax/OldAttributeSpecification.hack b/codegen/syntax/OldAttributeSpecification.hack index 7acb2391..442f1f69 100644 --- a/codegen/syntax/OldAttributeSpecification.hack +++ b/codegen/syntax/OldAttributeSpecification.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,15 @@ final class OldAttributeSpecification extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_double_angle, - /* HH_IGNORE_ERROR[4110] */ $attributes, - /* HH_IGNORE_ERROR[4110] */ $right_double_angle, + $left_double_angle as LessThanLessThanToken, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >( + $attributes as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_double_angle as GreaterThanGreaterThanToken, $source_ref, ); } @@ -108,7 +114,13 @@ final class OldAttributeSpecification extends Node { } return new static( $left_double_angle as LessThanLessThanToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $attributes, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >( + $attributes as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_double_angle as GreaterThanGreaterThanToken, ); } diff --git a/codegen/syntax/ParameterDeclaration.hack b/codegen/syntax/ParameterDeclaration.hack index d5fde3ed..23e0b49d 100644 --- a/codegen/syntax/ParameterDeclaration.hack +++ b/codegen/syntax/ParameterDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<1a479503fe3a347962036a518871ea84>> + * @generated SignedSource<<9a64a54d02f39c66855e31c159174148>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -122,13 +122,13 @@ final class ParameterDeclaration 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute, - /* HH_IGNORE_ERROR[4110] */ $visibility, - /* HH_IGNORE_ERROR[4110] */ $call_convention, - /* HH_IGNORE_ERROR[4110] */ $readonly, - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $default_value, + $attribute as ?OldAttributeSpecification, + $visibility as ?Token, + $call_convention as ?InoutToken, + $readonly as ?ReadonlyToken, + $type as ?ITypeSpecifier, + $name as IExpression, + $default_value as ?SimpleInitializer, $source_ref, ); } diff --git a/codegen/syntax/ParenthesizedExpression.hack b/codegen/syntax/ParenthesizedExpression.hack index 5a5fe76a..5ce6f716 100644 --- a/codegen/syntax/ParenthesizedExpression.hack +++ b/codegen/syntax/ParenthesizedExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<5960a9d1035545c9850934bd5a0d8811>> + * @generated SignedSource<<0841e01f181ff21be71b12ff40d54243>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -75,9 +75,9 @@ final class ParenthesizedExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $expression, - /* HH_IGNORE_ERROR[4110] */ $right_paren, + $left_paren as LeftParenToken, + $expression as IExpression, + $right_paren as RightParenToken, $source_ref, ); } diff --git a/codegen/syntax/PipeVariableExpression.hack b/codegen/syntax/PipeVariableExpression.hack index 47d68a38..4db6c0ec 100644 --- a/codegen/syntax/PipeVariableExpression.hack +++ b/codegen/syntax/PipeVariableExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<116e4210a5091b55933f236d557e7726>> + * @generated SignedSource<<112a30abe7e310384c2697b3bf04fbd1>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -50,7 +50,7 @@ final class PipeVariableExpression 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static(/* HH_IGNORE_ERROR[4110] */ $expression, $source_ref); + return new static($expression, $source_ref); } <<__Override>> diff --git a/codegen/syntax/PostfixUnaryExpression.hack b/codegen/syntax/PostfixUnaryExpression.hack index a0720c6e..577d32e4 100644 --- a/codegen/syntax/PostfixUnaryExpression.hack +++ b/codegen/syntax/PostfixUnaryExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<8a1379e3cfea4ac768435a44d0ad44d2>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -62,11 +62,7 @@ final class PostfixUnaryExpression 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $operand, - /* HH_IGNORE_ERROR[4110] */ $operator, - $source_ref, - ); + return new static($operand as IExpression, $operator as Token, $source_ref); } <<__Override>> diff --git a/codegen/syntax/PrefixUnaryExpression.hack b/codegen/syntax/PrefixUnaryExpression.hack index 9274f24d..0648146f 100644 --- a/codegen/syntax/PrefixUnaryExpression.hack +++ b/codegen/syntax/PrefixUnaryExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<213257e64112180c1196b9c24d3bb8ca>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -62,11 +62,7 @@ final class PrefixUnaryExpression 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $operator, - /* HH_IGNORE_ERROR[4110] */ $operand, - $source_ref, - ); + return new static($operator as Token, $operand as IExpression, $source_ref); } <<__Override>> diff --git a/codegen/syntax/PrefixedCodeExpression.hack b/codegen/syntax/PrefixedCodeExpression.hack index c5522741..4612f2e1 100644 --- a/codegen/syntax/PrefixedCodeExpression.hack +++ b/codegen/syntax/PrefixedCodeExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<2751134e1cc70eebda6e780ec2b40f28>> + * @generated SignedSource<<6f3ce9109c4a2b90dde72ffd4158c858>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -87,10 +87,10 @@ final class PrefixedCodeExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $prefix, - /* HH_IGNORE_ERROR[4110] */ $left_backtick, - /* HH_IGNORE_ERROR[4110] */ $expression, - /* HH_IGNORE_ERROR[4110] */ $right_backtick, + $prefix, + $left_backtick, + $expression, + $right_backtick, $source_ref, ); } diff --git a/codegen/syntax/PrefixedStringExpression.hack b/codegen/syntax/PrefixedStringExpression.hack index 2767d937..715733e1 100644 --- a/codegen/syntax/PrefixedStringExpression.hack +++ b/codegen/syntax/PrefixedStringExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<01ef30b0f374b1d5c9a71a9ad8aea7e6>> + * @generated SignedSource<<356cb111e17b30c3224784aa5c4b8c3c>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -61,11 +61,7 @@ final class PrefixedStringExpression 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $str, - $source_ref, - ); + return new static($name, $str, $source_ref); } <<__Override>> diff --git a/codegen/syntax/PropertyDeclaration.hack b/codegen/syntax/PropertyDeclaration.hack index 75c1bb1c..cbf24e27 100644 --- a/codegen/syntax/PropertyDeclaration.hack +++ b/codegen/syntax/PropertyDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<9f34da091ba87b9e042af4e967efb2ca>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -98,11 +98,20 @@ final class PropertyDeclaration 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute_spec, - /* HH_IGNORE_ERROR[4110] */ $modifiers, - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $declarators, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $attribute_spec as ?OldAttributeSpecification, + \HH\FIXME\UNSAFE_CAST, NodeList>( + $modifiers as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $type as ?ITypeSpecifier, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >( + $declarators as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $semicolon as SemicolonToken, $source_ref, ); } @@ -143,9 +152,18 @@ final class PropertyDeclaration } return new static( $attribute_spec as ?OldAttributeSpecification, - /* HH_FIXME[4110] NodeList may not be enforceable */ $modifiers, + \HH\FIXME\UNSAFE_CAST, NodeList>( + $modifiers as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $type as ?ITypeSpecifier, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $declarators, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >( + $declarators as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $semicolon as SemicolonToken, ); } diff --git a/codegen/syntax/PropertyDeclarator.hack b/codegen/syntax/PropertyDeclarator.hack index 271dc642..2d8691f7 100644 --- a/codegen/syntax/PropertyDeclarator.hack +++ b/codegen/syntax/PropertyDeclarator.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<9acbc1ae19b71c76301a7ceba4a58315>> + * @generated SignedSource<<09defa3485299de37103218ba8a98d4a>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -61,8 +61,8 @@ final class PropertyDeclarator extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $initializer, + $name as VariableToken, + $initializer as ?SimpleInitializer, $source_ref, ); } diff --git a/codegen/syntax/QualifiedName.hack b/codegen/syntax/QualifiedName.hack index e7d624f7..2641f23e 100644 --- a/codegen/syntax/QualifiedName.hack +++ b/codegen/syntax/QualifiedName.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<0c30f737bac86560c28df9d343ad933d>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -53,7 +53,13 @@ final class QualifiedName 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static(/* HH_IGNORE_ERROR[4110] */ $parts, $source_ref); + return new static( + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $parts as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $source_ref, + ); } <<__Override>> @@ -75,7 +81,10 @@ final class QualifiedName return $this; } return new static( - /* HH_FIXME[4110] NodeList> may not be enforceable */ $parts, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $parts as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), ); } diff --git a/codegen/syntax/ReifiedTypeArgument.hack b/codegen/syntax/ReifiedTypeArgument.hack index b62bacb5..b156cad2 100644 --- a/codegen/syntax/ReifiedTypeArgument.hack +++ b/codegen/syntax/ReifiedTypeArgument.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<275b1489601875ab1bbaf9931d5ad376>> + * @generated SignedSource<<798961dba01f98bb1372fbc98595bc00>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -60,11 +60,7 @@ final class ReifiedTypeArgument extends Node implements ITypeSpecifier { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $reified, - /* HH_IGNORE_ERROR[4110] */ $type, - $source_ref, - ); + return new static($reified, $type, $source_ref); } <<__Override>> diff --git a/codegen/syntax/RequireClause.hack b/codegen/syntax/RequireClause.hack index 985e374c..b6778629 100644 --- a/codegen/syntax/RequireClause.hack +++ b/codegen/syntax/RequireClause.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<826a6631b25eebc933ad97717e787801>> + * @generated SignedSource<<23d1462c02ab2d1fb1e5374d796063e2>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,10 @@ final class RequireClause extends Node implements IClassBodyDeclaration { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $kind, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as RequireToken, + $kind as Token, + $name as ISimpleCreationSpecifier, + $semicolon as SemicolonToken, $source_ref, ); } diff --git a/codegen/syntax/ReturnStatement.hack b/codegen/syntax/ReturnStatement.hack index 2ca21390..a0fd9322 100644 --- a/codegen/syntax/ReturnStatement.hack +++ b/codegen/syntax/ReturnStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<64e40af6229db1b770b0e52ce6f2e184>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -72,9 +72,9 @@ final class ReturnStatement extends Node implements IStatement { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $expression, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as ReturnToken, + $expression as ?IExpression, + $semicolon as SemicolonToken, $source_ref, ); } diff --git a/codegen/syntax/SafeMemberSelectionExpression.hack b/codegen/syntax/SafeMemberSelectionExpression.hack index bee6ced8..073686f3 100644 --- a/codegen/syntax/SafeMemberSelectionExpression.hack +++ b/codegen/syntax/SafeMemberSelectionExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<39e903f97cf217f6432db62a312fe4c8>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -75,9 +75,9 @@ final class SafeMemberSelectionExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $object, - /* HH_IGNORE_ERROR[4110] */ $operator, - /* HH_IGNORE_ERROR[4110] */ $name, + $object as IExpression, + $operator as QuestionMinusGreaterThanToken, + $name as NameToken, $source_ref, ); } diff --git a/codegen/syntax/ScopeResolutionExpression.hack b/codegen/syntax/ScopeResolutionExpression.hack index 1e6c6c7b..0883ba0d 100644 --- a/codegen/syntax/ScopeResolutionExpression.hack +++ b/codegen/syntax/ScopeResolutionExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<083e35d2071ab9fb3e7e05bb0da6218b>> + * @generated SignedSource<<551a7336f977d52ab2296065ad8f883a>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -74,12 +74,8 @@ final class ScopeResolutionExpression 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $qualifier, - /* HH_IGNORE_ERROR[4110] */ $operator, - /* HH_IGNORE_ERROR[4110] */ $name, - $source_ref, - ); + return + new static($qualifier, $operator as ColonColonToken, $name, $source_ref); } <<__Override>> diff --git a/codegen/syntax/Script.hack b/codegen/syntax/Script.hack index 84e83a7d..acfdeeef 100644 --- a/codegen/syntax/Script.hack +++ b/codegen/syntax/Script.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<819e521e21ab5038912886707d5d60ee>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -48,7 +48,7 @@ abstract class ScriptGeneratedBase extends Node { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static(/* HH_IGNORE_ERROR[4110] */ $declarations, $source_ref); + return new static($declarations as NodeList<_>, $source_ref); } <<__Override>> @@ -69,9 +69,7 @@ abstract class ScriptGeneratedBase extends Node { if ($declarations === $this->_declarations) { return $this; } - return new static( - /* HH_FIXME[4110] NodeList may not be enforceable */ $declarations, - ); + return new static($declarations as NodeList<_>); } public function getDeclarationsUNTYPED(): ?Node { diff --git a/codegen/syntax/ShapeExpression.hack b/codegen/syntax/ShapeExpression.hack index 4bd97c03..37128071 100644 --- a/codegen/syntax/ShapeExpression.hack +++ b/codegen/syntax/ShapeExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<7068c7f8c09700f5a6431aad8af2ffae>> + * @generated SignedSource<<58d49b80fbc7548c96d4ef6d0298e42d>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,16 @@ final class ShapeExpression extends Node implements ILambdaBody, IExpression { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $fields, - /* HH_IGNORE_ERROR[4110] */ $right_paren, + $keyword as ShapeToken, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $fields as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as RightParenToken, $source_ref, ); } @@ -126,7 +132,13 @@ final class ShapeExpression extends Node implements ILambdaBody, IExpression { return new static( $keyword as ShapeToken, $left_paren as LeftParenToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $fields, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $fields as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as RightParenToken, ); } diff --git a/codegen/syntax/ShapeTypeSpecifier.hack b/codegen/syntax/ShapeTypeSpecifier.hack index 5f83ff17..bac4c660 100644 --- a/codegen/syntax/ShapeTypeSpecifier.hack +++ b/codegen/syntax/ShapeTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<1e59e31cefe34b54b4d8b8af15bc0a5f>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -95,11 +95,17 @@ final class ShapeTypeSpecifier extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $fields, - /* HH_IGNORE_ERROR[4110] */ $ellipsis, - /* HH_IGNORE_ERROR[4110] */ $right_paren, + $keyword as ShapeToken, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $fields as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $ellipsis as ?DotDotDotToken, + $right_paren as RightParenToken, $source_ref, ); } @@ -141,7 +147,13 @@ final class ShapeTypeSpecifier extends Node implements ITypeSpecifier { return new static( $keyword as ShapeToken, $left_paren as LeftParenToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $fields, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >( + $fields as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $ellipsis as ?DotDotDotToken, $right_paren as RightParenToken, ); diff --git a/codegen/syntax/SimpleInitializer.hack b/codegen/syntax/SimpleInitializer.hack index 3959131c..b9822766 100644 --- a/codegen/syntax/SimpleInitializer.hack +++ b/codegen/syntax/SimpleInitializer.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<0a59e0f91b7cfe7f8dafe46adc655c85>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -60,11 +60,7 @@ final class SimpleInitializer extends Node { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $equal, - /* HH_IGNORE_ERROR[4110] */ $value, - $source_ref, - ); + return new static($equal as EqualToken, $value as IExpression, $source_ref); } <<__Override>> diff --git a/codegen/syntax/SimpleTypeSpecifier.hack b/codegen/syntax/SimpleTypeSpecifier.hack index 28fde557..7871aeac 100644 --- a/codegen/syntax/SimpleTypeSpecifier.hack +++ b/codegen/syntax/SimpleTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -50,7 +50,7 @@ final class SimpleTypeSpecifier 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static(/* HH_IGNORE_ERROR[4110] */ $specifier, $source_ref); + return new static($specifier, $source_ref); } <<__Override>> diff --git a/codegen/syntax/SoftTypeSpecifier.hack b/codegen/syntax/SoftTypeSpecifier.hack index 58ab1a67..e82e96f6 100644 --- a/codegen/syntax/SoftTypeSpecifier.hack +++ b/codegen/syntax/SoftTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<99833ac638a55613e95bd4a97b1f8c5b>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -60,11 +60,7 @@ final class SoftTypeSpecifier extends Node implements ITypeSpecifier { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $at, - /* HH_IGNORE_ERROR[4110] */ $type, - $source_ref, - ); + return new static($at as AtToken, $type as ITypeSpecifier, $source_ref); } <<__Override>> diff --git a/codegen/syntax/SubscriptExpression.hack b/codegen/syntax/SubscriptExpression.hack index 94d89b3b..7fd3f83d 100644 --- a/codegen/syntax/SubscriptExpression.hack +++ b/codegen/syntax/SubscriptExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<084703282ea48f976125e11d6d6e1dd1>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -86,10 +86,10 @@ final class SubscriptExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $receiver, - /* HH_IGNORE_ERROR[4110] */ $left_bracket, - /* HH_IGNORE_ERROR[4110] */ $index, - /* HH_IGNORE_ERROR[4110] */ $right_bracket, + $receiver as IExpression, + $left_bracket as LeftBracketToken, + $index as ?IExpression, + $right_bracket as RightBracketToken, $source_ref, ); } diff --git a/codegen/syntax/SwitchFallthrough.hack b/codegen/syntax/SwitchFallthrough.hack index d47ba353..943ce4c9 100644 --- a/codegen/syntax/SwitchFallthrough.hack +++ b/codegen/syntax/SwitchFallthrough.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<553686b37007df8502615b4c2000f866>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -59,11 +59,7 @@ final class SwitchFallthrough extends Node implements IStatement { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $semicolon, - $source_ref, - ); + return new static($keyword, $semicolon, $source_ref); } <<__Override>> diff --git a/codegen/syntax/SwitchSection.hack b/codegen/syntax/SwitchSection.hack index 3427b523..fed5719b 100644 --- a/codegen/syntax/SwitchSection.hack +++ b/codegen/syntax/SwitchSection.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<720112a9ff6c7d84e63c827c8fc39d16>> + * @generated SignedSource<<5152ecc1b48699b4a3a4c9764486bae4>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,15 @@ final class SwitchSection extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $labels, - /* HH_IGNORE_ERROR[4110] */ $statements, - /* HH_IGNORE_ERROR[4110] */ $fallthrough, + \HH\FIXME\UNSAFE_CAST, NodeList>( + $labels as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $statements as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $fallthrough as ?SwitchFallthrough, $source_ref, ); } @@ -111,8 +117,14 @@ final class SwitchSection extends Node { return $this; } return new static( - /* HH_FIXME[4110] NodeList may not be enforceable */ $labels, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $statements, + \HH\FIXME\UNSAFE_CAST, NodeList>( + $labels as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $statements as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $fallthrough as ?SwitchFallthrough, ); } diff --git a/codegen/syntax/SwitchStatement.hack b/codegen/syntax/SwitchStatement.hack index d5b098f4..6422622f 100644 --- a/codegen/syntax/SwitchStatement.hack +++ b/codegen/syntax/SwitchStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<68cbbbb7f14b956ef08aa3fb1575c7db>> + * @generated SignedSource<<018a3e1cf602b0237624c4a9071670d2>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -123,13 +123,16 @@ final class SwitchStatement 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $expression, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $sections, - /* HH_IGNORE_ERROR[4110] */ $right_brace, + $keyword as SwitchToken, + $left_paren as LeftParenToken, + $expression as IExpression, + $right_paren as RightParenToken, + $left_brace as LeftBraceToken, + \HH\FIXME\UNSAFE_CAST, NodeList>( + $sections as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_brace as RightBraceToken, $source_ref, ); } @@ -178,7 +181,10 @@ final class SwitchStatement $expression as IExpression, $right_paren as RightParenToken, $left_brace as LeftBraceToken, - /* HH_FIXME[4110] NodeList may not be enforceable */ $sections, + \HH\FIXME\UNSAFE_CAST, NodeList>( + $sections as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_brace as RightBraceToken, ); } diff --git a/codegen/syntax/ThrowStatement.hack b/codegen/syntax/ThrowStatement.hack index 1e67becf..a6f9fe25 100644 --- a/codegen/syntax/ThrowStatement.hack +++ b/codegen/syntax/ThrowStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<78fafa63385ec69d12b5ce7f87dfd69f>> + * @generated SignedSource<<92dff1d852ec1c88e8cf7bfc724fc4a6>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,9 @@ final class ThrowStatement extends Node implements IStatement { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $expression, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as ThrowToken, + $expression as IExpression, + $semicolon as SemicolonToken, $source_ref, ); } diff --git a/codegen/syntax/TraitUse.hack b/codegen/syntax/TraitUse.hack index ccb0de50..6e1d834b 100644 --- a/codegen/syntax/TraitUse.hack +++ b/codegen/syntax/TraitUse.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,12 @@ final class TraitUse extends Node implements IClassBodyDeclaration { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $names, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as UseToken, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $names as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $semicolon as SemicolonToken, $source_ref, ); } @@ -108,7 +111,10 @@ final class TraitUse extends Node implements IClassBodyDeclaration { } return new static( $keyword as UseToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $names, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $names as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $semicolon as SemicolonToken, ); } diff --git a/codegen/syntax/TryStatement.hack b/codegen/syntax/TryStatement.hack index fa5aeac4..0da8684f 100644 --- a/codegen/syntax/TryStatement.hack +++ b/codegen/syntax/TryStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<9d5aa391a4b8409fbb9366e2d7763041>> + * @generated SignedSource<<782b61a2d33148e9fe5f7e26a1c8d23f>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -83,10 +83,13 @@ final class TryStatement extends Node implements IStatement { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $compound_statement, - /* HH_IGNORE_ERROR[4110] */ $catch_clauses, - /* HH_IGNORE_ERROR[4110] */ $finally_clause, + $keyword as TryToken, + $compound_statement as CompoundStatement, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $catch_clauses as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $finally_clause as ?FinallyClause, $source_ref, ); } @@ -127,7 +130,10 @@ final class TryStatement extends Node implements IStatement { return new static( $keyword as TryToken, $compound_statement as CompoundStatement, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $catch_clauses, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $catch_clauses as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $finally_clause as ?FinallyClause, ); } diff --git a/codegen/syntax/TupleExpression.hack b/codegen/syntax/TupleExpression.hack index d78fb574..05534b3f 100644 --- a/codegen/syntax/TupleExpression.hack +++ b/codegen/syntax/TupleExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<5fb563a6382b05c5892b5fe02d868019>> + * @generated SignedSource<<312df398508be483895327bf29cc52b4>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,13 @@ final class TupleExpression extends Node implements ILambdaBody, IExpression { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $items, - /* HH_IGNORE_ERROR[4110] */ $right_paren, + $keyword as TupleToken, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $items as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as RightParenToken, $source_ref, ); } @@ -125,7 +128,10 @@ final class TupleExpression extends Node implements ILambdaBody, IExpression { return new static( $keyword as TupleToken, $left_paren as LeftParenToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $items, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $items as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as RightParenToken, ); } diff --git a/codegen/syntax/TupleTypeExplicitSpecifier.hack b/codegen/syntax/TupleTypeExplicitSpecifier.hack index 7596db57..a438aae6 100644 --- a/codegen/syntax/TupleTypeExplicitSpecifier.hack +++ b/codegen/syntax/TupleTypeExplicitSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<1713e3dd953eee9499acfe2160353710>> + * @generated SignedSource<<3bf6215bcb8acfc256006e18d7156b36>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -82,13 +82,7 @@ final class TupleTypeExplicitSpecifier extends Node implements ITypeSpecifier { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_angle, - /* HH_IGNORE_ERROR[4110] */ $types, - /* HH_IGNORE_ERROR[4110] */ $right_angle, - $source_ref, - ); + return new static($keyword, $left_angle, $types, $right_angle, $source_ref); } <<__Override>> diff --git a/codegen/syntax/TupleTypeSpecifier.hack b/codegen/syntax/TupleTypeSpecifier.hack index 62c0f6f2..f75a3d79 100644 --- a/codegen/syntax/TupleTypeSpecifier.hack +++ b/codegen/syntax/TupleTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<78a4bed284f08d0bf760eb8499d6ea1a>> + * @generated SignedSource<<3947ee3d62b6e180ddfe96f9161ac54b>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,12 @@ final class TupleTypeSpecifier extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $types, - /* HH_IGNORE_ERROR[4110] */ $right_paren, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $types as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as RightParenToken, $source_ref, ); } @@ -108,7 +111,10 @@ final class TupleTypeSpecifier extends Node implements ITypeSpecifier { } return new static( $left_paren as LeftParenToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $types, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $types as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as RightParenToken, ); } diff --git a/codegen/syntax/TypeArguments.hack b/codegen/syntax/TypeArguments.hack index e32ee680..74481c5d 100644 --- a/codegen/syntax/TypeArguments.hack +++ b/codegen/syntax/TypeArguments.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<8da116ce9939abde432f646389ec149e>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,12 @@ final class TypeArguments extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_angle, - /* HH_IGNORE_ERROR[4110] */ $types, - /* HH_IGNORE_ERROR[4110] */ $right_angle, + $left_angle as LessThanToken, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >($types as ?NodeList<_>, 'Open for sound approaches that are not O(n).'), + $right_angle as GreaterThanToken, $source_ref, ); } @@ -108,7 +111,10 @@ final class TypeArguments extends Node { } return new static( $left_angle as LessThanToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $types, + \HH\FIXME\UNSAFE_CAST< + ?NodeList, + ?NodeList>, + >($types as ?NodeList<_>, 'Open for sound approaches that are not O(n).'), $right_angle as GreaterThanToken, ); } diff --git a/codegen/syntax/TypeConstDeclaration.hack b/codegen/syntax/TypeConstDeclaration.hack index 3f318c3a..dae0808e 100644 --- a/codegen/syntax/TypeConstDeclaration.hack +++ b/codegen/syntax/TypeConstDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<43dc34063df95b97465b3082458bb66e>> + * @generated SignedSource<<66d07e5bd3983fc74cd8e1618e3ea09b>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -156,16 +156,22 @@ final class TypeConstDeclaration extends Node implements IClassBodyDeclaration { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute_spec, - /* HH_IGNORE_ERROR[4110] */ $modifiers, - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $type_keyword, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $type_parameters, - /* HH_IGNORE_ERROR[4110] */ $type_constraints, - /* HH_IGNORE_ERROR[4110] */ $equal, - /* HH_IGNORE_ERROR[4110] */ $type_specifier, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $attribute_spec as ?OldAttributeSpecification, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $keyword as ConstToken, + $type_keyword as TypeToken, + $name as NameToken, + $type_parameters, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $type_constraints as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $equal as ?EqualToken, + $type_specifier as ?ITypeSpecifier, + $semicolon as SemicolonToken, $source_ref, ); } @@ -229,12 +235,18 @@ final class TypeConstDeclaration extends Node implements IClassBodyDeclaration { } return new static( $attribute_spec as ?OldAttributeSpecification, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $modifiers, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $modifiers as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $keyword as ConstToken, $type_keyword as TypeToken, $name as NameToken, $type_parameters as ?Node, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $type_constraints, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $type_constraints as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $equal as ?EqualToken, $type_specifier as ?ITypeSpecifier, $semicolon as SemicolonToken, diff --git a/codegen/syntax/TypeConstant.hack b/codegen/syntax/TypeConstant.hack index 39db5ebe..ea74723b 100644 --- a/codegen/syntax/TypeConstant.hack +++ b/codegen/syntax/TypeConstant.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<0fb219e9c7ae7fdf1e7d8bb1e8482338>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,9 @@ final class TypeConstant extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_type, - /* HH_IGNORE_ERROR[4110] */ $separator, - /* HH_IGNORE_ERROR[4110] */ $right_type, + $left_type as ITypeSpecifier, + $separator as ColonColonToken, + $right_type as NameToken, $source_ref, ); } diff --git a/codegen/syntax/TypeConstraint.hack b/codegen/syntax/TypeConstraint.hack index ee8beb2c..62730da2 100644 --- a/codegen/syntax/TypeConstraint.hack +++ b/codegen/syntax/TypeConstraint.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<8e3130923200461713699d8467cb78a0>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -60,11 +60,7 @@ final class TypeConstraint extends Node { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $type, - $source_ref, - ); + return new static($keyword as Token, $type as ITypeSpecifier, $source_ref); } <<__Override>> diff --git a/codegen/syntax/TypeInRefinement.hack b/codegen/syntax/TypeInRefinement.hack index ee46e6ea..8ddfce0a 100644 --- a/codegen/syntax/TypeInRefinement.hack +++ b/codegen/syntax/TypeInRefinement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -109,12 +109,12 @@ final class TypeInRefinement extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $type_parameters, - /* HH_IGNORE_ERROR[4110] */ $constraints, - /* HH_IGNORE_ERROR[4110] */ $equal, - /* HH_IGNORE_ERROR[4110] */ $type, + $keyword, + $name, + $type_parameters, + $constraints, + $equal, + $type, $source_ref, ); } diff --git a/codegen/syntax/TypeParameter.hack b/codegen/syntax/TypeParameter.hack index 12779dde..2b55fc69 100644 --- a/codegen/syntax/TypeParameter.hack +++ b/codegen/syntax/TypeParameter.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<5bbf01c659f1322fc0ed8c2ec221d7c7>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -104,12 +104,15 @@ final class TypeParameter extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $attribute_spec, - /* HH_IGNORE_ERROR[4110] */ $reified, - /* HH_IGNORE_ERROR[4110] */ $variance, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $param_params, - /* HH_IGNORE_ERROR[4110] */ $constraints, + $attribute_spec as ?OldAttributeSpecification, + $reified as ?ReifyToken, + $variance as ?Token, + $name as NameToken, + $param_params as ?TypeParameters, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $constraints as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $source_ref, ); } @@ -163,7 +166,10 @@ final class TypeParameter extends Node { $variance as ?Token, $name as NameToken, $param_params as ?TypeParameters, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $constraints, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $constraints as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), ); } diff --git a/codegen/syntax/TypeParameters.hack b/codegen/syntax/TypeParameters.hack index e5bbb931..f5294c4d 100644 --- a/codegen/syntax/TypeParameters.hack +++ b/codegen/syntax/TypeParameters.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,12 @@ final class TypeParameters extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_angle, - /* HH_IGNORE_ERROR[4110] */ $parameters, - /* HH_IGNORE_ERROR[4110] */ $right_angle, + $left_angle as LessThanToken, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $parameters as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_angle as GreaterThanToken, $source_ref, ); } @@ -108,7 +111,10 @@ final class TypeParameters extends Node { } return new static( $left_angle as LessThanToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $parameters, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $parameters as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_angle as GreaterThanToken, ); } diff --git a/codegen/syntax/TypeRefinement.hack b/codegen/syntax/TypeRefinement.hack index 292dc667..809e3819 100644 --- a/codegen/syntax/TypeRefinement.hack +++ b/codegen/syntax/TypeRefinement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<5d70129e8b4a9122aa71ad95ebd43544>> + * @generated SignedSource<<0e637bb09e27c70449fb908f98440c48>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -97,11 +97,11 @@ final class TypeRefinement extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $members, - /* HH_IGNORE_ERROR[4110] */ $right_brace, + $type, + $keyword, + $left_brace, + $members, + $right_brace, $source_ref, ); } diff --git a/codegen/syntax/UnionTypeSpecifier.hack b/codegen/syntax/UnionTypeSpecifier.hack index 74b89840..6672b07b 100644 --- a/codegen/syntax/UnionTypeSpecifier.hack +++ b/codegen/syntax/UnionTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<028f4c05cca130f366f784220004bf90>> + * @generated SignedSource<<0cf54f7c06f601503ee1d8ae44f7c48c>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -69,12 +69,7 @@ final class UnionTypeSpecifier extends Node implements ITypeSpecifier { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $types, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - $source_ref, - ); + return new static($left_paren, $types, $right_paren, $source_ref); } <<__Override>> diff --git a/codegen/syntax/UnsetStatement.hack b/codegen/syntax/UnsetStatement.hack index 9de6bc37..6ae883d0 100644 --- a/codegen/syntax/UnsetStatement.hack +++ b/codegen/syntax/UnsetStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<106e5e1afe6fadc716d6a81e92f1bcf1>> + * @generated SignedSource<<27e67b347db6610b2e8e484f6f827a05>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -97,11 +97,14 @@ final class UnsetStatement extends Node implements IStatement { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $variables, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as UnsetToken, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $variables as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as RightParenToken, + $semicolon as SemicolonToken, $source_ref, ); } @@ -141,7 +144,10 @@ final class UnsetStatement extends Node implements IStatement { return new static( $keyword as UnsetToken, $left_paren as LeftParenToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $variables, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $variables as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as RightParenToken, $semicolon as SemicolonToken, ); diff --git a/codegen/syntax/UpcastExpression.hack b/codegen/syntax/UpcastExpression.hack index a2c194b2..b97b6af1 100644 --- a/codegen/syntax/UpcastExpression.hack +++ b/codegen/syntax/UpcastExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<29057dcf897c6c9a36eebc7c19f14239>> + * @generated SignedSource<<9db21892d305e027ad8ccacffc28e0c2>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -70,12 +70,7 @@ final class UpcastExpression extends Node implements ILambdaBody, IExpression { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $left_operand, - /* HH_IGNORE_ERROR[4110] */ $operator, - /* HH_IGNORE_ERROR[4110] */ $right_operand, - $source_ref, - ); + return new static($left_operand, $operator, $right_operand, $source_ref); } <<__Override>> diff --git a/codegen/syntax/UsingStatementBlockScoped.hack b/codegen/syntax/UsingStatementBlockScoped.hack index 002ff6f2..e472cefe 100644 --- a/codegen/syntax/UsingStatementBlockScoped.hack +++ b/codegen/syntax/UsingStatementBlockScoped.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<85e9b50ae34d153811076063b33c30a0>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -109,12 +109,15 @@ final class UsingStatementBlockScoped extends Node implements IStatement { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $await_keyword, - /* HH_IGNORE_ERROR[4110] */ $using_keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $expressions, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - /* HH_IGNORE_ERROR[4110] */ $body, + $await_keyword as ?AwaitToken, + $using_keyword as UsingToken, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $expressions as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as RightParenToken, + $body as CompoundStatement, $source_ref, ); } @@ -160,7 +163,10 @@ final class UsingStatementBlockScoped extends Node implements IStatement { $await_keyword as ?AwaitToken, $using_keyword as UsingToken, $left_paren as LeftParenToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $expressions, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $expressions as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as RightParenToken, $body as CompoundStatement, ); diff --git a/codegen/syntax/UsingStatementFunctionScoped.hack b/codegen/syntax/UsingStatementFunctionScoped.hack index 4e906bb5..0fa8c48b 100644 --- a/codegen/syntax/UsingStatementFunctionScoped.hack +++ b/codegen/syntax/UsingStatementFunctionScoped.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<75403a071a8e5a8e393bb871af04d70e>> + * @generated SignedSource<<1ae625f14e2d5cb29ec322ff474b789a>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,10 @@ final class UsingStatementFunctionScoped extends Node implements IStatement { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $await_keyword, - /* HH_IGNORE_ERROR[4110] */ $using_keyword, - /* HH_IGNORE_ERROR[4110] */ $expression, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $await_keyword as ?AwaitToken, + $using_keyword as UsingToken, + $expression as IExpression, + $semicolon as SemicolonToken, $source_ref, ); } diff --git a/codegen/syntax/VariableExpression.hack b/codegen/syntax/VariableExpression.hack index a20bec88..b8ffeddc 100644 --- a/codegen/syntax/VariableExpression.hack +++ b/codegen/syntax/VariableExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<129f2bedc5905455fa3a1caec562e099>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -49,7 +49,7 @@ final class VariableExpression 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static(/* HH_IGNORE_ERROR[4110] */ $expression, $source_ref); + return new static($expression, $source_ref); } <<__Override>> diff --git a/codegen/syntax/VariadicParameter.hack b/codegen/syntax/VariadicParameter.hack index ea1bdab3..05e70d47 100644 --- a/codegen/syntax/VariadicParameter.hack +++ b/codegen/syntax/VariadicParameter.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<04d78aa16cf9bd211d7f42f234c55f00>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -75,9 +75,9 @@ final class VariadicParameter 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $call_convention, - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $ellipsis, + $call_convention, + $type as ?ITypeSpecifier, + $ellipsis as DotDotDotToken, $source_ref, ); } diff --git a/codegen/syntax/VarrayIntrinsicExpression.hack b/codegen/syntax/VarrayIntrinsicExpression.hack index 3f0be6d9..c1213299 100644 --- a/codegen/syntax/VarrayIntrinsicExpression.hack +++ b/codegen/syntax/VarrayIntrinsicExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<4e0f177b7cc4f66b320d25289b1b5a01>> + * @generated SignedSource<<41543b56a24801785e179dcc20183bf5>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -99,11 +99,14 @@ final class VarrayIntrinsicExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $explicit_type, - /* HH_IGNORE_ERROR[4110] */ $left_bracket, - /* HH_IGNORE_ERROR[4110] */ $members, - /* HH_IGNORE_ERROR[4110] */ $right_bracket, + $keyword as VarrayToken, + $explicit_type as ?TypeArguments, + $left_bracket as LeftBracketToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $members as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_bracket as RightBracketToken, $source_ref, ); } @@ -147,7 +150,10 @@ final class VarrayIntrinsicExpression $keyword as VarrayToken, $explicit_type as ?TypeArguments, $left_bracket as LeftBracketToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $members, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $members as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_bracket as RightBracketToken, ); } diff --git a/codegen/syntax/VarrayTypeSpecifier.hack b/codegen/syntax/VarrayTypeSpecifier.hack index aa05fad6..2484209c 100644 --- a/codegen/syntax/VarrayTypeSpecifier.hack +++ b/codegen/syntax/VarrayTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<8843c658e8f8664b762105b5f6249bd1>> + * @generated SignedSource<<0b93932094333281206c8e6961686d25>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -97,11 +97,11 @@ final class VarrayTypeSpecifier extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_angle, - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $trailing_comma, - /* HH_IGNORE_ERROR[4110] */ $right_angle, + $keyword as VarrayToken, + $left_angle as LessThanToken, + $type as ITypeSpecifier, + $trailing_comma as ?CommaToken, + $right_angle as GreaterThanToken, $source_ref, ); } diff --git a/codegen/syntax/VectorIntrinsicExpression.hack b/codegen/syntax/VectorIntrinsicExpression.hack index 1ceb5c46..cfa73767 100644 --- a/codegen/syntax/VectorIntrinsicExpression.hack +++ b/codegen/syntax/VectorIntrinsicExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<20ee103bc6bad664a262bf9a3821d327>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -99,11 +99,14 @@ final class VectorIntrinsicExpression 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $explicit_type, - /* HH_IGNORE_ERROR[4110] */ $left_bracket, - /* HH_IGNORE_ERROR[4110] */ $members, - /* HH_IGNORE_ERROR[4110] */ $right_bracket, + $keyword as VecToken, + $explicit_type as ?TypeArguments, + $left_bracket as LeftBracketToken, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $members as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_bracket as RightBracketToken, $source_ref, ); } @@ -147,7 +150,10 @@ final class VectorIntrinsicExpression $keyword as VecToken, $explicit_type as ?TypeArguments, $left_bracket as LeftBracketToken, - /* HH_FIXME[4110] ?NodeList> may not be enforceable */ $members, + \HH\FIXME\UNSAFE_CAST, ?NodeList>>( + $members as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_bracket as RightBracketToken, ); } diff --git a/codegen/syntax/VectorTypeSpecifier.hack b/codegen/syntax/VectorTypeSpecifier.hack index 7934b1f9..638ec6f7 100644 --- a/codegen/syntax/VectorTypeSpecifier.hack +++ b/codegen/syntax/VectorTypeSpecifier.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<5016c2894db9ddec04070aca9358f174>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -97,11 +97,11 @@ final class VectorTypeSpecifier extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_angle, - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $trailing_comma, - /* HH_IGNORE_ERROR[4110] */ $right_angle, + $keyword as VecToken, + $left_angle as LessThanToken, + $type as ITypeSpecifier, + $trailing_comma, + $right_angle as GreaterThanToken, $source_ref, ); } diff --git a/codegen/syntax/WhereClause.hack b/codegen/syntax/WhereClause.hack index 72b99dcc..8e1f6081 100644 --- a/codegen/syntax/WhereClause.hack +++ b/codegen/syntax/WhereClause.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<30ed4c31dd755410f451486d07f6d243>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -61,8 +61,14 @@ final class WhereClause extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $constraints, + $keyword as WhereToken, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >( + $constraints as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $source_ref, ); } @@ -89,7 +95,13 @@ final class WhereClause extends Node { } return new static( $keyword as WhereToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $constraints, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >( + $constraints as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), ); } diff --git a/codegen/syntax/WhereConstraint.hack b/codegen/syntax/WhereConstraint.hack index bca670f7..17675f66 100644 --- a/codegen/syntax/WhereConstraint.hack +++ b/codegen/syntax/WhereConstraint.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<82c89e9b354650c7f73cd2b9746122d3>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,9 @@ final class WhereConstraint extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_type, - /* HH_IGNORE_ERROR[4110] */ $operator, - /* HH_IGNORE_ERROR[4110] */ $right_type, + $left_type as ITypeSpecifier, + $operator as Token, + $right_type as ITypeSpecifier, $source_ref, ); } diff --git a/codegen/syntax/WhileStatement.hack b/codegen/syntax/WhileStatement.hack index 44c829ad..9912df23 100644 --- a/codegen/syntax/WhileStatement.hack +++ b/codegen/syntax/WhileStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<3ecca2c7ae6bab01b12a88f0b26821da>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -99,11 +99,11 @@ final class WhileStatement 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $condition, - /* HH_IGNORE_ERROR[4110] */ $right_paren, - /* HH_IGNORE_ERROR[4110] */ $body, + $keyword as WhileToken, + $left_paren as LeftParenToken, + $condition as IExpression, + $right_paren as RightParenToken, + $body as IStatement, $source_ref, ); } diff --git a/codegen/syntax/XHPCategoryDeclaration.hack b/codegen/syntax/XHPCategoryDeclaration.hack index 9bc679ba..71b4c89e 100644 --- a/codegen/syntax/XHPCategoryDeclaration.hack +++ b/codegen/syntax/XHPCategoryDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<78b113364cc5b8332ad5c3386461f178>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -74,12 +74,7 @@ final class XHPCategoryDeclaration 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $categories, - /* HH_IGNORE_ERROR[4110] */ $semicolon, - $source_ref, - ); + return new static($keyword, $categories, $semicolon, $source_ref); } <<__Override>> diff --git a/codegen/syntax/XHPChildrenDeclaration.hack b/codegen/syntax/XHPChildrenDeclaration.hack index 8a3c1509..b7098dea 100644 --- a/codegen/syntax/XHPChildrenDeclaration.hack +++ b/codegen/syntax/XHPChildrenDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<76fe66240618fb18aa4c5590f281ef51>> + * @generated SignedSource<<8bd694f84a5bff72041b4fe4d03e952a>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -75,9 +75,9 @@ final class XHPChildrenDeclaration 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $expression, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as ChildrenToken, + $expression, + $semicolon as SemicolonToken, $source_ref, ); } diff --git a/codegen/syntax/XHPChildrenParenthesizedList.hack b/codegen/syntax/XHPChildrenParenthesizedList.hack index f6a0b897..828d324b 100644 --- a/codegen/syntax/XHPChildrenParenthesizedList.hack +++ b/codegen/syntax/XHPChildrenParenthesizedList.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<5006cc5115ddb3505f2a21c47601f9c3>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -75,9 +75,12 @@ final class XHPChildrenParenthesizedList 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_paren, - /* HH_IGNORE_ERROR[4110] */ $xhp_children, - /* HH_IGNORE_ERROR[4110] */ $right_paren, + $left_paren as LeftParenToken, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $xhp_children as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $right_paren as RightParenToken, $source_ref, ); } @@ -110,7 +113,10 @@ final class XHPChildrenParenthesizedList } return new static( $left_paren as LeftParenToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $xhp_children, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $xhp_children as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $right_paren as RightParenToken, ); } diff --git a/codegen/syntax/XHPClassAttribute.hack b/codegen/syntax/XHPClassAttribute.hack index fd30e6b9..aaf1ff1a 100644 --- a/codegen/syntax/XHPClassAttribute.hack +++ b/codegen/syntax/XHPClassAttribute.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,10 @@ final class XHPClassAttribute extends Node implements IXHPAttribute { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $type, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $initializer, - /* HH_IGNORE_ERROR[4110] */ $required, + $type as ITypeSpecifier, + $name as XHPElementNameToken, + $initializer as ?SimpleInitializer, + $required, $source_ref, ); } diff --git a/codegen/syntax/XHPClassAttributeDeclaration.hack b/codegen/syntax/XHPClassAttributeDeclaration.hack index a4d42eee..6d3e0724 100644 --- a/codegen/syntax/XHPClassAttributeDeclaration.hack +++ b/codegen/syntax/XHPClassAttributeDeclaration.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<0520fe0589b0a3b3dd679cd9067b78e8>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -75,9 +75,12 @@ final class XHPClassAttributeDeclaration 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $attributes, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as AttributeToken, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $attributes as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + $semicolon as SemicolonToken, $source_ref, ); } @@ -110,7 +113,10 @@ final class XHPClassAttributeDeclaration } return new static( $keyword as AttributeToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $attributes, + \HH\FIXME\UNSAFE_CAST, NodeList>>( + $attributes as NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $semicolon as SemicolonToken, ); } diff --git a/codegen/syntax/XHPClose.hack b/codegen/syntax/XHPClose.hack index 485aca4e..35a9b69c 100644 --- a/codegen/syntax/XHPClose.hack +++ b/codegen/syntax/XHPClose.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<2baafe579c6f1a79cfac26fc9b6bc86d>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,9 @@ final class XHPClose extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_angle, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $right_angle, + $left_angle as LessThanSlashToken, + $name as XHPElementNameToken, + $right_angle as GreaterThanToken, $source_ref, ); } diff --git a/codegen/syntax/XHPEnumType.hack b/codegen/syntax/XHPEnumType.hack index 7bc18714..0457f471 100644 --- a/codegen/syntax/XHPEnumType.hack +++ b/codegen/syntax/XHPEnumType.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<<5f67159e81cd49357d668a65b372a0f3>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -96,11 +96,14 @@ final class XHPEnumType extends Node implements ITypeSpecifier { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $like, - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $values, - /* HH_IGNORE_ERROR[4110] */ $right_brace, + $like as ?TildeToken, + $keyword as EnumToken, + $left_brace as LeftBraceToken, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >($values as NodeList<_>, 'Open for sound approaches that are not O(n).'), + $right_brace as RightBraceToken, $source_ref, ); } @@ -141,7 +144,10 @@ final class XHPEnumType extends Node implements ITypeSpecifier { $like as ?TildeToken, $keyword as EnumToken, $left_brace as LeftBraceToken, - /* HH_FIXME[4110] NodeList> may not be enforceable */ $values, + \HH\FIXME\UNSAFE_CAST< + NodeList, + NodeList>, + >($values as NodeList<_>, 'Open for sound approaches that are not O(n).'), $right_brace as RightBraceToken, ); } diff --git a/codegen/syntax/XHPExpression.hack b/codegen/syntax/XHPExpression.hack index 699a7b58..204c1bee 100644 --- a/codegen/syntax/XHPExpression.hack +++ b/codegen/syntax/XHPExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<2b30232ff9bc91d0802cf242673a3ecb>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -71,9 +71,9 @@ final class XHPExpression extends Node implements ILambdaBody, IExpression { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $open, - /* HH_IGNORE_ERROR[4110] */ $body, - /* HH_IGNORE_ERROR[4110] */ $close, + $open as XHPOpen, + $body as ?NodeList<_>, + $close as ?XHPClose, $source_ref, ); } @@ -104,11 +104,8 @@ final class XHPExpression extends Node implements ILambdaBody, IExpression { ) { return $this; } - return new static( - $open as XHPOpen, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $body, - $close as ?XHPClose, - ); + return + new static($open as XHPOpen, $body as ?NodeList<_>, $close as ?XHPClose); } public function getOpenUNTYPED(): ?Node { diff --git a/codegen/syntax/XHPLateinit.hack b/codegen/syntax/XHPLateinit.hack index 77bafa82..9e95ef13 100644 --- a/codegen/syntax/XHPLateinit.hack +++ b/codegen/syntax/XHPLateinit.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -60,11 +60,7 @@ final class XHPLateinit extends Node { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $at, - /* HH_IGNORE_ERROR[4110] */ $keyword, - $source_ref, - ); + return new static($at as AtToken, $keyword as LateinitToken, $source_ref); } <<__Override>> diff --git a/codegen/syntax/XHPOpen.hack b/codegen/syntax/XHPOpen.hack index dc9c1f8e..0451c856 100644 --- a/codegen/syntax/XHPOpen.hack +++ b/codegen/syntax/XHPOpen.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<243e065f3cdf52e50e7fcb9bbaa641c2>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -84,10 +84,10 @@ final class XHPOpen extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_angle, - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $attributes, - /* HH_IGNORE_ERROR[4110] */ $right_angle, + $left_angle as LessThanToken, + $name as XHPElementNameToken, + $attributes as ?NodeList<_>, + $right_angle as Token, $source_ref, ); } @@ -126,7 +126,7 @@ final class XHPOpen extends Node { return new static( $left_angle as LessThanToken, $name as XHPElementNameToken, - /* HH_FIXME[4110] ?NodeList may not be enforceable */ $attributes, + $attributes as ?NodeList<_>, $right_angle as Token, ); } diff --git a/codegen/syntax/XHPRequired.hack b/codegen/syntax/XHPRequired.hack index 1d7a98f9..1fe2de39 100644 --- a/codegen/syntax/XHPRequired.hack +++ b/codegen/syntax/XHPRequired.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<46705c8705d026255e35ca7d6fb77378>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -60,11 +60,7 @@ final class XHPRequired extends Node { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $at, - /* HH_IGNORE_ERROR[4110] */ $keyword, - $source_ref, - ); + return new static($at as AtToken, $keyword as RequiredToken, $source_ref); } <<__Override>> diff --git a/codegen/syntax/XHPSimpleAttribute.hack b/codegen/syntax/XHPSimpleAttribute.hack index d38b18fe..60365f63 100644 --- a/codegen/syntax/XHPSimpleAttribute.hack +++ b/codegen/syntax/XHPSimpleAttribute.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<7a129a32ff5c764728e4330a7a660ee4>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,9 @@ final class XHPSimpleAttribute extends Node implements IXHPAttribute { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $name, - /* HH_IGNORE_ERROR[4110] */ $equal, - /* HH_IGNORE_ERROR[4110] */ $expression, + $name as XHPElementNameToken, + $equal as EqualToken, + $expression, $source_ref, ); } diff --git a/codegen/syntax/XHPSimpleClassAttribute.hack b/codegen/syntax/XHPSimpleClassAttribute.hack index ddcd3665..b7a3a2b2 100644 --- a/codegen/syntax/XHPSimpleClassAttribute.hack +++ b/codegen/syntax/XHPSimpleClassAttribute.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<0031d0c47275891b7a9c2c9c30b6f09f>> + * @generated SignedSource<<45556bfc5791b4810f3cb081a11b108e>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -48,7 +48,7 @@ final class XHPSimpleClassAttribute extends Node { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static(/* HH_IGNORE_ERROR[4110] */ $type, $source_ref); + return new static($type as SimpleTypeSpecifier, $source_ref); } <<__Override>> diff --git a/codegen/syntax/XHPSpreadAttribute.hack b/codegen/syntax/XHPSpreadAttribute.hack index 20cf081e..c756d371 100644 --- a/codegen/syntax/XHPSpreadAttribute.hack +++ b/codegen/syntax/XHPSpreadAttribute.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<1f8fc7f2d9a70e828e518ffff09c6d06>> + * @generated SignedSource<> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -85,10 +85,10 @@ final class XHPSpreadAttribute extends Node { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $left_brace, - /* HH_IGNORE_ERROR[4110] */ $spread_operator, - /* HH_IGNORE_ERROR[4110] */ $expression, - /* HH_IGNORE_ERROR[4110] */ $right_brace, + $left_brace as LeftBraceToken, + $spread_operator as DotDotDotToken, + $expression as IExpression, + $right_brace as RightBraceToken, $source_ref, ); } diff --git a/codegen/syntax/YieldBreakStatement.hack b/codegen/syntax/YieldBreakStatement.hack index a3aedc12..e8bca9b9 100644 --- a/codegen/syntax/YieldBreakStatement.hack +++ b/codegen/syntax/YieldBreakStatement.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<6e6f7f480fbda88fab58539d7fb20e14>> + * @generated SignedSource<<0328d493491ee657ec91e6bdca21e2b6>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -73,9 +73,9 @@ final class YieldBreakStatement extends Node implements IStatement { 'width' => $offset - $initial_offset, ); return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $break, - /* HH_IGNORE_ERROR[4110] */ $semicolon, + $keyword as YieldToken, + $break as BreakToken, + $semicolon as SemicolonToken, $source_ref, ); } diff --git a/codegen/syntax/YieldExpression.hack b/codegen/syntax/YieldExpression.hack index 6aec472c..4ae657df 100644 --- a/codegen/syntax/YieldExpression.hack +++ b/codegen/syntax/YieldExpression.hack @@ -1,7 +1,7 @@ /** * This file is generated. Do not modify it manually! * - * @generated SignedSource<<495da4597cdf5cd7940e68966f534ff5>> + * @generated SignedSource<<7dffda834ccc88c474ca3e8c59e4faca>> */ namespace Facebook\HHAST; use namespace Facebook\TypeAssert; @@ -59,11 +59,7 @@ final class YieldExpression extends Node implements ILambdaBody, IExpression { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_IGNORE_ERROR[4110] */ $keyword, - /* HH_IGNORE_ERROR[4110] */ $operand, - $source_ref, - ); + return new static($keyword as YieldToken, $operand, $source_ref); } <<__Override>> diff --git a/src/Migrations/TypedMigrationStep.hack b/src/Migrations/TypedMigrationStep.hack index afcba766..91daa3f2 100644 --- a/src/Migrations/TypedMigrationStep.hack +++ b/src/Migrations/TypedMigrationStep.hack @@ -33,7 +33,11 @@ final class TypedMigrationStep if (!\is_a($node, $this->tin)) { return $node; } + $node = \HH\FIXME\UNSAFE_CAST( + $node, + 'is_a($node, $this->tin) ~= $node is Tin', + ); $rewriter = $this->rewriter; - return $rewriter(/* HH_FIXME[4110] need reified generics */ $node); + return $rewriter($node); } } diff --git a/src/__Private/NodeImplementationDetails.hack b/src/__Private/NodeImplementationDetails.hack index 57b64701..2bece022 100644 --- a/src/__Private/NodeImplementationDetails.hack +++ b/src/__Private/NodeImplementationDetails.hack @@ -11,8 +11,8 @@ namespace Facebook\HHAST\__Private; use type Facebook\HHAST\Node; -/* HH_IGNORE_ERROR[4047] not implementing abstract methods */ -abstract final class NodeImplementationDetails extends Node { +<<__Sealed()>> +abstract class NodeImplementationDetails extends Node { const string SYNTAX_KIND = 'hhast_nonimplementable'; public static function getSourceRef(Node $node): ?SourceRef { return $node->sourceRef; diff --git a/src/__Private/codegen/CodegenRelations.hack b/src/__Private/codegen/CodegenRelations.hack index 349dbcda..914f41ac 100644 --- a/src/__Private/codegen/CodegenRelations.hack +++ b/src/__Private/codegen/CodegenRelations.hack @@ -398,7 +398,7 @@ final class CodegenRelations extends CodegenBase { } } - return /* HH_FIXME[4110] dynamic to real type */ $ret; + return \HH\FIXME\UNSAFE_CAST>>($ret); } // If some valid syntax isn't in the HHVM/Hack tests, use it here to make sure diff --git a/src/__Private/codegen/CodegenSyntax.hack b/src/__Private/codegen/CodegenSyntax.hack index e0c9ad5f..1ea84328 100644 --- a/src/__Private/codegen/CodegenSyntax.hack +++ b/src/__Private/codegen/CodegenSyntax.hack @@ -116,12 +116,11 @@ final class CodegenSyntax extends CodegenBase { ->addProperties( Vec\map( $syntax['fields'], - $field ==> { - $spec = $this->getTypeSpecForField($syntax, $field['field_name']); - return $cg - ->codegenProperty('_'.$field['field_name']) - ->setType(($spec['nullable'] ? '?' : '').$spec['class']); - }, + $field ==> $cg + ->codegenProperty('_'.$field['field_name']) + ->setType(static::getTypeTextForSpec( + $this->getTypeSpecForField($syntax, $field['field_name']), + )), ), ); } @@ -211,7 +210,7 @@ final class CodegenSyntax extends CodegenBase { $spec = $this->getTypeSpecForField($syntax, $underscored); $upper_camel = StrP\upper_camel($underscored); $types = $spec['possibleTypes']; - $type = $spec['nullable'] ? ('?'.$spec['class']) : $spec['class']; + $type = static::getTypeTextForSpec($spec); // AttributeAsAttributeSpecTrait declares some abstract methods // we need to <<__Override>> them in these classes. $needs_override_for_attribute_methods = ( @@ -326,15 +325,13 @@ final class CodegenSyntax extends CodegenBase { ->addParameters( Vec\map( $syntax['fields'], - $field ==> { - $spec = $this->getTypeSpecForField($syntax, $field['field_name']); - return Str\format( - '%s%s $%s', - $spec['nullable'] ? '?' : '', - $spec['class'], - $field['field_name'], - ); - }, + $field ==> Str\format( + '%s $%s', + static::getTypeTextForSpec( + $this->getTypeSpecForField($syntax, $field['field_name']), + ), + $field['field_name'], + ), ), ) ->addParameter('?__Private\\SourceRef $source_ref = null') @@ -438,7 +435,17 @@ final class CodegenSyntax extends CodegenBase { Vec\concat( Vec\map( $syntax['fields'], - $field ==> '/* HH_IGNORE_ERROR[4110] */ $'.$field['field_name'], + $field ==> { + $spec = + $this->getTypeSpecForField($syntax, $field['field_name']); + return static::tryToEnforceType( + shape( + 'expression' => '$'.$field['field_name'], + 'expected_type' => static::getTypeTextForSpec($spec), + 'source_type' => $spec['nullable'] ? '?Node' : 'Node', + ), + ); + }, ), vec['$source_ref'], ), @@ -537,18 +544,12 @@ final class CodegenSyntax extends CodegenBase { 'new static', Vec\map( $fields, - $field ==> { - $type = $this->getTypeSpecForField($syntax, $field) - |> $$['nullable'] ? '?'.$$['class'] : $$['class']; - $enforceable = Str\format('$%s as %s', $field, $type); - $not_enforceable = Str\format( - '/* HH_FIXME[4110] %s may not be enforceable */ $%s', - $type, - $field, - ); - return $type - |> Str\contains($$, '<') ? $not_enforceable : $enforceable; - }, + $field ==> static::tryToEnforceType(shape( + 'expression' => '$'.$field, + 'expected_type' => $this->getTypeSpecForField($syntax, $field) + |> $$['nullable'] ? '?'.$$['class'] : $$['class'], + 'source_type' => '?Tret', + )), ), ) ->getCode(), @@ -706,4 +707,57 @@ final class CodegenSyntax extends CodegenBase { ], ]; } + + private static function getTypeTextForSpec(self::TFieldSpec $spec)[]: string { + return ($spec['nullable'] ? '?' : '').$spec['class']; + } + + private static function tryToEnforceType( + shape( + 'expression' => string, + 'expected_type' => string, + 'source_type' => string, + ) $args, + )[]: string { + $expression = $args['expression']; + $expected_type = $args['expected_type']; + $source_type = $args['source_type']; + if ($expected_type === $source_type) { + return $expression; + } + + $generic_left_angle = Str\search($expected_type, '<'); + + // No generics, fully enforceable! + if ($generic_left_angle is null) { + return $expression.' as '.$expected_type; + } + + $base_type = Str\slice($expected_type, 0, $generic_left_angle); + $open_generic = $base_type.'<_>'; + + $is_node_listy = $base_type === 'NodeList' || $base_type === '?NodeList'; + $is_list_itemy = $base_type === 'ListItem' || $base_type === '?ListItem'; + + invariant( + $is_node_listy || $is_list_itemy, + 'Expand %s to support %s.', + __METHOD__, + $base_type, + ); + + $upper_bound = $base_type.($is_node_listy ? '' : ''); + + $best_effort_fixme = Str\format( + '\\HH\\FIXME\\UNSAFE_CAST<%s, %s>(%s as %s, \'Open for sound approaches that are not O(n).\')', + $upper_bound, + $expected_type, + $expression, + $open_generic, + ); + + return $upper_bound === $expected_type + ? $expression.' as '.$open_generic + : $best_effort_fixme; + } } diff --git a/src/__Private/type_alias_structure.hack b/src/__Private/type_alias_structure.hack index f1aa08a9..c3e6e530 100644 --- a/src/__Private/type_alias_structure.hack +++ b/src/__Private/type_alias_structure.hack @@ -10,5 +10,5 @@ namespace Facebook\HHAST\__Private; function type_alias_structure(typename $type): TypeStructure { - return /* HH_IGNORE_ERROR[4104] */ type_structure($type); + return \HH\type_structure_for_alias($type); } diff --git a/src/nodes/ListItem.hack b/src/nodes/ListItem.hack index 97086c77..9ce124f0 100644 --- a/src/nodes/ListItem.hack +++ b/src/nodes/ListItem.hack @@ -68,11 +68,7 @@ final class ListItem<+T as ?Node> extends Node { 'offset' => $initial_offset, 'width' => $offset - $initial_offset, ); - return new static( - /* HH_FIXME[4110] Expected T, got ?Node */ $item, - $separator as ?Token, - $source_ref, - ); + return new static($item, $separator as ?Token, $source_ref); } <<__Override>> @@ -99,7 +95,7 @@ final class ListItem<+T as ?Node> extends Node { if ($item === $this->_item && $separator === $this->_separator) { return $this; } - return new static(/* HH_FIXME[4110] */ $item, $separator); + return new static($item, $separator); } public function withItem( @@ -121,7 +117,7 @@ final class ListItem<+T as ?Node> extends Node { public function getItem(): T { if ($this->_item === null) { - return /* HH_FIXME[4110] trust that T is nullable */ null; + return \HH\FIXME\UNSAFE_CAST(null, 'trust that T is nullable'); } return $this->_item; } diff --git a/src/nodes/Node.hack b/src/nodes/Node.hack index 7dfa6fd7..68278f1c 100644 --- a/src/nodes/Node.hack +++ b/src/nodes/Node.hack @@ -76,10 +76,13 @@ abstract class Node implements IMemoizeParam { $out = dict[]; foreach ($this->getChildren() as $k => $node) { if (\is_a($node, $what)) { - $out[$k] = $node; + $out[$k] = \HH\FIXME\UNSAFE_CAST( + $node, + 'is_a($node, $what) ~= $node is T', + ); } } - return /* HH_FIXME[4110] need reified generics */ $out; + return $out; } final public function getChildrenByType<<<__Enforceable>> reify T as Node>( @@ -161,10 +164,13 @@ abstract class Node implements IMemoizeParam { $out = vec[]; foreach ($this->_descendants as $node) { if (\is_a($node, $what)) { - $out[] = $node; + $out[] = \HH\FIXME\UNSAFE_CAST( + $node, + 'is_a($node, $what) ~= $node is T', + ); } } - return /* HH_FIXME[4110] need reified generics */ $out; + return $out; } final public function getDescendantsByType<<<__Enforceable>> reify T as Node>( @@ -184,7 +190,10 @@ abstract class Node implements IMemoizeParam { ): ?T { foreach ($this->_descendants as $node) { if (\is_a($node, $what)) { - return /* HH_FIXME[4110] need reified generics */ $node; + return \HH\FIXME\UNSAFE_CAST( + $node, + 'is_a($node, $what) ~= $node is T', + ); } } return null; diff --git a/src/nodes/NodeList.hack b/src/nodes/NodeList.hack index e0450411..13f05f6b 100644 --- a/src/nodes/NodeList.hack +++ b/src/nodes/NodeList.hack @@ -130,12 +130,14 @@ final class NodeList<+Titem as Node> extends Node { $current_position, $source, $type_hint, - ) as nonnull; + ) as nonnull + |> \HH\FIXME\UNSAFE_CAST($$, 'Titem can not be enforced.'); + $children[] = $child; $current_position += $child->getWidth(); } return new NodeList( - /* HH_FIXME[4110] Expected vec, got vec */ $children, + $children, shape( 'file' => $file, 'source' => $source, @@ -160,23 +162,32 @@ final class NodeList<+Titem as Node> extends Node { continue; } if ($new is NodeList<_>) { + $new = \HH\FIXME\UNSAFE_CAST, NodeList>( + $new, + 'Signature inherited. Fixing the param type would take a lot of effort.', + ); $new_children = Vec\concat($new_children, $new->getChildren()); continue; } - $new_children[] = $new; + $new_children[] = \HH\FIXME\UNSAFE_CAST( + $new, + 'Signature inherited. Fixing the param type would take a lot of effort.', + ); } if ($old_children === $new_children) { return $this; } - return new NodeList( - /* HH_FIXME[4110] Expected vec, got vec*/ Vec\filter_nulls($new_children) - ); + return new NodeList(Vec\filter_nulls($new_children)); } <<__Override>> protected function replaceImpl(int $old_id, Node $new): this { + $new = \HH\FIXME\UNSAFE_CAST( + $new, + 'Signature inherited. Fixing the param type would take a lot of effort.', + ); $children = $this->_children; foreach ($children as $idx => $child) { if ($child->getUniqueID() === $old_id) { @@ -189,10 +200,7 @@ final class NodeList<+Titem as Node> extends Node { $children[$idx] = $child->replaceImpl($old_id, $new); break; } - return new self( - /* HH_FIXME[4110] Expected vec, got vec */ - Vec\filter_nulls($children) - ); + return new self(Vec\filter_nulls($children)); } public function replaceChild( diff --git a/src/nodes/Token.hack b/src/nodes/Token.hack index 69192342..3a48bf0a 100644 --- a/src/nodes/Token.hack +++ b/src/nodes/Token.hack @@ -119,7 +119,9 @@ abstract class Token extends Node { string $_type_hint, ): Token { $leading_list = __Private\fold_map, Trivia, int>( - /* HH_FIXME[4110] need like types */ $json['leading'], + \HH\FIXME\UNSAFE_CAST>>( + $json['leading'], + ), ($j, $p) ==> Trivia::fromJSON($j, $file, $p, $source, 'Node'), ($j, $p) ==> $j['width'] as int + $p, $offset, @@ -142,7 +144,9 @@ abstract class Token extends Node { $token_text = Str\slice($source, $token_position, $token_width); $trailing_position = $token_position + $token_width; $trailing_list = __Private\fold_map, Trivia, int>( - /* HH_FIXME[4110] need like-types */ $json['trailing'], + \HH\FIXME\UNSAFE_CAST>>( + $json['trailing'], + ), ($j, $p) ==> Trivia::fromJSON($j, $file, $p, $source, 'Node'), ($j, $p) ==> $j['width'] as int + $p, $trailing_position, diff --git a/src/nodes/TokenWithFixedText.hack b/src/nodes/TokenWithFixedText.hack index 2b046172..17aedc4a 100644 --- a/src/nodes/TokenWithFixedText.hack +++ b/src/nodes/TokenWithFixedText.hack @@ -39,8 +39,14 @@ abstract class TokenWithFixedText extends Token { return $this; } return new static( - /* HH_FIXME[4110] */ $leading, - /* HH_FIXME[4110] */ $trailing, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $leading as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $trailing as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), null, ); } diff --git a/src/nodes/TokenWithVariableText.hack b/src/nodes/TokenWithVariableText.hack index cc8c8b29..98626b21 100644 --- a/src/nodes/TokenWithVariableText.hack +++ b/src/nodes/TokenWithVariableText.hack @@ -39,8 +39,14 @@ abstract class TokenWithVariableText extends Token { return $this; } return new static( - /* HH_FIXME[4110] */ $leading, - /* HH_FIXME[4110] */ $trailing, + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $leading as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), + \HH\FIXME\UNSAFE_CAST, ?NodeList>( + $trailing as ?NodeList<_>, + 'Open for sound approaches that are not O(n).', + ), $this->getText(), null, ); diff --git a/src/nodes/WrapperNode.hack b/src/nodes/WrapperNode.hack index ff867eb4..165d8566 100644 --- a/src/nodes/WrapperNode.hack +++ b/src/nodes/WrapperNode.hack @@ -43,6 +43,9 @@ abstract class WrapperNode extends Node { return $this; } - return new static(/* HH_FIXME[4110] need <<__Enforceable>> */ $new); + return new static(\HH\FIXME\UNSAFE_CAST( + $new, + 'TWrapped can not be made enforceable, because of StatementList.', + )); } } diff --git a/tests/ConfigurationRestrictionsTest.hack b/tests/ConfigurationRestrictionsTest.hack index c782ac22..1fdb234d 100644 --- a/tests/ConfigurationRestrictionsTest.hack +++ b/tests/ConfigurationRestrictionsTest.hack @@ -185,11 +185,10 @@ final class ConfigurationRestrictionsTest extends HackTest { } private static function toTypeStructure(): \HH\TypeStructure { - /*HH_IGNORE_ERROR[4110] - All typestructures should be allowed, but TypeStructure is invariant. - Putting a suppression comment here is - preferable over suppressing an entire vec of testcases.*/ - return \HH\ReifiedGenerics\get_type_structure(); + return \HH\FIXME\UNSAFE_CAST< + \HH\TypeStructure, + \HH\TypeStructure, + >(\HH\ReifiedGenerics\get_type_structure()); } }