Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F14395915
D12803.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
8 KB
Referenced Files
None
Subscribers
None
D12803.diff
View Options
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -190,6 +190,8 @@
'PhutilInRequestKeyValueCache' => 'cache/PhutilInRequestKeyValueCache.php',
'PhutilInteractiveEditor' => 'console/PhutilInteractiveEditor.php',
'PhutilInvalidRuleParserGeneratorException' => 'parser/generator/exception/PhutilInvalidRuleParserGeneratorException.php',
+ 'PhutilInvalidStateException' => 'exception/PhutilInvalidStateException.php',
+ 'PhutilInvalidStateExceptionTestCase' => 'exception/__tests__/PhutilInvalidStateExceptionTestCase.php',
'PhutilInvisibleSyntaxHighlighter' => 'markup/syntax/highlighter/PhutilInvisibleSyntaxHighlighter.php',
'PhutilIrreducibleRuleParserGeneratorException' => 'parser/generator/exception/PhutilIrreducibleRuleParserGeneratorException.php',
'PhutilJIRAAuthAdapter' => 'auth/PhutilJIRAAuthAdapter.php',
@@ -621,6 +623,8 @@
'PhutilIPAddressTestCase' => 'PhutilTestCase',
'PhutilInRequestKeyValueCache' => 'PhutilKeyValueCache',
'PhutilInvalidRuleParserGeneratorException' => 'PhutilParserGeneratorException',
+ 'PhutilInvalidStateException' => 'Exception',
+ 'PhutilInvalidStateExceptionTestCase' => 'PhutilTestCase',
'PhutilIrreducibleRuleParserGeneratorException' => 'PhutilParserGeneratorException',
'PhutilJIRAAuthAdapter' => 'PhutilOAuth1AuthAdapter',
'PhutilJSONParserException' => 'Exception',
diff --git a/src/auth/PhutilOAuthAuthAdapter.php b/src/auth/PhutilOAuthAuthAdapter.php
--- a/src/auth/PhutilOAuthAuthAdapter.php
+++ b/src/auth/PhutilOAuthAuthAdapter.php
@@ -151,8 +151,7 @@
protected function loadAccessTokenData() {
$code = $this->getCode();
if (!$code) {
- throw new Exception(
- pht('Call %s before accessing adapter information.', 'setCode()'));
+ throw new PhutilInvalidStateException('setCode');
}
$params = array(
diff --git a/src/cache/PhutilDirectoryKeyValueCache.php b/src/cache/PhutilDirectoryKeyValueCache.php
--- a/src/cache/PhutilDirectoryKeyValueCache.php
+++ b/src/cache/PhutilDirectoryKeyValueCache.php
@@ -169,10 +169,7 @@
*/
private function getCacheDirectory() {
if (!$this->cacheDirectory) {
- throw new Exception(
- pht(
- 'Call %s before using a directory cache!',
- 'setCacheDirectory()'));
+ throw new PhutilInvalidStateException('setCacheDirectory');
}
return $this->cacheDirectory;
}
@@ -237,11 +234,7 @@
*/
private function unlockCache() {
if (!$this->lock) {
- throw new Exception(
- pht(
- 'Call %s before %s!',
- 'lockCache()',
- __FUNCTION__.'()'));
+ throw new PhutilInvalidStateException('lockCache');
}
$this->lock->unlock();
diff --git a/src/cache/PhutilMemcacheKeyValueCache.php b/src/cache/PhutilMemcacheKeyValueCache.php
--- a/src/cache/PhutilMemcacheKeyValueCache.php
+++ b/src/cache/PhutilMemcacheKeyValueCache.php
@@ -114,10 +114,7 @@
$n = count($this->servers);
if (!$n) {
- throw new Exception(
- pht(
- 'Call %s before using Memcache!',
- 'setServers()'));
+ throw new PhutilInvalidStateException('setServers');
}
foreach ($keys as $key) {
diff --git a/src/cache/PhutilOnDiskKeyValueCache.php b/src/cache/PhutilOnDiskKeyValueCache.php
--- a/src/cache/PhutilOnDiskKeyValueCache.php
+++ b/src/cache/PhutilOnDiskKeyValueCache.php
@@ -177,11 +177,7 @@
*/
private function saveCache() {
if (!$this->lock) {
- throw new Exception(
- pht(
- 'Call %s before %s!',
- 'loadCache($hold_lock=true)',
- __FUNCTION__.'()'));
+ throw new PhutilInvalidStateException('loadCache');
}
// We're holding a lock so we're safe to do a write to a well-known file.
@@ -201,10 +197,7 @@
*/
private function getCacheFile() {
if (!$this->cacheFile) {
- throw new Exception(
- pht(
- 'Call %s before using a disk cache!',
- 'setCacheFile()'));
+ throw new PhutilInvalidStateException('setCacheFile');
}
return $this->cacheFile;
}
diff --git a/src/exception/PhutilInvalidStateException.php b/src/exception/PhutilInvalidStateException.php
new file mode 100644
--- /dev/null
+++ b/src/exception/PhutilInvalidStateException.php
@@ -0,0 +1,30 @@
+<?php
+
+final class PhutilInvalidStateException extends Exception {
+ private $callee;
+ private $function;
+
+ public function __construct($function, $callee = null) {
+ if ($callee === null) {
+ $callee = idx(debug_backtrace(), 1);
+ $callee = idx($callee, 'function');
+ }
+
+ $this->callee = $callee;
+ $this->function = $function;
+
+ parent::__construct(
+ pht(
+ 'Call %s before calling %s!',
+ $this->function.'()',
+ $this->callee.'()'));
+ }
+
+ public function getCallee() {
+ return $this->callee;
+ }
+
+ public function getFunction() {
+ return $this->function;
+ }
+}
diff --git a/src/exception/__tests__/PhutilInvalidStateExceptionTestCase.php b/src/exception/__tests__/PhutilInvalidStateExceptionTestCase.php
new file mode 100644
--- /dev/null
+++ b/src/exception/__tests__/PhutilInvalidStateExceptionTestCase.php
@@ -0,0 +1,17 @@
+<?php
+
+final class PhutilInvalidStateExceptionTestCase extends PhutilTestCase {
+
+ public function testException() {
+ try {
+ throw new PhutilInvalidStateException('someMethod');
+ } catch (PhutilInvalidStateException $ex) {
+ $this->assertEqual(
+ __FUNCTION__,
+ $ex->getCallee());
+ $this->assertEqual(
+ 'someMethod',
+ $ex->getFunction());
+ }
+ }
+}
diff --git a/src/parser/PhutilParserGenerator.php b/src/parser/PhutilParserGenerator.php
--- a/src/parser/PhutilParserGenerator.php
+++ b/src/parser/PhutilParserGenerator.php
@@ -118,44 +118,28 @@
public function getEOFSymbol() {
if ($this->eofSymbol === null) {
- throw new Exception(
- pht(
- 'Call %s before %s!',
- 'processGrammar()',
- __FUNCTION__.'()'));
+ throw new PhutilInvalidStateException('processGrammar');
}
return $this->eofSymbol;
}
public function getInitSymbol() {
if ($this->initSymbol === null) {
- throw new Exception(
- pht(
- 'Call %s before %s!',
- 'processGrammar()',
- __FUNCTION__.'()'));
+ throw new PhutilInvalidStateException('processGrammar');
}
return $this->initSymbol;
}
public function getEpsilonSymbol() {
if ($this->epsilonSymbol === null) {
- throw new Exception(
- pht(
- 'Call %s before %s!',
- 'processGrammar()',
- __FUNCTION__.'()'));
+ throw new PhutilInvalidStateException('processGrammar');
}
return $this->epsilonSymbol;
}
public function getEndSymbol() {
if ($this->endSymbol === null) {
- throw new Exception(
- pht(
- 'Call %s before %s!',
- 'processGrammar()',
- __FUNCTION__.'()'));
+ throw new PhutilInvalidStateException('processGrammar');
}
return $this->endSymbol;
}
@@ -905,11 +889,7 @@
*/
public function inspectRules() {
if (!$this->rulesValidated) {
- throw new Exception(
- pht(
- 'Call %s before %s!',
- 'processGrammar()',
- __FUNCTION__.'()'));
+ throw new PhutilInvalidStateException('processGrammar');
}
return $this->rules;
}
@@ -920,11 +900,7 @@
*/
public function inspectFirstTable() {
if ($this->firstTable === null) {
- throw new Exception(
- pht(
- 'Call %s before %s!',
- 'processGrammar()',
- __FUNCTION__.'()'));
+ throw new PhutilInvalidStateException('processGrammar');
}
return $this->firstTable;
}
diff --git a/src/utils/PhutilEditDistanceMatrix.php b/src/utils/PhutilEditDistanceMatrix.php
--- a/src/utils/PhutilEditDistanceMatrix.php
+++ b/src/utils/PhutilEditDistanceMatrix.php
@@ -165,8 +165,7 @@
private function requireSequences() {
if ($this->x === null) {
- throw new Exception(
- pht('Call %s before performing useful work!', 'setSequences()'));
+ throw new PhutilInvalidStateException('setSequences');
}
}
@@ -292,8 +291,7 @@
private function getTypeMatrix() {
if (!$this->computeString) {
- throw new Exception(
- pht('Call %s before %s.', 'setComputeString()', 'getTypeMatrix()'));
+ throw new PhutilInvalidStateException('setComputeString');
}
if ($this->typeMatrix === null) {
$this->computeMatrix($this->x, $this->y);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Dec 23, 5:39 AM (18 h, 59 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6920721
Default Alt Text
D12803.diff (8 KB)
Attached To
Mode
D12803: Add PhutilInvalidStateException class
Attached
Detach File
Event Timeline
Log In to Comment