@@ -100,7 +100,7 @@ where TOKEN-KIND is a symbol like '[identifier]"
100
100
(bracket-level :accessor ls-bracket-level :initform 0 :type fixnum )
101
101
(open-deco :initform nil )
102
102
(return-count :initform 0 )
103
- (last-newline-in-source :reader ls-last-newline-in-source :initform nil ))
103
+ (last-newline-in-source :reader ls-last-newline-in-source :initform :unknown ))
104
104
(:metaclass closer-mop :funcallable-standard-class))
105
105
106
106
(defmethod print-object ((lexer lexer) stream )
@@ -142,8 +142,8 @@ On EOF returns: eof-token, eof-token."
142
142
143
143
(defmethod call-lexer (yacc-version (lexer lexer) (op (eql nil )))
144
144
(declare (ignorable yacc-version op))
145
- (with-slots (last-read-char-ix curr-line-no yacc-version tokens-todo
146
- indent-stack bracket-level open-deco return-count last-newline-in-source) lexer
145
+ (with-slots (last-read-char-ix curr-line-no yacc-version tokens-todo indent-stack
146
+ bracket-level open-deco return-count last-newline-in-source eof-returned-already ) lexer
147
147
(when (= last-read-char-ix -1 )
148
148
; ; Check leading whitespace. This will go unnoticed by the lexer otherwise.
149
149
(destructuring-bind (newline-p new-indent eof-p)
@@ -166,6 +166,8 @@ On EOF returns: eof-token, eof-token."
166
166
(loop
167
167
(let ((c (lex-read-char :eof-error nil )))
168
168
(cond ((not c)
169
+ (when (eq last-newline-in-source :unknown )
170
+ (setf last-newline-in-source nil ))
169
171
(when (zerop return-count) ; ; grammar does not like empty files, so dummy content
170
172
(lex-return ' [identifier] ' {None} nil ))
171
173
(when *lex-fake-eof-after-toplevel-form*
@@ -243,8 +245,8 @@ On EOF returns: eof-token, eof-token."
243
245
(lex-unread-char c)
244
246
(destructuring-bind (newline-p new-indent eof-p)
245
247
(read-kind :whitespace c)
246
- (when ( and eof-p newline-p)
247
- (setf last-newline-in-source t ))
248
+ (when eof-p
249
+ (setf last-newline-in-source newline-p ))
248
250
(when (and (not eof-p) newline-p (zerop bracket-level))
249
251
; ; Queue eof before dedents as todo.
250
252
(when (and (zerop new-indent)
0 commit comments