[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phpinspect 855529095a 2/2: Index types used in class pr
From: |
ELPA Syncer |
Subject: |
[elpa] externals/phpinspect 855529095a 2/2: Index types used in class property initializers and combine change calls for fix-imports |
Date: |
Mon, 19 Aug 2024 18:58:54 -0400 (EDT) |
branch: externals/phpinspect
commit 855529095ae36d5a0e393e5f2a35006079218e02
Author: Hugo Thunnissen <devel@hugot.nl>
Commit: Hugo Thunnissen <devel@hugot.nl>
Index types used in class property initializers and combine change calls
for fix-imports
---
phpinspect-imports.el | 15 +++++++++++----
phpinspect-index.el | 12 ++++++++++--
phpinspect-parser.el | 6 +++---
test/test-buffer.el | 2 +-
test/test-index.el | 8 ++++++--
5 files changed, 31 insertions(+), 12 deletions(-)
diff --git a/phpinspect-imports.el b/phpinspect-imports.el
index cf153229cd..f45b4ceaeb 100644
--- a/phpinspect-imports.el
+++ b/phpinspect-imports.el
@@ -260,10 +260,11 @@ group."
(with-current-buffer (phpinspect-buffer-buffer buffer)
(save-excursion
(goto-char start)
- (delete-region start end)
- (dolist (statement statements)
- (phpinspect-codify-token (cdr statement))
- (insert-char ?\n))
+ (combine-after-change-calls
+ (delete-region start end)
+ (dolist (statement statements)
+ (phpinspect-codify-token (cdr statement))
+ (insert-char ?\n)))
(if (looking-at "[[:blank:]\n]+")
;; Delete excess trailing whitespace (there's more than 2
between the
@@ -279,6 +280,7 @@ group."
"Find types that are used in the current buffer and make sure
that there are import (\"use\") statements for them."
(interactive)
+
(if phpinspect-current-buffer
(let* ((buffer phpinspect-current-buffer)
;; use buffer-reparse to ensure fully structurally correct
@@ -346,6 +348,11 @@ that there are import (\"use\") statements for them."
(phpinspect-add-use-statements-for-missing-types
used-types buffer (append imports namespace-imports) project
token-meta)
+ (with-current-buffer (get-buffer-create
"attempt-before-namespace-removal-code")
+ (erase-buffer)
+ (insert (with-current-buffer (phpinspect-buffer-buffer buffer)
(buffer-string))))
+
+
(phpinspect-remove-unneeded-use-statements
used-types buffer (append imports namespace-imports) token-meta)
diff --git a/phpinspect-index.el b/phpinspect-index.el
index a866281d9f..de032a297b 100644
--- a/phpinspect-index.el
+++ b/phpinspect-index.el
@@ -261,7 +261,9 @@ SCOPE should be a scope token (`phpinspect-scope-p')."
(t
(setq variable-name (cadr (seq-find #'phpinspect-variable-p scope)))))
- (phpinspect--log "calling resolver from index-variable-from-scope")
+ (when add-used-types
+ (funcall add-used-types (phpinspect--find-used-types-in-tokens scope)))
+
(phpinspect--make-variable
;; Static class variables are always prefixed with dollar signs when
;; referenced.
@@ -589,6 +591,7 @@ Returns a list of type name strings."
(while tokens
(let ((token (pop tokens))
(previous-token (car previous-tokens)))
+
(cond ((and (phpinspect-word-p previous-token)
(member (cadr previous-token) `("new" "instanceof"))
(phpinspect-word-p token))
@@ -633,7 +636,12 @@ Returns a list of type name strings."
(nconc used-types-rear
(phpinspect--find-used-types-in-tokens (cdr
(phpinspect-function-block token))))
used-types-rear (last used-types-rear)))
- ((or (phpinspect-list-p token) (phpinspect-block-p token)
(phpinspect-array-p token))
+ ((or (phpinspect-list-p token)
+ (phpinspect-block-p token)
+ (phpinspect-array-p token)
+ (phpinspect-scope-p token)
+ (phpinspect-static-p token)
+ (phpinspect-const-p token))
(setq used-types-rear
(nconc used-types-rear
(phpinspect--find-used-types-in-tokens (cdr token)))
used-types-rear (last used-types-rear))))
diff --git a/phpinspect-parser.el b/phpinspect-parser.el
index bb8328f4bd..a8cd508841 100644
--- a/phpinspect-parser.el
+++ b/phpinspect-parser.el
@@ -798,19 +798,19 @@ Returns the consumed text string without face properties."
(phpinspect-defparser scope-public
:tree-keyword "public"
:handlers '(function-keyword static-keyword const-keyword class-variable
here-doc
- string terminator tag comment word)
+ string terminator tag comment
assignment-operator array word)
:delimiter-predicate #'phpinspect--scope-terminator-p)
(phpinspect-defparser scope-private
:tree-keyword "private"
:handlers '(function-keyword static-keyword const-keyword class-variable
here-doc
- string terminator tag comment word)
+ string terminator tag comment
assignment-operator array word)
:delimiter-predicate #'phpinspect--scope-terminator-p)
(phpinspect-defparser scope-protected
:tree-keyword "protected"
:handlers '(function-keyword static-keyword const-keyword class-variable
here-doc
- string terminator tag comment word)
+ string terminator tag comment
assignment-operator array word)
:delimiter-predicate #'phpinspect--scope-terminator-p)
(phpinspect-defhandler scope-keyword (start-token max-point)
diff --git a/test/test-buffer.el b/test/test-buffer.el
index 7048456630..3c34f6ddd4 100644
--- a/test/test-buffer.el
+++ b/test/test-buffer.el
@@ -311,7 +311,7 @@ use CCC;
(let ((switch nil)
(delta 0))
- (dotimes (i 100)
+ (dotimes (_i 100)
(if switch
(progn
(setq delta 0)
diff --git a/test/test-index.el b/test/test-index.el
index fe57c66cd2..96c217eab1 100644
--- a/test/test-index.el
+++ b/test/test-index.el
@@ -92,6 +92,8 @@
use UsedTrait;
+private array $bong = [ PropertyArray::class => PropertyArrayItem::class ];
+
private PropertyType $property;
/** @param ParamAnnotation $par
@@ -106,7 +108,7 @@ return StaticThing::create(new
ThingFactory())->makeThing((((new Potato())->anti
if ($param instanceof InstanceOffed) {
/** @var VarAnnotation $bing */
try {
- $bing = [ 'bong' => [ 'nested' => (CastedType) NestedArray::call(), ], ];
+ $bing = [ ArrayKey::class => [ NestedArrayKey::class => (CastedType)
NestedArray::call(), 'ba' => ArrayItem::class ], ];
} catch (CaughtException $e) {
// nothing
}
@@ -122,7 +124,9 @@ try {
"StaticThing" "Thing" "ThingFactory" "Potato"
"OtherThing"
"InnerFunctionParam" "PropertyType" "InstanceOffed"
"NestedArray" "UsedTrait" "VarAnnotation"
"ParamAnnotation"
- "ThrowAnnotationException" "CaughtException"
"CastedType"))
+ "ThrowAnnotationException" "CaughtException"
"CastedType"
+ "NestedArrayKey" "ArrayKey" "ArrayItem"
"PropertyArray"
+ "PropertyArrayItem" "array"))
#'string<))
(sort used-types (lambda (s1 s2) (string< (phpinspect-name-string
s1) (phpinspect-name-string s2))))))))