unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: zhang cc <ccsmile2008@outlook.com>
To: Emacs developers <emacs-devel@gnu.org>
Subject: c-forward-sws: Is the code right?
Date: Tue, 27 Mar 2018 14:44:43 +0000	[thread overview]
Message-ID: <SG2PR0601MB140519823749D39B1D900E49A8AC0@SG2PR0601MB1405.apcprd06.prod.outlook.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 12924 bytes --]

In functon c-forward-sws:

    ((and c-opt-cpp-prefix
  (looking-at c-noise-macro-name-re))
     ;; Skip over a noise macro.
     (goto-char (match-end 1))
     (not (eobp)))))

c-noise-macro-name-re’ value is "\\<\\>”, which doesn’t have a group. Then (match-end 1) should always return nil. And (goto-char nil) will signal an error.

Debugger entered--Lisp error: (wrong-type-argument integer-or-marker-p nil) c-forward-sws() c-unfind-coalesced-tokens(87 92) c-before-change(87 92) delete-region(87 #<marker at 92 in c.cpp>) (if (= (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (aref field 2)) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (aref field 3))) nil (delete-region (or from (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (aref field 2))) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (aref field 3)))) yas--skip-and-clear(#s(yas--field :number 1 :start #<marker at 86 in c.cpp> :end #<marker at 92 in c.cpp> :parent-field nil :mirrors nil :transform nil :modified-p t :next nil) 87) (progn (yas--skip-and-clear field end)) (if (yas--skip-and-clear-field-p field beg end length) (progn (yas--skip-and-clear field end))) (lambda nil (if (yas--skip-and-clear-field-p field beg end length) (progn (yas--skip-and-clear field end))) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (let* ((v field)) (aset v 7 t))) (yas--advance-end-maybe field (overlay-end overlay)) (save-excursion (yas--field-update-display field)) (yas--update-mirrors snippet))() funcall((lambda nil (if (yas--skip-and-clear-field-p field beg end length) (progn (yas--skip-and-clear field end))) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (let* ((v field)) (aset v 7 t))) (yas--advance-end-maybe field (overlay-end overlay)) (save-excursion (yas--field-update-display field)) (yas--update-mirrors snippet))) (let nil (funcall '(lambda nil (if (yas--skip-and-clear-field-p field beg end length) (progn (yas--skip-and-clear field end))) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (let* ((v field)) (aset v 7 t))) (yas--advance-end-maybe field (overlay-end overlay)) (save-excursion (yas--field-update-display field)) (yas--update-mirrors snippet)))) eval((let nil (funcall '(lambda nil (if (yas--skip-and-clear-field-p field beg end length) (progn (yas--skip-and-clear field end))) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (let* ((v field)) (aset v 7 t))) (yas--advance-end-maybe field (overlay-end overlay)) (save-excursion (yas--field-update-display field)) (yas--update-mirrors snippet))))) (let* ((syms (mapcar (function car) envvar)) (vals (mapcar (function (lambda (v-f) (eval (car (cdr v-f))))) envvar)) (body (function (lambda nil (if (yas--skip-and-clear-field-p field beg end length) (progn (yas--skip-and-clear field end))) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (let* ((v field)) (aset v 7 t))) (yas--advance-end-maybe field (overlay-end overlay)) (save-excursion (yas--field-update-display field)) (yas--update-mirrors snippet)))) (binds nil)) (while syms (setq binds (cons (list (car-safe (prog1 syms (setq syms (cdr syms)))) (list 'quote (car-safe (prog1 vals (setq vals (cdr vals)))))) binds))) (eval (list 'let binds (list 'funcall (list 'quote body))))) (progn (let* ((syms (mapcar (function car) envvar)) (vals (mapcar (function (lambda (v-f) (eval (car (cdr v-f))))) envvar)) (body (function (lambda nil (if (yas--skip-and-clear-field-p field beg end length) (progn (yas--skip-and-clear field end))) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (let* ((v field)) (aset v 7 t))) (yas--advance-end-maybe field (overlay-end overlay)) (save-excursion (yas--field-update-display field)) (yas--update-mirrors snippet)))) (binds nil)) (while syms (setq binds (cons (list (car-safe (prog1 syms (setq syms (cdr syms)))) (list 'quote (car-safe (prog1 vals (setq vals (cdr vals)))))) binds))) (eval (list 'let binds (list 'funcall (list 'quote body)))))) (let ((envvar (progn (or (and (memq (type-of snippet) cl-struct-yas--snippet-tags) t) (signal 'wrong-type-argument (list 'yas--snippet snippet))) (aref snippet 1)))) (progn (let* ((syms (mapcar (function car) envvar)) (vals (mapcar (function (lambda (v-f) (eval (car (cdr v-f))))) envvar)) (body (function (lambda nil (if (yas--skip-and-clear-field-p field beg end length) (progn (yas--skip-and-clear field end))) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (let* ((v field)) (aset v 7 t))) (yas--advance-end-maybe field (overlay-end overlay)) (save-excursion (yas--field-update-display field)) (yas--update-mirrors snippet)))) (binds nil)) (while syms (setq binds (cons (list (car-safe (prog1 syms (setq syms (cdr syms)))) (list 'quote (car-safe (prog1 vals (setq vals (cdr vals)))))) binds))) (eval (list 'let binds (list 'funcall (list 'quote body))))))) (progn (let ((envvar (progn (or (and (memq (type-of snippet) cl-struct-yas--snippet-tags) t) (signal 'wrong-type-argument (list 'yas--snippet snippet))) (aref snippet 1)))) (progn (let* ((syms (mapcar (function car) envvar)) (vals (mapcar (function (lambda (v-f) (eval (car (cdr v-f))))) envvar)) (body (function (lambda nil (if (yas--skip-and-clear-field-p field beg end length) (progn (yas--skip-and-clear field end))) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (let* ((v field)) (aset v 7 t))) (yas--advance-end-maybe field (overlay-end overlay)) (save-excursion (yas--field-update-display field)) (yas--update-mirrors snippet)))) (binds nil)) (while syms (setq binds (cons (list (car-safe (prog1 syms (setq syms (cdr syms)))) (list 'quote (car-safe (prog1 vals (setq vals (cdr vals)))))) binds))) (eval (list 'let binds (list 'funcall (list 'quote body)))))))) (unwind-protect (progn (let ((envvar (progn (or (and (memq (type-of snippet) cl-struct-yas--snippet-tags) t) (signal 'wrong-type-argument (list 'yas--snippet snippet))) (aref snippet 1)))) (progn (let* ((syms (mapcar (function car) envvar)) (vals (mapcar (function (lambda (v-f) (eval (car (cdr v-f))))) envvar)) (body (function (lambda nil (if (yas--skip-and-clear-field-p field beg end length) (progn (yas--skip-and-clear field end))) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (let* ((v field)) (aset v 7 t))) (yas--advance-end-maybe field (overlay-end overlay)) (save-excursion (yas--field-update-display field)) (yas--update-mirrors snippet)))) (binds nil)) (while syms (setq binds (cons (list (car-safe (prog1 syms (setq syms (cdr syms)))) (list 'quote (car-safe (prog1 vals (setq vals (cdr vals)))))) binds))) (eval (list 'let binds (list 'funcall (list 'quote body)))))))) (set-match-data save-match-data-internal 'evaporate)) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let ((envvar (progn (or (and (memq (type-of snippet) cl-struct-yas--snippet-tags) t) (signal 'wrong-type-argument (list 'yas--snippet snippet))) (aref snippet 1)))) (progn (let* ((syms (mapcar (function car) envvar)) (vals (mapcar (function (lambda (v-f) (eval (car (cdr v-f))))) envvar)) (body (function (lambda nil (if (yas--skip-and-clear-field-p field beg end length) (progn (yas--skip-and-clear field end))) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (let* ((v field)) (aset v 7 t))) (yas--advance-end-maybe field (overlay-end overlay)) (save-excursion (yas--field-update-display field)) (yas--update-mirrors snippet)))) (binds nil)) (while syms (setq binds (cons (list (car-safe (prog1 syms (setq syms (cdr syms)))) (list 'quote (car-safe (prog1 vals (setq vals (cdr vals)))))) binds))) (eval (list 'let binds (list 'funcall (list 'quote body)))))))) (set-match-data save-match-data-internal 'evaporate))) (if (yas--snippet-live-p snippet) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let ((envvar (progn (or (and (memq (type-of snippet) cl-struct-yas--snippet-tags) t) (signal 'wrong-type-argument (list 'yas--snippet snippet))) (aref snippet 1)))) (progn (let* ((syms (mapcar (function car) envvar)) (vals (mapcar (function (lambda (v-f) (eval (car (cdr v-f))))) envvar)) (body (function (lambda nil (if (yas--skip-and-clear-field-p field beg end length) (progn (yas--skip-and-clear field end))) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (let* ((v field)) (aset v 7 t))) (yas--advance-end-maybe field (overlay-end overlay)) (save-excursion (yas--field-update-display field)) (yas--update-mirrors snippet)))) (binds nil)) (while syms (setq binds (cons (list (car-safe (prog1 syms (setq syms (cdr syms)))) (list 'quote (car-safe (prog1 vals (setq vals (cdr vals)))))) binds))) (eval (list 'let binds (list 'funcall (list 'quote body)))))))) (set-match-data save-match-data-internal 'evaporate))) (lwarn '(yasnippet zombie) :warning "Killing zombie snippet!") (delete-overlay overlay)) (let* ((inhibit-modification-hooks nil) (yas--inhibit-overlay-hooks t) (field (overlay-get overlay 'yas--field)) (snippet (overlay-get yas--active-field-overlay 'yas--snippet))) (if (yas--snippet-live-p snippet) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let ((envvar (progn (or (and (memq (type-of snippet) cl-struct-yas--snippet-tags) t) (signal 'wrong-type-argument (list 'yas--snippet snippet))) (aref snippet 1)))) (progn (let* ((syms (mapcar (function car) envvar)) (vals (mapcar (function (lambda (v-f) (eval (car (cdr v-f))))) envvar)) (body (function (lambda nil (if (yas--skip-and-clear-field-p field beg end length) (progn (yas--skip-and-clear field end))) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (let* ((v field)) (aset v 7 t))) (yas--advance-end-maybe field (overlay-end overlay)) (save-excursion (yas--field-update-display field)) (yas--update-mirrors snippet)))) (binds nil)) (while syms (setq binds (cons (list (car-safe (prog1 syms (setq syms (cdr syms)))) (list 'quote (car-safe (prog1 vals (setq vals (cdr vals)))))) binds))) (eval (list 'let binds (list 'funcall (list 'quote body)))))))) (set-match-data save-match-data-internal 'evaporate))) (lwarn '(yasnippet zombie) :warning "Killing zombie snippet!") (delete-overlay overlay))) (if (or (not after\?) yas--inhibit-overlay-hooks (not (overlayp yas--active-field-overlay)) (not (overlay-buffer overlay)) (yas--undo-in-progress)) nil (let* ((inhibit-modification-hooks nil) (yas--inhibit-overlay-hooks t) (field (overlay-get overlay 'yas--field)) (snippet (overlay-get yas--active-field-overlay 'yas--snippet))) (if (yas--snippet-live-p snippet) (let ((save-match-data-internal (match-data))) (unwind-protect (progn (let ((envvar (progn (or (and (memq (type-of snippet) cl-struct-yas--snippet-tags) t) (signal 'wrong-type-argument (list 'yas--snippet snippet))) (aref snippet 1)))) (progn (let* ((syms (mapcar (function car) envvar)) (vals (mapcar (function (lambda (v-f) (eval (car (cdr v-f))))) envvar)) (body (function (lambda nil (if (yas--skip-and-clear-field-p field beg end length) (progn (yas--skip-and-clear field end))) (progn (or (and (memq (type-of field) cl-struct-yas--field-tags) t) (signal 'wrong-type-argument (list 'yas--field field))) (let* ((v field)) (aset v 7 t))) (yas--advance-end-maybe field (overlay-end overlay)) (save-excursion (yas--field-update-display field)) (yas--update-mirrors snippet)))) (binds nil)) (while syms (setq binds (cons (list (car-safe (prog1 syms (setq syms (cdr syms)))) (list 'quote (car-safe (prog1 vals (setq vals (cdr vals)))))) binds))) (eval (list 'let binds (list 'funcall (list 'quote body)))))))) (set-match-data save-match-data-internal 'evaporate))) (lwarn '(yasnippet zombie) :warning "Killing zombie snippet!") (delete-overlay overlay)))) yas--on-field-overlay-modification(#<overlay from 86 to 92 in c.cpp> t 86 87 0) self-insert-command(1) funcall-interactively(self-insert-command 1) call-interactively(self-insert-command nil nil) command-execute(self-insert-command)


[-- Attachment #2: Type: text/html, Size: 14357 bytes --]

             reply	other threads:[~2018-03-27 14:44 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-27 14:44 zhang cc [this message]
2018-03-27 16:41 ` c-forward-sws: Is the code right? Alan Mackenzie
2018-03-27 17:15   ` Stefan Monnier
2018-03-28  1:35   ` zhang cc
2018-03-28  1:56     ` Noam Postavsky
2018-03-28 19:05     ` Alan Mackenzie
2018-03-29  3:06       ` net june
2018-03-29 10:38       ` Eli Zaretskii
2018-04-02 19:58         ` Alan Mackenzie
2018-04-02 23:58           ` Stefan Monnier
2018-04-03 17:13             ` Andy Moreton
2018-04-03 21:03               ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=SG2PR0601MB140519823749D39B1D900E49A8AC0@SG2PR0601MB1405.apcprd06.prod.outlook.com \
    --to=ccsmile2008@outlook.com \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).