Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15366969
D21742.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
16 KB
Referenced Files
None
Subscribers
None
D21742.diff
View Options
diff --git a/src/configuration/ArcanistConfigurationManager.php b/src/configuration/ArcanistConfigurationManager.php
--- a/src/configuration/ArcanistConfigurationManager.php
+++ b/src/configuration/ArcanistConfigurationManager.php
@@ -258,7 +258,7 @@
}
public function getUserConfigurationFileLocation() {
- if (strlen($this->customArcrcFilename)) {
+ if ($this->customArcrcFilename !== null) {
return $this->customArcrcFilename;
}
diff --git a/src/filesystem/PhutilDirectoryFixture.php b/src/filesystem/PhutilDirectoryFixture.php
--- a/src/filesystem/PhutilDirectoryFixture.php
+++ b/src/filesystem/PhutilDirectoryFixture.php
@@ -28,6 +28,8 @@
}
public function getPath($to_file = null) {
+ $to_file = phutil_string_cast($to_file);
+
return $this->path.'/'.ltrim($to_file, '/');
}
diff --git a/src/future/exec/ExecFuture.php b/src/future/exec/ExecFuture.php
--- a/src/future/exec/ExecFuture.php
+++ b/src/future/exec/ExecFuture.php
@@ -192,11 +192,18 @@
* @task interact
*/
public function read() {
- $stdout = $this->readStdout();
+ $stdout_value = $this->readStdout();
+
+ $stderr = $this->stderr;
+ if ($stderr === null) {
+ $stderr_value = '';
+ } else {
+ $stderr_value = substr($stderr, $this->stderrPos);
+ }
$result = array(
- $stdout,
- (string)substr($this->stderr, $this->stderrPos),
+ $stdout_value,
+ $stderr_value,
);
$this->stderrPos = $this->getStderrBufferLength();
@@ -209,7 +216,14 @@
$this->updateFuture(); // Sync
}
- $result = (string)substr($this->stdout, $this->stdoutPos);
+ $stdout = $this->stdout;
+
+ if ($stdout === null) {
+ $result = '';
+ } else {
+ $result = substr($stdout, $this->stdoutPos);
+ }
+
$this->stdoutPos = $this->getStdoutBufferLength();
return $result;
diff --git a/src/lint/linter/ArcanistXMLLinter.php b/src/lint/linter/ArcanistXMLLinter.php
--- a/src/lint/linter/ArcanistXMLLinter.php
+++ b/src/lint/linter/ArcanistXMLLinter.php
@@ -27,7 +27,11 @@
}
public function getCacheVersion() {
- return LIBXML_VERSION;
+ if (defined('LIBXML_VERSION')) {
+ return LIBXML_VERSION;
+ } else {
+ return 'unavailable';
+ }
}
public function lintPath($path) {
diff --git a/src/lint/linter/__tests__/ArcanistLinterTestCase.php b/src/lint/linter/__tests__/ArcanistLinterTestCase.php
--- a/src/lint/linter/__tests__/ArcanistLinterTestCase.php
+++ b/src/lint/linter/__tests__/ArcanistLinterTestCase.php
@@ -51,6 +51,13 @@
private function lintFile($file, ArcanistLinter $linter) {
$linter = clone $linter;
+ if (!$linter->canRun()) {
+ $this->assertSkipped(
+ pht(
+ 'Linter "%s" can not run.',
+ get_class($linter)));
+ }
+
$contents = Filesystem::readFile($file);
$contents = preg_split('/^~{4,}\n/m', $contents);
if (count($contents) < 2) {
@@ -283,9 +290,12 @@
}
private function compareTransform($expected, $actual) {
+ $expected = phutil_string_cast($expected);
+
if (!strlen($expected)) {
return;
}
+
$this->assertEqual(
$expected,
$actual,
diff --git a/src/lint/linter/xhpast/rules/ArcanistPHPCompatibilityXHPASTLinterRule.php b/src/lint/linter/xhpast/rules/ArcanistPHPCompatibilityXHPASTLinterRule.php
--- a/src/lint/linter/xhpast/rules/ArcanistPHPCompatibilityXHPASTLinterRule.php
+++ b/src/lint/linter/xhpast/rules/ArcanistPHPCompatibilityXHPASTLinterRule.php
@@ -155,7 +155,9 @@
if ($this->windowsVersion) {
$windows = idx($compat_info['functions_windows'], $name);
- if ($windows === false) {
+ if ($windows === null) {
+ // This function has no special Windows considerations.
+ } else if ($windows === false) {
$this->raiseLintAtNode(
$node,
pht(
diff --git a/src/lint/linter/xhpast/rules/ArcanistParentMemberReferenceXHPASTLinterRule.php b/src/lint/linter/xhpast/rules/ArcanistParentMemberReferenceXHPASTLinterRule.php
--- a/src/lint/linter/xhpast/rules/ArcanistParentMemberReferenceXHPASTLinterRule.php
+++ b/src/lint/linter/xhpast/rules/ArcanistParentMemberReferenceXHPASTLinterRule.php
@@ -55,7 +55,12 @@
}
}
- if (version_compare($this->version, '5.4.0', '>=') || !$in_closure) {
+ $version_target = $this->version;
+ if ($version_target === null) {
+ $version_target = phpversion();
+ }
+
+ if (version_compare($version_target, '5.4.0', '>=') || !$in_closure) {
$this->raiseLintAtNode(
$class_ref,
pht(
diff --git a/src/lint/linter/xhpast/rules/ArcanistSelfMemberReferenceXHPASTLinterRule.php b/src/lint/linter/xhpast/rules/ArcanistSelfMemberReferenceXHPASTLinterRule.php
--- a/src/lint/linter/xhpast/rules/ArcanistSelfMemberReferenceXHPASTLinterRule.php
+++ b/src/lint/linter/xhpast/rules/ArcanistSelfMemberReferenceXHPASTLinterRule.php
@@ -42,7 +42,12 @@
}
}
- if (version_compare($this->version, '5.4.0', '>=') || !$in_closure) {
+ $version_target = $this->version;
+ if (!$version_target) {
+ $version_target = phpversion();
+ }
+
+ if (version_compare($version_target, '5.4.0', '>=') || !$in_closure) {
$this->raiseLintAtNode(
$class_ref,
pht(
diff --git a/src/parser/ArcanistBundle.php b/src/parser/ArcanistBundle.php
--- a/src/parser/ArcanistBundle.php
+++ b/src/parser/ArcanistBundle.php
@@ -639,8 +639,7 @@
$old_path = $change->getOldPath();
$type = $change->getType();
- if (!strlen($old_path) ||
- $type == ArcanistDiffChangeType::TYPE_ADD) {
+ if ($old_path === '' || $type == ArcanistDiffChangeType::TYPE_ADD) {
$old_path = null;
}
@@ -1023,7 +1022,7 @@
if ($is_64bit) {
for ($count = 4; $count >= 0; $count--) {
$val = $accum % 85;
- $accum = $accum / 85;
+ $accum = (int)($accum / 85);
$slice .= $map[$val];
}
} else {
diff --git a/src/parser/ArcanistDiffParser.php b/src/parser/ArcanistDiffParser.php
--- a/src/parser/ArcanistDiffParser.php
+++ b/src/parser/ArcanistDiffParser.php
@@ -217,7 +217,7 @@
$line = $this->nextLine();
}
- if (strlen($message)) {
+ if ($message !== null && strlen($message)) {
// If we found a message during pre-parse steps, add it to the resulting
// changes here.
$change = $this->buildChange(null)
@@ -582,10 +582,13 @@
$ok = false;
$match = null;
- foreach ($patterns as $pattern) {
- $ok = preg_match('@^'.$pattern.'@', $line, $match);
- if ($ok) {
- break;
+
+ if ($line !== null) {
+ foreach ($patterns as $pattern) {
+ $ok = preg_match('@^'.$pattern.'@', $line, $match);
+ if ($ok) {
+ break;
+ }
}
}
@@ -774,7 +777,7 @@
$this->nextLine();
$this->parseGitBinaryPatch();
$line = $this->getLine();
- if (preg_match('/^literal/', $line)) {
+ if ($line !== null && preg_match('/^literal/', $line)) {
// We may have old/new binaries (change) or just a new binary (hg add).
// If there are two blocks, parse both.
$this->parseGitBinaryPatch();
@@ -920,11 +923,11 @@
$hunk->setNewOffset($matches[3]);
// Cover for the cases where length wasn't present (implying one line).
- $old_len = idx($matches, 2);
+ $old_len = idx($matches, 2, '');
if (!strlen($old_len)) {
$old_len = 1;
}
- $new_len = idx($matches, 4);
+ $new_len = idx($matches, 4, '');
if (!strlen($new_len)) {
$new_len = 1;
}
@@ -1041,7 +1044,7 @@
$line = $this->nextNonemptyLine();
}
- } while (preg_match('/^@@ /', $line));
+ } while (($line !== null) && preg_match('/^@@ /', $line));
}
protected function buildChange($path = null) {
diff --git a/src/parser/PhutilBugtraqParser.php b/src/parser/PhutilBugtraqParser.php
--- a/src/parser/PhutilBugtraqParser.php
+++ b/src/parser/PhutilBugtraqParser.php
@@ -85,7 +85,7 @@
$captured_text = $capture['text'];
$captured_offset = $capture['at'];
- if (strlen($select_regexp)) {
+ if ($select_regexp !== null) {
$selections = null;
preg_match_all(
$select_regexp,
diff --git a/src/parser/PhutilEmailAddress.php b/src/parser/PhutilEmailAddress.php
--- a/src/parser/PhutilEmailAddress.php
+++ b/src/parser/PhutilEmailAddress.php
@@ -13,6 +13,7 @@
private $domainName;
public function __construct($email_address = null) {
+ $email_address = phutil_string_cast($email_address);
$email_address = trim($email_address);
$matches = null;
@@ -89,7 +90,7 @@
public function getAddress() {
$address = $this->localPart;
- if (strlen($this->domainName)) {
+ if ($this->domainName !== null && strlen($this->domainName)) {
$address .= '@'.$this->domainName;
}
return $address;
diff --git a/src/parser/PhutilURI.php b/src/parser/PhutilURI.php
--- a/src/parser/PhutilURI.php
+++ b/src/parser/PhutilURI.php
@@ -171,14 +171,19 @@
}
}
- if (strlen($protocol) || strlen($auth) || strlen($domain)) {
+ $has_protocol = ($protocol !== null) && strlen($protocol);
+ $has_auth = ($auth !== null);
+ $has_domain = ($domain !== null) && strlen($domain);
+ $has_port = ($port !== null) && strlen($port);
+
+ if ($has_protocol || $has_auth || $has_domain) {
if ($this->isGitURI()) {
$prefix = "{$auth}{$domain}";
} else {
$prefix = "{$protocol}://{$auth}{$domain}";
}
- if (strlen($port)) {
+ if ($has_port) {
$prefix .= ':'.$port;
}
}
diff --git a/src/parser/aast/api/AASTNodeList.php b/src/parser/aast/api/AASTNodeList.php
--- a/src/parser/aast/api/AASTNodeList.php
+++ b/src/parser/aast/api/AASTNodeList.php
@@ -80,6 +80,7 @@
/* -( Countable )---------------------------------------------------------- */
+ #[\ReturnTypeWillChange]
public function count() {
return count($this->ids);
}
@@ -87,22 +88,27 @@
/* -( Iterator )----------------------------------------------------------- */
+ #[\ReturnTypeWillChange]
public function current() {
return $this->list[$this->key()];
}
+ #[\ReturnTypeWillChange]
public function key() {
return $this->ids[$this->pos];
}
+ #[\ReturnTypeWillChange]
public function next() {
$this->pos++;
}
+ #[\ReturnTypeWillChange]
public function rewind() {
$this->pos = 0;
}
+ #[\ReturnTypeWillChange]
public function valid() {
return $this->pos < count($this->ids);
}
diff --git a/src/serviceprofiler/PhutilServiceProfiler.php b/src/serviceprofiler/PhutilServiceProfiler.php
--- a/src/serviceprofiler/PhutilServiceProfiler.php
+++ b/src/serviceprofiler/PhutilServiceProfiler.php
@@ -137,7 +137,7 @@
$uri = phutil_censor_credentials($data['uri']);
- if (strlen($proxy)) {
+ if ($proxy !== null) {
$desc = "{$proxy} >> {$uri}";
} else {
$desc = $uri;
@@ -203,6 +203,10 @@
}
private static function escapeProfilerStringForDisplay($string) {
+ if ($string === null) {
+ return '';
+ }
+
// Convert tabs and newlines to spaces and collapse blocks of whitespace,
// most often formatting in queries.
$string = preg_replace('/\s{2,}/', ' ', $string);
diff --git a/src/unit/renderer/ArcanistUnitConsoleRenderer.php b/src/unit/renderer/ArcanistUnitConsoleRenderer.php
--- a/src/unit/renderer/ArcanistUnitConsoleRenderer.php
+++ b/src/unit/renderer/ArcanistUnitConsoleRenderer.php
@@ -65,9 +65,10 @@
50 => "<fg:green>%s</fg><fg:yellow>{$star}</fg> ",
200 => '<fg:green>%s</fg> ',
500 => '<fg:yellow>%s</fg> ',
- INF => '<fg:red>%s</fg> ',
);
+ $least_acceptable = '<fg:red>%s</fg> ';
+
$milliseconds = $seconds * 1000;
$duration = $this->formatTime($seconds);
foreach ($acceptableness as $upper_bound => $formatting) {
@@ -75,7 +76,8 @@
return phutil_console_format($formatting, $duration);
}
}
- return phutil_console_format(end($acceptableness), $duration);
+
+ return phutil_console_format($least_acceptable, $duration);
}
private function formatTime($seconds) {
diff --git a/src/utils/PhutilArray.php b/src/utils/PhutilArray.php
--- a/src/utils/PhutilArray.php
+++ b/src/utils/PhutilArray.php
@@ -29,6 +29,7 @@
/* -( Countable Interface )------------------------------------------------ */
+ #[\ReturnTypeWillChange]
public function count() {
return count($this->data);
}
@@ -37,22 +38,27 @@
/* -( Iterator Interface )------------------------------------------------- */
+ #[\ReturnTypeWillChange]
public function current() {
return current($this->data);
}
+ #[\ReturnTypeWillChange]
public function key() {
return key($this->data);
}
+ #[\ReturnTypeWillChange]
public function next() {
return next($this->data);
}
+ #[\ReturnTypeWillChange]
public function rewind() {
reset($this->data);
}
+ #[\ReturnTypeWillChange]
public function valid() {
return (key($this->data) !== null);
}
@@ -61,18 +67,22 @@
/* -( ArrayAccess Interface )---------------------------------------------- */
+ #[\ReturnTypeWillChange]
public function offsetExists($key) {
return array_key_exists($key, $this->data);
}
+ #[\ReturnTypeWillChange]
public function offsetGet($key) {
return $this->data[$key];
}
+ #[\ReturnTypeWillChange]
public function offsetSet($key, $value) {
$this->data[$key] = $value;
}
+ #[\ReturnTypeWillChange]
public function offsetUnset($key) {
unset($this->data[$key]);
}
diff --git a/src/utils/PhutilCallbackFilterIterator.php b/src/utils/PhutilCallbackFilterIterator.php
--- a/src/utils/PhutilCallbackFilterIterator.php
+++ b/src/utils/PhutilCallbackFilterIterator.php
@@ -18,6 +18,7 @@
$this->callback = $callback;
}
+ #[\ReturnTypeWillChange]
public function accept() {
return call_user_func($this->callback, $this->current());
}
diff --git a/src/workflow/ArcanistDiffWorkflow.php b/src/workflow/ArcanistDiffWorkflow.php
--- a/src/workflow/ArcanistDiffWorkflow.php
+++ b/src/workflow/ArcanistDiffWorkflow.php
@@ -701,7 +701,7 @@
$this->revisionID = $revision_id;
$revision['message'] = $this->getArgument('message');
- if (!strlen($revision['message'])) {
+ if ($revision['message'] === null) {
$update_messages = $this->readScratchJSONFile('update-messages.json');
$update_messages[$revision_id] = $this->getUpdateMessage(
@@ -1740,9 +1740,12 @@
if ($template == '') {
$comments = $this->getDefaultUpdateMessage();
+ $comments = phutil_string_cast($comments);
+ $comments = rtrim($comments);
+
$template = sprintf(
"%s\n\n# %s\n#\n# %s\n# %s\n#\n# %s\n# $ %s\n\n",
- rtrim($comments),
+ $comments,
pht(
'Updating %s: %s',
"D{$fields['revisionID']}",
@@ -2360,7 +2363,7 @@
if (strlen($branch)) {
$upstream_path = $api->getPathToUpstream($branch);
$remote_branch = $upstream_path->getRemoteBranchName();
- if (strlen($remote_branch)) {
+ if ($remote_branch !== null) {
return array(
array(
'type' => 'branch',
@@ -2374,7 +2377,7 @@
// If "arc.land.onto.default" is configured, use that.
$config_key = 'arc.land.onto.default';
$onto = $this->getConfigFromAnySource($config_key);
- if (strlen($onto)) {
+ if ($onto !== null) {
return array(
array(
'type' => 'branch',
diff --git a/src/workflow/ArcanistWorkflow.php b/src/workflow/ArcanistWorkflow.php
--- a/src/workflow/ArcanistWorkflow.php
+++ b/src/workflow/ArcanistWorkflow.php
@@ -154,7 +154,7 @@
}
$help = $information->getHelp();
- if (strlen($help)) {
+ if ($help !== null) {
// Unwrap linebreaks in the help text so we don't get weird formatting.
$help = preg_replace("/(?<=\S)\n(?=\S)/", ' ', $help);
diff --git a/support/lib/extract-symbols.php b/support/lib/extract-symbols.php
--- a/support/lib/extract-symbols.php
+++ b/support/lib/extract-symbols.php
@@ -219,7 +219,13 @@
$symbol = array_shift($params);
$type = 'function';
$symbol_value = $symbol->getStringLiteralValue();
- $pos = strpos($symbol_value, '::');
+
+ if ($symbol_value !== null) {
+ $pos = strpos($symbol_value, '::');
+ } else {
+ $pos = false;
+ }
+
if ($pos) {
$type = 'class';
$symbol_value = substr($symbol_value, 0, $pos);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Mar 12, 3:39 PM (4 h, 23 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7589153
Default Alt Text
D21742.diff (16 KB)
Attached To
Mode
D21742: Provide additional Arcanist PHP 8.1 fixes
Attached
Detach File
Event Timeline
Log In to Comment