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

View File

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