fcl-passrc: fixed parsing ,^A

git-svn-id: trunk@43288 -
This commit is contained in:
Mattias Gaertner 2019-10-21 11:55:11 +00:00
parent 2e9e8a49be
commit 202284dbfa
3 changed files with 20 additions and 5 deletions

View File

@ -2420,16 +2420,15 @@ begin
end;
tkCaret:
begin
// is this still needed?
// ^A..^_ characters. See #16341
// Why is this still needed?
// ^A..^_ characters
NextToken;
if not (length(CurTokenText)=1) or not (CurTokenText[1] in ['A'..'_']) then
begin
UngetToken;
ParseExcExpectedIdentifier;
end;
Result:=CreatePrimitiveExpr(AParent,pekString, '^'+CurTokenText);
exit;
Last:=CreatePrimitiveExpr(AParent,pekString, '^'+CurTokenText);
end;
tkBraceOpen:
begin

View File

@ -140,7 +140,7 @@ type
tkIdentifier,
tkString,
tkNumber,
tkChar,
tkChar, // ^A .. ^Z
// Simple (one-character) tokens
tkBraceOpen, // '('
tkBraceClose, // ')'

View File

@ -808,6 +808,7 @@ type
Procedure TestArray_OpenArrayAsDynArraySetLengthFail;
Procedure TestArray_OpenArrayAsDynArray;
Procedure TestArray_OpenArrayDelphi;
Procedure TestArray_OpenArrayChar;
Procedure TestArray_CopyConcat;
Procedure TestStaticArray_CopyConcat;// ToDo
Procedure TestArray_CopyMismatchFail;
@ -14713,6 +14714,21 @@ begin
ParseProgram;
end;
procedure TTestResolver.TestArray_OpenArrayChar;
begin
StartProgram(false);
Add([
'{$mode delphi}',
'Function CharInSet(Ch: Char;Const CSet : array of char) : Boolean;',
'begin',
'end;',
'var Key: Char;',
'begin',
' if CharInSet(Key, [^V, ^X, ^C]) then ;',
'']);
ParseProgram;
end;
procedure TTestResolver.TestArray_CopyConcat;
begin
StartProgram(false);