Skip to content

Commit

Permalink
HHVM test
Browse files Browse the repository at this point in the history
Summary: Add an HHVM test to make sure that HHVM accepts the new syntax. Tuple types are enforced as `varray` so there is no special logic required in HackC.

Reviewed By: francesco-zappa-nardelli

Differential Revision: D62936216

fbshipit-source-id: 2d0bc2cddeb1a8ce407014047c2fe39ffc44f8b9
  • Loading branch information
Andrew Kennedy authored and facebook-github-bot committed Sep 19, 2024
1 parent 7d7f1af commit 4f82738
Show file tree
Hide file tree
Showing 4 changed files with 145 additions and 0 deletions.
46 changes: 46 additions & 0 deletions hphp/test/slow/open_tuples/tuple_open_sub.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?hh

<<file: __EnableUnstableFeatures('open_tuples')>>

function expectAnyTuple((mixed...) $x): void {
var_dump($x);
}
function expectAnyArraykeyTuple((arraykey...) $x): void {
expectAnyTuple($x);
var_dump($x);
}
function expectAtLeastInt((int, mixed...) $x): void {
expectAnyTuple($x);
var_dump($x);
}
function expectIntThenMaybeString((int, optional string) $x): void {
expectAnyTuple($x);
expectAnyArraykeyTuple($x);
var_dump($x);
}
function expectIntThenMaybeArraykeyThenMaybeBool(
(int, optional arraykey, optional bool) $x,
): void {
expectAnyTuple($x);
expectAtLeastInt($x);
var_dump($x);
}

<<__EntryPoint>>
function test_closed_sub(): void {
$none = tuple();
$one = tuple(1);
$two = tuple(1, 'a');
expectAnyTuple($none);
expectAnyTuple($one);
expectAnyTuple($two);
expectAnyArraykeyTuple($none);
expectAnyArraykeyTuple($one);
expectAnyArraykeyTuple($two);
expectAtLeastInt($one);
expectAtLeastInt($two);
expectIntThenMaybeString($one);
expectIntThenMaybeString($two);
expectIntThenMaybeArraykeyThenMaybeBool($one);
expectIntThenMaybeArraykeyThenMaybeBool($two);
}
97 changes: 97 additions & 0 deletions hphp/test/slow/open_tuples/tuple_open_sub.php.expect
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
vec(0) {
}
vec(1) {
int(1)
}
vec(2) {
int(1)
string(1) "a"
}
vec(0) {
}
vec(0) {
}
vec(1) {
int(1)
}
vec(1) {
int(1)
}
vec(2) {
int(1)
string(1) "a"
}
vec(2) {
int(1)
string(1) "a"
}
vec(1) {
int(1)
}
vec(1) {
int(1)
}
vec(2) {
int(1)
string(1) "a"
}
vec(2) {
int(1)
string(1) "a"
}
vec(1) {
int(1)
}
vec(1) {
int(1)
}
vec(1) {
int(1)
}
vec(1) {
int(1)
}
vec(2) {
int(1)
string(1) "a"
}
vec(2) {
int(1)
string(1) "a"
}
vec(2) {
int(1)
string(1) "a"
}
vec(2) {
int(1)
string(1) "a"
}
vec(1) {
int(1)
}
vec(1) {
int(1)
}
vec(1) {
int(1)
}
vec(1) {
int(1)
}
vec(2) {
int(1)
string(1) "a"
}
vec(2) {
int(1)
string(1) "a"
}
vec(2) {
int(1)
string(1) "a"
}
vec(2) {
int(1)
string(1) "a"
}
1 change: 1 addition & 0 deletions hphp/test/slow/open_tuples/tuple_open_sub.php.hphp_opts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-vRuntime.Hack.Lang.AllowUnstableFeatures=1
1 change: 1 addition & 0 deletions hphp/test/slow/open_tuples/tuple_open_sub.php.opts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-vHack.Lang.AllowUnstableFeatures=1

0 comments on commit 4f82738

Please sign in to comment.