branch: externals/phpinspect
commit 964b9d3c21fe91081d9507d6586817e6917cf682
Author: Hugo Thunnissen <[email protected]>
Commit: Hugo Thunnissen <[email protected]>
Fix bug in parser that caused end-of-buffer error while parsing comments
delimited by max-point
---
phpinspect-parser.el | 21 ++++++++++++---------
test/test-parser.el | 5 +++++
2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/phpinspect-parser.el b/phpinspect-parser.el
index f34262f4df..a3b9480237 100644
--- a/phpinspect-parser.el
+++ b/phpinspect-parser.el
@@ -546,26 +546,30 @@ nature like argument lists"
(cond ((string-match "/\\*" start-token)
(let* ((region-start (point))
+ (found-delimiter nil)
;; Move to the end of the comment region
(region-end
(progn
- (while (not (or (= max-point (point)) (looking-at "\\*/")))
+ (while (not (or (= max-point (point))
+ (and (looking-at "\\*/") (setq
found-delimiter t))))
(forward-char))
(point)))
(doc-block (save-restriction
(goto-char region-start)
(narrow-to-region region-start region-end)
(phpinspect--parse-doc-block (current-buffer)
(point-max)))))
- (forward-char 2)
+ ;; If a delimiter (*/) was found, skip over it.
+ (when found-delimiter
+ (forward-char 2))
doc-block))
(t
(let* ((end-position (line-end-position))
- (token
- (phpinspect--parse-comment (current-buffer) end-position 1)))
- ;; Move to start of next line (absorb end of line)
- (while (not (bolp))
- (forward-char))
- token))))
+ (token
+ (phpinspect--parse-comment (current-buffer)
end-position)))
+ ;; Move to start of next line (absorb end of line)
+ (while (not (or (bolp) (= max-point (point))))
+ (forward-char))
+ token))))
(phpinspect-defhandler class-variable (start-token &rest _ignored)
"Handler for tokens indicating reference to a variable"
@@ -575,7 +579,6 @@ nature like argument lists"
(phpinspect-munch-token-without-attribs (match-string 0) :class-variable)
(list :class-variable nil)))
-
(phpinspect-defhandler whitespace (whitespace &rest _ignored)
"Handler that discards whitespace"
((regexp . "[[:blank:]\n]+"))
diff --git a/test/test-parser.el b/test/test-parser.el
index 741a65b4ee..573854333d 100644
--- a/test/test-parser.el
+++ b/test/test-parser.el
@@ -195,3 +195,8 @@ interface Test
(:terminator ";"))))))))))
(should (equal expected result))))
+
+(ert-deftest phpinspect-parse-incomplete-comments ()
+ (dolist (code (list "//" "/*" "// " "/* "))
+
+ (should (phpinspect-parse-string code))))