diff --git a/src/applications/audit/editor/comment/PhabricatorAuditCommentEditor.php b/src/applications/audit/editor/comment/PhabricatorAuditCommentEditor.php index 9ef8b1ad06..4b27424ff8 100644 --- a/src/applications/audit/editor/comment/PhabricatorAuditCommentEditor.php +++ b/src/applications/audit/editor/comment/PhabricatorAuditCommentEditor.php @@ -258,7 +258,7 @@ final class PhabricatorAuditCommentEditor { array $other_comments, array $inline_comments) { assert_instances_of($other_comments, 'PhabricatorAuditComment'); - assert_instances_of($inline_comments, 'PhabricatorAuditInlineComment'); + assert_instances_of($inline_comments, 'PhabricatorInlineCommentInterface'); $commit = $this->commit; @@ -350,7 +350,7 @@ final class PhabricatorAuditCommentEditor { PhabricatorObjectHandle $handle, PhabricatorMailReplyHandler $reply_handler, array $inline_comments) { - assert_instances_of($inline_comments, 'PhabricatorAuditInlineComment'); + assert_instances_of($inline_comments, 'PhabricatorInlineCommentInterface'); $commit = $this->commit; $user = $this->user; diff --git a/src/applications/differential/controller/revisionlist/DifferentialRevisionListController.php b/src/applications/differential/controller/revisionlist/DifferentialRevisionListController.php index 40abaaf016..88df056855 100644 --- a/src/applications/differential/controller/revisionlist/DifferentialRevisionListController.php +++ b/src/applications/differential/controller/revisionlist/DifferentialRevisionListController.php @@ -344,6 +344,7 @@ final class DifferentialRevisionListController extends DifferentialController { array $handles, PhutilURI $uri, array $params) { + assert_instances_of($handles, 'PhabricatorObjectHandle'); switch ($control) { case 'subscriber': case 'phid': @@ -422,6 +423,8 @@ final class DifferentialRevisionListController extends DifferentialController { } private function buildViews($filter, $user_phid, array $revisions) { + assert_instances_of($revisions, 'DifferentialRevision'); + $user = $this->getRequest()->getUser(); $template = id(new DifferentialRevisionListView()) diff --git a/src/applications/differential/controller/revisionview/DifferentialRevisionViewController.php b/src/applications/differential/controller/revisionview/DifferentialRevisionViewController.php index 4e637b97da..c48f9eb172 100644 --- a/src/applications/differential/controller/revisionview/DifferentialRevisionViewController.php +++ b/src/applications/differential/controller/revisionview/DifferentialRevisionViewController.php @@ -546,6 +546,8 @@ final class DifferentialRevisionViewController extends DifferentialController { } private function loadInlineComments(array $comments, array &$changesets) { + assert_instances_of($comments, 'DifferentialComment'); + assert_instances_of($changesets, 'DifferentialChangeset'); $inline_comments = array(); @@ -585,7 +587,12 @@ final class DifferentialRevisionViewController extends DifferentialController { return $inline_comments; } - private function loadChangesetsAndVsMap(array $diffs, $diff_vs, $target) { + private function loadChangesetsAndVsMap( + array $diffs, + $diff_vs, + DifferentialDiff $target) { + assert_instances_of($diffs, 'DifferentialDiff'); + $load_ids = array(); if ($diff_vs) { $load_ids[] = $diff_vs; @@ -695,6 +702,7 @@ final class DifferentialRevisionViewController extends DifferentialController { DifferentialDiff $target, PhabricatorRepositoryArcanistProject $arc_project, array $visible_changesets) { + assert_instances_of($visible_changesets, 'DifferentialChangeset'); $engine = PhabricatorSyntaxHighlighter::newEngine(); @@ -768,6 +776,8 @@ final class DifferentialRevisionViewController extends DifferentialController { } private function renderOtherRevisions(array $revisions) { + assert_instances_of($revisions, 'DifferentialRevision'); + $view = id(new DifferentialRevisionListView()) ->setRevisions($revisions) ->setFields(DifferentialRevisionListView::getDefaultFields()) diff --git a/src/applications/differential/editor/revision/DifferentialRevisionEditor.php b/src/applications/differential/editor/revision/DifferentialRevisionEditor.php index 5972b5bb2f..496b4766fb 100644 --- a/src/applications/differential/editor/revision/DifferentialRevisionEditor.php +++ b/src/applications/differential/editor/revision/DifferentialRevisionEditor.php @@ -761,6 +761,7 @@ final class DifferentialRevisionEditor { DifferentialRevision $revision, DifferentialDiff $diff, array $changesets) { + assert_instances_of($changesets, 'DifferentialChangeset'); $project = $diff->loadArcanistProject(); if (!$project) { diff --git a/src/applications/differential/field/selector/base/DifferentialFieldSelector.php b/src/applications/differential/field/selector/base/DifferentialFieldSelector.php index 320dfe3f38..d4070e5564 100644 --- a/src/applications/differential/field/selector/base/DifferentialFieldSelector.php +++ b/src/applications/differential/field/selector/base/DifferentialFieldSelector.php @@ -29,6 +29,7 @@ abstract class DifferentialFieldSelector { abstract public function getFieldSpecifications(); public function sortFieldsForRevisionList(array $fields) { + assert_instances_of($fields, 'DifferentialFieldSpecification'); return $fields; } diff --git a/src/applications/differential/field/selector/base/__init__.php b/src/applications/differential/field/selector/base/__init__.php index 6c8eeefe6f..09f7eb4cf4 100644 --- a/src/applications/differential/field/selector/base/__init__.php +++ b/src/applications/differential/field/selector/base/__init__.php @@ -8,5 +8,7 @@ phutil_require_module('phabricator', 'infrastructure/env'); +phutil_require_module('phutil', 'utils'); + phutil_require_source('DifferentialFieldSelector.php'); diff --git a/src/applications/differential/field/selector/default/DifferentialDefaultFieldSelector.php b/src/applications/differential/field/selector/default/DifferentialDefaultFieldSelector.php index 1a2baecbf1..9184424492 100644 --- a/src/applications/differential/field/selector/default/DifferentialDefaultFieldSelector.php +++ b/src/applications/differential/field/selector/default/DifferentialDefaultFieldSelector.php @@ -62,6 +62,8 @@ final class DifferentialDefaultFieldSelector } public function sortFieldsForRevisionList(array $fields) { + assert_instances_of($fields, 'DifferentialFieldSpecification'); + $map = array(); foreach ($fields as $field) { $map[get_class($field)] = $field; diff --git a/src/applications/differential/field/specification/base/DifferentialFieldSpecification.php b/src/applications/differential/field/specification/base/DifferentialFieldSpecification.php index ba24c74f32..e0953b1a3b 100644 --- a/src/applications/differential/field/specification/base/DifferentialFieldSpecification.php +++ b/src/applications/differential/field/specification/base/DifferentialFieldSpecification.php @@ -741,6 +741,7 @@ abstract class DifferentialFieldSpecification { * @task context */ final public function setHandles(array $handles) { + assert_instances_of($handles, 'PhabricatorObjectHandle'); $this->handles = $handles; return $this; } diff --git a/src/applications/differential/mail/base/DifferentialMail.php b/src/applications/differential/mail/base/DifferentialMail.php index 9358446b3a..686eecbc4c 100644 --- a/src/applications/differential/mail/base/DifferentialMail.php +++ b/src/applications/differential/mail/base/DifferentialMail.php @@ -343,6 +343,7 @@ EOTEXT; } public function setInlineComments(array $inline_comments) { + assert_instances_of($inline_comments, 'PhabricatorInlineCommentInterface'); $this->inlineComments = $inline_comments; return $this; } @@ -388,6 +389,7 @@ EOTEXT; } protected function renderHandleList(array $handles, array $phids) { + assert_instances_of($handles, 'PhabricatorObjectHandle'); $names = array(); foreach ($phids as $phid) { $names[] = $handles[$phid]->getName(); diff --git a/src/applications/differential/mail/comment/DifferentialCommentMail.php b/src/applications/differential/mail/comment/DifferentialCommentMail.php index 0889e05325..03973d33a5 100644 --- a/src/applications/differential/mail/comment/DifferentialCommentMail.php +++ b/src/applications/differential/mail/comment/DifferentialCommentMail.php @@ -35,6 +35,8 @@ final class DifferentialCommentMail extends DifferentialMail { DifferentialComment $comment, array $changesets, array $inline_comments) { + assert_instances_of($changesets, 'DifferentialChangeset'); + assert_instances_of($inline_comments, 'PhabricatorInlineCommentInterface'); $this->setRevision($revision); $this->setActorHandle($actor); diff --git a/src/applications/differential/mail/reviewrequest/DifferentialReviewRequestMail.php b/src/applications/differential/mail/reviewrequest/DifferentialReviewRequestMail.php index caff1f1dd3..fac9fc6f79 100644 --- a/src/applications/differential/mail/reviewrequest/DifferentialReviewRequestMail.php +++ b/src/applications/differential/mail/reviewrequest/DifferentialReviewRequestMail.php @@ -33,6 +33,7 @@ abstract class DifferentialReviewRequestMail extends DifferentialMail { DifferentialRevision $revision, PhabricatorObjectHandle $actor, array $changesets) { + assert_instances_of($changesets, 'DifferentialChangeset'); $this->setRevision($revision); $this->setActorHandle($actor); diff --git a/src/applications/differential/parser/changeset/DifferentialChangesetParser.php b/src/applications/differential/parser/changeset/DifferentialChangesetParser.php index 2a70a466dc..e5c98033e3 100644 --- a/src/applications/differential/parser/changeset/DifferentialChangesetParser.php +++ b/src/applications/differential/parser/changeset/DifferentialChangesetParser.php @@ -169,6 +169,7 @@ final class DifferentialChangesetParser { } public function setHandles(array $handles) { + assert_instances_of($handles, 'PhabricatorObjectHandle'); $this->handles = $handles; return $this; } @@ -1173,6 +1174,9 @@ final class DifferentialChangesetParser { $feedback_mask, array $old_comments, array $new_comments) { + foreach (array_merge($old_comments, $new_comments) as $comments) { + assert_instances_of($comments, 'PhabricatorInlineCommentInterface'); + } $context_not_available = null; if ($this->missingOld || $this->missingNew) { diff --git a/src/applications/differential/query/revision/DifferentialRevisionQuery.php b/src/applications/differential/query/revision/DifferentialRevisionQuery.php index e38f1d9c30..2e512a613f 100644 --- a/src/applications/differential/query/revision/DifferentialRevisionQuery.php +++ b/src/applications/differential/query/revision/DifferentialRevisionQuery.php @@ -750,6 +750,7 @@ final class DifferentialRevisionQuery { } private function loadRelationships($conn_r, array $revisions) { + assert_instances_of($revisions, 'DifferentialRevision'); $relationships = queryfx_all( $conn_r, 'SELECT * FROM %T WHERE revisionID in (%Ld) ORDER BY sequence', @@ -766,6 +767,7 @@ final class DifferentialRevisionQuery { } private function loadCommitPHIDs($conn_r, array $revisions) { + assert_instances_of($revisions, 'DifferentialRevision'); $commit_phids = queryfx_all( $conn_r, 'SELECT * FROM %T WHERE revisionID IN (%Ld)', @@ -780,6 +782,8 @@ final class DifferentialRevisionQuery { } private function loadDiffIDs($conn_r, array $revisions) { + assert_instances_of($revisions, 'DifferentialRevision'); + $diff_table = new DifferentialDiff(); $diff_ids = queryfx_all( @@ -798,6 +802,8 @@ final class DifferentialRevisionQuery { } private function loadActiveDiffs($conn_r, array $revisions) { + assert_instances_of($revisions, 'DifferentialRevision'); + $diff_table = new DifferentialDiff(); $load_ids = array(); diff --git a/src/applications/differential/storage/auxiliaryfield/DifferentialAuxiliaryField.php b/src/applications/differential/storage/auxiliaryfield/DifferentialAuxiliaryField.php index 5bd7d51a77..49246fdcf6 100644 --- a/src/applications/differential/storage/auxiliaryfield/DifferentialAuxiliaryField.php +++ b/src/applications/differential/storage/auxiliaryfield/DifferentialAuxiliaryField.php @@ -1,7 +1,7 @@ hunks = $hunks; return $this; } diff --git a/src/applications/differential/storage/diff/DifferentialDiff.php b/src/applications/differential/storage/diff/DifferentialDiff.php index 5a04f8de35..9ae0fa4a9b 100644 --- a/src/applications/differential/storage/diff/DifferentialDiff.php +++ b/src/applications/differential/storage/diff/DifferentialDiff.php @@ -55,6 +55,7 @@ final class DifferentialDiff extends DifferentialDAO { } public function attachChangesets(array $changesets) { + assert_instances_of($changesets, 'DifferentialChangeset'); $this->changesets = $changesets; return $this; } @@ -107,6 +108,7 @@ final class DifferentialDiff extends DifferentialDAO { } public static function newFromRawChanges(array $changes) { + assert_instances_of($changes, 'ArcanistDiffChange'); $diff = new DifferentialDiff(); $lines = 0; diff --git a/src/applications/differential/view/inlinecomment/DifferentialInlineCommentView.php b/src/applications/differential/view/inlinecomment/DifferentialInlineCommentView.php index e420afa57d..b5f77fc392 100644 --- a/src/applications/differential/view/inlinecomment/DifferentialInlineCommentView.php +++ b/src/applications/differential/view/inlinecomment/DifferentialInlineCommentView.php @@ -42,6 +42,7 @@ final class DifferentialInlineCommentView extends AphrontView { } public function setHandles(array $handles) { + assert_instances_of($handles, 'PhabricatorObjectHandle'); $this->handles = $handles; return $this; } diff --git a/src/applications/differential/view/inlinecomment/__init__.php b/src/applications/differential/view/inlinecomment/__init__.php index aee6d7ccc2..68a8893618 100644 --- a/src/applications/differential/view/inlinecomment/__init__.php +++ b/src/applications/differential/view/inlinecomment/__init__.php @@ -11,6 +11,7 @@ phutil_require_module('phabricator', 'infrastructure/javelin/markup'); phutil_require_module('phabricator', 'view/base'); phutil_require_module('phutil', 'markup'); +phutil_require_module('phutil', 'utils'); phutil_require_source('DifferentialInlineCommentView.php'); diff --git a/src/applications/differential/view/primarypane/DifferentialPrimaryPaneView.php b/src/applications/differential/view/primarypane/DifferentialPrimaryPaneView.php index 9fc9e5fae5..1562fdd92b 100644 --- a/src/applications/differential/view/primarypane/DifferentialPrimaryPaneView.php +++ b/src/applications/differential/view/primarypane/DifferentialPrimaryPaneView.php @@ -1,7 +1,7 @@ handles = $handles; return $this; } @@ -50,11 +51,13 @@ final class DifferentialRevisionCommentView extends AphrontView { } public function setInlineComments(array $inline_comments) { + assert_instances_of($inline_comments, 'PhabricatorInlineCommentInterface'); $this->inlines = $inline_comments; return $this; } public function setChangesets(array $changesets) { + assert_instances_of($changesets, 'DifferentialChangeset'); // Ship these in sorted by getSortKey() and keyed by ID... or else! $this->changesets = $changesets; return $this; diff --git a/src/applications/differential/view/revisioncommentlist/DifferentialRevisionCommentListView.php b/src/applications/differential/view/revisioncommentlist/DifferentialRevisionCommentListView.php index ece96a750d..5dc3411e13 100644 --- a/src/applications/differential/view/revisioncommentlist/DifferentialRevisionCommentListView.php +++ b/src/applications/differential/view/revisioncommentlist/DifferentialRevisionCommentListView.php @@ -27,21 +27,25 @@ final class DifferentialRevisionCommentListView extends AphrontView { private $versusDiffID; public function setComments(array $comments) { + assert_instances_of($comments, 'DifferentialComment'); $this->comments = $comments; return $this; } public function setInlineComments(array $inline_comments) { + assert_instances_of($inline_comments, 'PhabricatorInlineCommentInterface'); $this->inlines = $inline_comments; return $this; } public function setHandles(array $handles) { + assert_instances_of($handles, 'PhabricatorObjectHandle'); $this->handles = $handles; return $this; } public function setChangesets(array $changesets) { + assert_instances_of($changesets, 'DifferentialChangeset'); $this->changesets = $changesets; return $this; } diff --git a/src/applications/differential/view/revisionlist/DifferentialRevisionListView.php b/src/applications/differential/view/revisionlist/DifferentialRevisionListView.php index 5389a6b90f..5e24894ab4 100644 --- a/src/applications/differential/view/revisionlist/DifferentialRevisionListView.php +++ b/src/applications/differential/view/revisionlist/DifferentialRevisionListView.php @@ -28,11 +28,13 @@ final class DifferentialRevisionListView extends AphrontView { private $fields; public function setFields(array $fields) { + assert_instances_of($fields, 'DifferentialFieldSpecification'); $this->fields = $fields; return $this; } public function setRevisions(array $revisions) { + assert_instances_of($revisions, 'DifferentialRevision'); $this->revisions = $revisions; return $this; } @@ -48,6 +50,7 @@ final class DifferentialRevisionListView extends AphrontView { } public function setHandles(array $handles) { + assert_instances_of($handles, 'PhabricatorObjectHandle'); $this->handles = $handles; return $this; } diff --git a/src/applications/differential/view/revisionstats/DifferentialRevisionStatsView.php b/src/applications/differential/view/revisionstats/DifferentialRevisionStatsView.php index 4d8aaae49e..914f90831a 100644 --- a/src/applications/differential/view/revisionstats/DifferentialRevisionStatsView.php +++ b/src/applications/differential/view/revisionstats/DifferentialRevisionStatsView.php @@ -25,14 +25,17 @@ final class DifferentialRevisionStatsView extends AphrontView { private $user; public function setRevisions(array $revisions) { + assert_instances_of($revisions, 'DifferentialRevision'); $this->revisions = $revisions; return $this; } public function setComments(array $comments) { + assert_instances_of($comments, 'DifferentialComment'); $this->comments = $comments; return $this; } + public function setUser($user) { $this->user = $user; return $this; diff --git a/src/applications/diffusion/view/comment/DiffusionCommentView.php b/src/applications/diffusion/view/comment/DiffusionCommentView.php index e60a499f51..8e1a8c611d 100644 --- a/src/applications/diffusion/view/comment/DiffusionCommentView.php +++ b/src/applications/diffusion/view/comment/DiffusionCommentView.php @@ -56,7 +56,7 @@ final class DiffusionCommentView extends AphrontView { } public function setInlineComments(array $inline_comments) { - assert_instances_of($inline_comments, 'PhabricatorAuditInlineComment'); + assert_instances_of($inline_comments, 'PhabricatorInlineCommentInterface'); $this->inlineComments = $inline_comments; return $this; } diff --git a/src/applications/diffusion/view/commentlist/DiffusionCommentListView.php b/src/applications/diffusion/view/commentlist/DiffusionCommentListView.php index d837a60ca1..fec0b549d5 100644 --- a/src/applications/diffusion/view/commentlist/DiffusionCommentListView.php +++ b/src/applications/diffusion/view/commentlist/DiffusionCommentListView.php @@ -35,7 +35,7 @@ final class DiffusionCommentListView extends AphrontView { } public function setInlineComments(array $inline_comments) { - assert_instances_of($inline_comments, 'PhabricatorAuditInlineComment'); + assert_instances_of($inline_comments, 'PhabricatorInlineCommentInterface'); $this->inlineComments = $inline_comments; return $this; } diff --git a/src/docs/contributing/php_coding_standards.diviner b/src/docs/contributing/php_coding_standards.diviner index 230c0ca854..72a849fce5 100644 --- a/src/docs/contributing/php_coding_standards.diviner +++ b/src/docs/contributing/php_coding_standards.diviner @@ -61,6 +61,7 @@ guidelines, you probably don't need to read this super thoroughly. - Prefer class constants over defines. - Avoid naked class properties; instead, define accessors. - Use exceptions for error conditions. + - Use type hints, use `assert_instances_of()` for arrays holding objects. = Examples =