forked from hhvm/hhast
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBaseMigration.hack
More file actions
64 lines (55 loc) · 1.68 KB
/
Copy pathBaseMigration.hack
File metadata and controls
64 lines (55 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
* Copyright (c) 2017-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
namespace Facebook\HHAST;
use namespace HH\Lib\C;
use type Facebook\HHAST\Script;
<<__ConsistentConstruct>>
abstract class BaseMigration {
public function __construct(private string $root) {
}
final protected function getRoot(): string {
return $this->root;
}
/**
* Subclasses can override these if they depend on a specific HHVM version or
* .hhconfig option.
*/
public static function getMinimumHHVMVersion(): ?string {
return null;
}
/**
* If your subclass returns any .hhconfig options here, also add the same
* options to your test's migration_name.hack.hhconfig file.
*/
public static function getRequiredHHConfigOptions(): dict<string, string> {
return dict[];
}
abstract public function migrateFile(string $path, Script $ast): Script;
protected static async function expressionFromCodeAsync(
string $code,
): Awaitable<IExpression> {
$script = await from_file_async(
File::fromPathAndContents('/dev/null', '$_='.$code.';'),
);
return $script->getDeclarations()
->getChildren()
|> C\firstx($$) as ExpressionStatement
|> $$->getExpression() as BinaryExpression
|> $$->getRightOperand();
}
protected static async function statementFromCodeAsync(
string $code,
): Awaitable<IStatement> {
$script = await from_file_async(
File::fromPathAndContents('/dev/null', $code),
);
return $script->getDeclarations()->getChildren()
|> C\firstx($$) as IStatement;
}
}