* Fix bug ID #38269 (caret can be start of string)

git-svn-id: trunk@47889 -
This commit is contained in:
michael 2020-12-29 10:42:40 +00:00
parent 50c659b1ca
commit 73dd1afd7d
2 changed files with 10 additions and 3 deletions

View File

@ -3106,7 +3106,8 @@ end;
function TPascalScanner.FetchToken: TToken;
begin
FPreviousToken:=FCurToken;
if Not (FCurToken in [tkWhiteSpace,tkLineEnding]) then
FPreviousToken:=FCurToken;
while true do
begin
Result := DoFetchToken;
@ -5051,8 +5052,7 @@ begin
begin
if ForceCaret or PPisSkipping or
(PreviousToken in [tkeof,tkTab,tkLineEnding,tkComment,tkIdentifier,
tkNil,tkOperator,tkBraceClose,tkSquaredBraceClose,tkCaret,
tkWhitespace]) then
tkNil,tkOperator,tkBraceClose,tkSquaredBraceClose,tkCaret]) then
begin
Inc(FTokenPos);
Result := tkCaret;

View File

@ -115,6 +115,7 @@ type
procedure TestNumber;
procedure TestChar;
procedure TestCharString;
procedure TestCaretString;
procedure TestBraceOpen;
procedure TestBraceClose;
procedure TestMul;
@ -831,6 +832,12 @@ begin
TestToken(pscanner.tkChar,'''A''');
end;
procedure TTestScanner.TestCaretString;
begin
TestTokens([tkIdentifier,tkWhiteSpace,tkEqual,tkwhiteSpace,pscanner.tkString,tkSemicolon],'a = ^C''abc'';',false);
end;
procedure TTestScanner.TestNumber;
begin