Browse Source

fcl-passrc: less hints and fixed char tests

mattias 2 years ago
parent
commit
17ed07ac90

+ 1 - 1
packages/fcl-passrc/src/pasresolver.pp

@@ -23408,7 +23408,7 @@ procedure TPasResolver.RaiseIncompatibleTypeDesc(id: TMaxPrecInt; MsgNumber: int
 {$IFDEF PAS2JS}
 {$IFDEF PAS2JS}
     vtUnicodeString: Result:=Args[ArgNo].VUnicodeString;
     vtUnicodeString: Result:=Args[ArgNo].VUnicodeString;
 {$ELSE}
 {$ELSE}
-    vtUnicodeString: Result:=UnicodeString(Args[ArgNo].VUnicodeString);
+    vtUnicodeString: Result:={%H-}UnicodeString(Args[ArgNo].VUnicodeString);
     vtAnsiString: Result:=AnsiString(Args[ArgNo].VAnsiString);
     vtAnsiString: Result:=AnsiString(Args[ArgNo].VAnsiString);
 {$ENDIF}    
 {$ENDIF}    
     else
     else

+ 1 - 1
packages/fcl-passrc/src/pscanner.pp

@@ -2803,7 +2803,7 @@ Var
   B : TBytes;
   B : TBytes;
 
 
 begin
 begin
-  SetLength(B,AStream.Size);
+  SetLength(B{%H-},AStream.Size);
   if Length(B)>0 then
   if Length(B)>0 then
     AStream.Read(B[0],length(B));
     AStream.Read(B[0],length(B));
   FContent:=TEncoding.Default.GetAnsiString(B);
   FContent:=TEncoding.Default.GetAnsiString(B);

+ 72 - 57
packages/fcl-passrc/tests/tcresolver.pas

@@ -1197,16 +1197,21 @@ end;
 
 
 procedure TCustomTestResolver.ParseMain(ExpectedModuleClass: TPasModuleClass);
 procedure TCustomTestResolver.ParseMain(ExpectedModuleClass: TPasModuleClass);
 var
 var
+  {$IFNDEF NOCONSOLE}
   aFilename: String;
   aFilename: String;
+  {$ENDIF}
   aRow, aCol: Integer;
   aRow, aCol: Integer;
 begin
 begin
   FFirstStatement:=nil;
   FFirstStatement:=nil;
+  if ExpectedModuleClass=nil then ;
   try
   try
     ParseModule;
     ParseModule;
   except
   except
     on E: EParserError do
     on E: EParserError do
       begin
       begin
+      {$IFNDEF NOCONSOLE}
       aFilename:=E.Filename;
       aFilename:=E.Filename;
+      {$ENDIF}
       aRow:=E.Row;
       aRow:=E.Row;
       aCol:=E.Column;
       aCol:=E.Column;
 {$IFNDEF NOCONSOLE}
 {$IFNDEF NOCONSOLE}
@@ -1220,12 +1225,16 @@ begin
       end;
       end;
     on E: EPasResolve do
     on E: EPasResolve do
       begin
       begin
+      {$IFNDEF NOCONSOLE}
       aFilename:=Scanner.CurFilename;
       aFilename:=Scanner.CurFilename;
+      {$ENDIF}
       aRow:=Scanner.CurRow;
       aRow:=Scanner.CurRow;
       aCol:=Scanner.CurColumn;
       aCol:=Scanner.CurColumn;
       if E.PasElement<>nil then
       if E.PasElement<>nil then
         begin
         begin
+        {$IFNDEF NOCONSOLE}
         aFilename:=E.PasElement.SourceFilename;
         aFilename:=E.PasElement.SourceFilename;
+        {$ENDIF}
         ResolverEngine.UnmangleSourceLineNumber(E.PasElement.SourceLinenumber,aRow,aCol);
         ResolverEngine.UnmangleSourceLineNumber(E.PasElement.SourceLinenumber,aRow,aCol);
         end;
         end;
 {$IFNDEF NOCONSOLE}
 {$IFNDEF NOCONSOLE}
@@ -1459,7 +1468,10 @@ var
   var
   var
     aLabel: PSrcMarker;
     aLabel: PSrcMarker;
     ReferenceElements, LabelElements: TFPList;
     ReferenceElements, LabelElements: TFPList;
-    i, j, aLine, aCol: Integer;
+    i, j: Integer;
+    {$IFNDEF NOCONSOLE}
+    aLine, aCol: Integer;
+    {$ENDIF}
     El, Ref, LabelEl: TPasElement;
     El, Ref, LabelEl: TPasElement;
   begin
   begin
     //writeln('CheckResolverReference searching reference: ',aMarker^.Filename,' Line=',aMarker^.Row,' Col=',aMarker^.StartCol,'-',aMarker^.EndCol,' Label="',aMarker^.Identifier,'"');
     //writeln('CheckResolverReference searching reference: ',aMarker^.Filename,' Line=',aMarker^.Row,' Col=',aMarker^.StartCol,'-',aMarker^.EndCol,' Label="',aMarker^.Identifier,'"');
@@ -2146,14 +2158,17 @@ end;
 
 
 procedure TCustomTestResolver.HandleError(CurEngine: TTestEnginePasResolver;
 procedure TCustomTestResolver.HandleError(CurEngine: TTestEnginePasResolver;
   E: Exception);
   E: Exception);
+{$IFNDEF NOCONSOLE}
 var
 var
   ErrFilename: String;
   ErrFilename: String;
   ErrRow, ErrCol: Integer;
   ErrRow, ErrCol: Integer;
+{$ENDIF}
 begin
 begin
+  if CurEngine=nil then ;
+  {$IFNDEF NOCONSOLE}
   ErrFilename:=CurEngine.Scanner.CurFilename;
   ErrFilename:=CurEngine.Scanner.CurFilename;
   ErrRow:=CurEngine.Scanner.CurRow;
   ErrRow:=CurEngine.Scanner.CurRow;
   ErrCol:=CurEngine.Scanner.CurColumn;
   ErrCol:=CurEngine.Scanner.CurColumn;
-  {$IFNDEF NOCONSOLE}
   writeln('ERROR: TCustomTestResolver.HandleError during parsing: '+E.ClassName+':'+E.Message
   writeln('ERROR: TCustomTestResolver.HandleError during parsing: '+E.ClassName+':'+E.Message
     +' File='+ErrFilename
     +' File='+ErrFilename
     +' LineNo='+IntToStr(ErrRow)
     +' LineNo='+IntToStr(ErrRow)
@@ -4623,7 +4638,7 @@ begin
   Add('  v:longint;');
   Add('  v:longint;');
   Add('begin');
   Add('begin');
   Add('  v:=''A'';');
   Add('  v:=''A'';');
-  CheckResolverException('Incompatible types: got "AnsiChar" expected "Longint"',
+  CheckResolverException('Incompatible types: got "Char" expected "Longint"',
     nIncompatibleTypesGotExpected);
     nIncompatibleTypesGotExpected);
 end;
 end;
 
 
@@ -4705,7 +4720,7 @@ begin
   Add([
   Add([
   'var',
   'var',
   '  i,j:string;',
   '  i,j:string;',
-  '  k:AnsiChar;',
+  '  k:char;',
   '  w:widechar;',
   '  w:widechar;',
   'begin',
   'begin',
   '  i:='''';',
   '  i:='''';',
@@ -4719,7 +4734,7 @@ begin
   '  k:=''a'';',
   '  k:=''a'';',
   '  k:='''''''';',
   '  k:='''''''';',
   '  k:=j[1];',
   '  k:=j[1];',
-  '  k:=AnsiChar(#10);',
+  '  k:=char(#10);',
   '  w:=k;',
   '  w:=k;',
   '  w:=#66;',
   '  w:=#66;',
   '  w:=#6666;',
   '  w:=#6666;',
@@ -4736,7 +4751,7 @@ begin
   ResolverEngine.BaseTypeString:=btUnicodeString;
   ResolverEngine.BaseTypeString:=btUnicodeString;
   StartProgram(false);
   StartProgram(false);
   Add('var');
   Add('var');
-  Add('  k:AnsiChar;');
+  Add('  k:char;');
   Add('  w:widechar;');
   Add('  w:widechar;');
   Add('begin');
   Add('begin');
   Add('  w:=k;');
   Add('  w:=k;');
@@ -4788,7 +4803,7 @@ begin
   Add('  TFlags = set of TFlag;');
   Add('  TFlags = set of TFlag;');
   Add('var');
   Add('var');
   Add('  i: longint;');
   Add('  i: longint;');
-  Add('  c: AnsiChar;');
+  Add('  c: char;');
   Add('  s: string;');
   Add('  s: string;');
   Add('  d: double;');
   Add('  d: double;');
   Add('  f: TFlag;');
   Add('  f: TFlag;');
@@ -4829,7 +4844,7 @@ begin
   '  fs: single;',
   '  fs: single;',
   '  d: double;',
   '  d: double;',
   '  b: boolean;',
   '  b: boolean;',
-  '  c: AnsiChar;',
+  '  c: char;',
   '  s: string;',
   '  s: string;',
   'begin',
   'begin',
   '  d:=double({#a_read}i);',
   '  d:=double({#a_read}i);',
@@ -4844,9 +4859,9 @@ begin
   '  b:=boolean({#k_read}i);',
   '  b:=boolean({#k_read}i);',
   '  i:=longint({#l_read}b);',
   '  i:=longint({#l_read}b);',
   '  d:=double({#m_read}i);',
   '  d:=double({#m_read}i);',
-  '  c:=AnsiChar({#n_read}c);',
-  '  c:=AnsiChar({#o_read}i);',
-  '  c:=AnsiChar(65);',
+  '  c:=char({#n_read}c);',
+  '  c:=char({#o_read}i);',
+  '  c:=char(65);',
   '  s:=string({#p_read}s);',
   '  s:=string({#p_read}s);',
   '  s:=string({#q_read}c);',
   '  s:=string({#q_read}c);',
   '']);
   '']);
@@ -4862,13 +4877,13 @@ begin
   Add('  TCaption = string;');
   Add('  TCaption = string;');
   Add('  TYesNo = boolean;');
   Add('  TYesNo = boolean;');
   Add('  TFloat = double;');
   Add('  TFloat = double;');
-  Add('  TChar = AnsiChar;');
+  Add('  TChar = char;');
   Add('var');
   Add('var');
   Add('  i: longint;');
   Add('  i: longint;');
   Add('  s: string;');
   Add('  s: string;');
   Add('  b: boolean;');
   Add('  b: boolean;');
   Add('  d: double;');
   Add('  d: double;');
-  Add('  c: AnsiChar;');
+  Add('  c: char;');
   Add('begin');
   Add('begin');
   Add('  i:=integer({#a_read}i);');
   Add('  i:=integer({#a_read}i);');
   Add('  i:=integer({#h_read}b);');
   Add('  i:=integer({#h_read}b);');
@@ -4898,9 +4913,9 @@ begin
   StartProgram(false);
   StartProgram(false);
   Add('var');
   Add('var');
   Add('  s: string;');
   Add('  s: string;');
-  Add('  c: AnsiChar;');
+  Add('  c: char;');
   Add('begin');
   Add('begin');
-  Add('  c:=AnsiChar(s);');
+  Add('  c:=char(s);');
   CheckResolverException(sIllegalTypeConversionTo,nIllegalTypeConversionTo);
   CheckResolverException(sIllegalTypeConversionTo,nIllegalTypeConversionTo);
 end;
 end;
 
 
@@ -4992,13 +5007,13 @@ begin
   'var',
   'var',
   '  bo: boolean;',
   '  bo: boolean;',
   '  by: byte;',
   '  by: byte;',
-  '  ch: AnsiChar;',
+  '  ch: char;',
   '  s: string;',
   '  s: string;',
   '  i: longint = high(abc);',
   '  i: longint = high(abc);',
   'begin',
   'begin',
   '  for bo:=low(boolean) to high(boolean) do;',
   '  for bo:=low(boolean) to high(boolean) do;',
   '  for by:=low(byte) to high(byte) do;',
   '  for by:=low(byte) to high(byte) do;',
-  '  for ch:=low(AnsiChar) to high(AnsiChar) do;',
+  '  for ch:=low(char) to high(AnsiChar) do;',
   '  for i:=low(s) to high(s) do;',
   '  for i:=low(s) to high(s) do;',
   '']);
   '']);
   ParseProgram;
   ParseProgram;
@@ -5064,11 +5079,11 @@ procedure TTestResolver.TestStr_CharFail;
 begin
 begin
   StartProgram(false);
   StartProgram(false);
   Add('var');
   Add('var');
-  Add('  c: AnsiChar;');
+  Add('  c: char;');
   Add('  aString: string;');
   Add('  aString: string;');
   Add('begin');
   Add('begin');
   Add('  Str(c,aString);');
   Add('  Str(c,aString);');
-  CheckResolverException('Incompatible type for arg no. 1: Got "AnsiChar", expected "boolean, integer, enum value"',
+  CheckResolverException('Incompatible type for arg no. 1: Got "Char", expected "boolean, integer, enum value"',
     nIncompatibleTypeArgNo);
     nIncompatibleTypeArgNo);
 end;
 end;
 
 
@@ -5370,7 +5385,7 @@ begin
   '  i: longint;',
   '  i: longint;',
   '  f: TFlag;',
   '  f: TFlag;',
   '  b: boolean;',
   '  b: boolean;',
-  '  c: AnsiChar;',
+  '  c: char;',
   '  s: string;',
   '  s: string;',
   'begin',
   'begin',
   '  case i of',
   '  case i of',
@@ -5419,7 +5434,7 @@ begin
   Add('  case i of');
   Add('  case i of');
   Add('  ''1'': ;');
   Add('  ''1'': ;');
   Add('  end;');
   Add('  end;');
-  CheckResolverException('Incompatible types: got "AnsiChar" expected "Longint"',
+  CheckResolverException('Incompatible types: got "Char" expected "Longint"',
     nIncompatibleTypesGotExpected);
     nIncompatibleTypesGotExpected);
 end;
 end;
 
 
@@ -5660,10 +5675,10 @@ end;
 procedure TTestResolver.TestForLoopStartIncompFail;
 procedure TTestResolver.TestForLoopStartIncompFail;
 begin
 begin
   StartProgram(false);
   StartProgram(false);
-  Add('var i: AnsiChar;');
+  Add('var i: char;');
   Add('begin');
   Add('begin');
   Add('  for i:=1 to 2 do ;');
   Add('  for i:=1 to 2 do ;');
-  CheckResolverException('Incompatible types: got "Longint" expected "AnsiChar"',
+  CheckResolverException('Incompatible types: got "Longint" expected "Char"',
     nIncompatibleTypesGotExpected);
     nIncompatibleTypesGotExpected);
 end;
 end;
 
 
@@ -5673,7 +5688,7 @@ begin
   Add('var i: longint;');
   Add('var i: longint;');
   Add('begin');
   Add('begin');
   Add('  for i:=1 to ''2'' do ;');
   Add('  for i:=1 to ''2'' do ;');
-  CheckResolverException('Incompatible types: got "AnsiChar" expected "Longint"',
+  CheckResolverException('Incompatible types: got "Char" expected "Longint"',
     nIncompatibleTypesGotExpected);
     nIncompatibleTypesGotExpected);
 end;
 end;
 
 
@@ -6574,7 +6589,7 @@ begin
   Add('procedure {#int64}DoIt(p: int64); external;  var i6: int64;');
   Add('procedure {#int64}DoIt(p: int64); external;  var i6: int64;');
   Add('procedure {#comp}DoIt(p: comp); external;  var co: comp;');
   Add('procedure {#comp}DoIt(p: comp); external;  var co: comp;');
   Add('procedure {#boolean}DoIt(p: boolean); external;  var bo: boolean;');
   Add('procedure {#boolean}DoIt(p: boolean); external;  var bo: boolean;');
-  Add('procedure {#AnsiChar}DoIt(p: AnsiChar); external;  var ch: AnsiChar;');
+  Add('procedure {#char}DoIt(p: char); external;  var ch: char;');
   Add('procedure {#widechar}DoIt(p: widechar); external;  var wc: widechar;');
   Add('procedure {#widechar}DoIt(p: widechar); external;  var wc: widechar;');
   Add('procedure {#string}DoIt(p: string); external;  var st: string;');
   Add('procedure {#string}DoIt(p: string); external;  var st: string;');
   Add('procedure {#widestring}DoIt(p: widestring); external;  var ws: widestring;');
   Add('procedure {#widestring}DoIt(p: widestring); external;  var ws: widestring;');
@@ -6592,7 +6607,7 @@ begin
   Add('  {@int64}DoIt(i6);');
   Add('  {@int64}DoIt(i6);');
   Add('  {@comp}DoIt(co);');
   Add('  {@comp}DoIt(co);');
   Add('  {@boolean}DoIt(bo);');
   Add('  {@boolean}DoIt(bo);');
-  Add('  {@AnsiChar}DoIt(ch);');
+  Add('  {@char}DoIt(ch);');
   Add('  {@widechar}DoIt(wc);');
   Add('  {@widechar}DoIt(wc);');
   Add('  {@string}DoIt(st);');
   Add('  {@string}DoIt(st);');
   Add('  {@widestring}DoIt(ws);');
   Add('  {@widestring}DoIt(ws);');
@@ -6653,7 +6668,7 @@ begin
   Add([
   Add([
   'function {#a}StrToDate(const a: String): double; begin end;',
   'function {#a}StrToDate(const a: String): double; begin end;',
   'function {#b}StrToDate(const a: String; const b: string): double; begin end;',
   'function {#b}StrToDate(const a: String; const b: string): double; begin end;',
-  'function {#c}StrToDate(const a: String; const b: string; c: AnsiChar): double; begin end;',
+  'function {#c}StrToDate(const a: String; const b: string; c: char): double; begin end;',
   'var d: double;',
   'var d: double;',
   'begin',
   'begin',
   '  d:={@a}StrToDate('''');',
   '  d:={@a}StrToDate('''');',
@@ -7203,7 +7218,7 @@ begin
   StartProgram(false);
   StartProgram(false);
   Add([
   Add([
   'function DoIt: string;',
   'function DoIt: string;',
-  '  function Sub: AnsiChar;',
+  '  function Sub: char;',
   '  begin',
   '  begin',
   '    {#a1}DoIt:=#65;',
   '    {#a1}DoIt:=#65;',
   '    {#a2}DoIt[1]:=#66;',
   '    {#a2}DoIt[1]:=#66;',
@@ -7827,7 +7842,7 @@ begin
   'procedure DoIt(p: Pointer);',
   'procedure DoIt(p: Pointer);',
   'var',
   'var',
   '  s: string absolute p;',
   '  s: string absolute p;',
-  '  t: array of AnsiChar absolute s;',
+  '  t: array of char absolute s;',
   'begin',
   'begin',
   'end;',
   'end;',
   'begin']);
   'begin']);
@@ -10519,12 +10534,12 @@ begin
   StartProgram(false);
   StartProgram(false);
   Add('type');
   Add('type');
   Add('  TObject = class');
   Add('  TObject = class');
-  Add('    procedure ProcA(c: AnsiChar); virtual; abstract;');
+  Add('    procedure ProcA(c: char); virtual; abstract;');
   Add('  end;');
   Add('  end;');
   Add('  TClassA = class');
   Add('  TClassA = class');
-  Add('    procedure ProcA(c: AnsiChar); override;');
+  Add('    procedure ProcA(c: char); override;');
   Add('  end;');
   Add('  end;');
-  Add('procedure TClassA.ProcA(c: AnsiChar);');
+  Add('procedure TClassA.ProcA(c: char);');
   Add('begin');
   Add('begin');
   Add('  inherited ProcA(c);');
   Add('  inherited ProcA(c);');
   Add('end;');
   Add('end;');
@@ -14665,7 +14680,7 @@ begin
   StartProgram(false);
   StartProgram(false);
   Add('type');
   Add('type');
   Add('  TArrA = array[1..2] of longint;');
   Add('  TArrA = array[1..2] of longint;');
-  Add('  TArrB = array[AnsiChar] of boolean;');
+  Add('  TArrB = array[char] of boolean;');
   Add('  TArrC = array[byte,''a''..''z''] of longint;');
   Add('  TArrC = array[byte,''a''..''z''] of longint;');
   Add('const');
   Add('const');
   Add('  ArrA: TArrA = (3,4);');
   Add('  ArrA: TArrA = (3,4);');
@@ -14688,21 +14703,21 @@ begin
   StartProgram(false);
   StartProgram(false);
   Add([
   Add([
   'type',
   'type',
-  '  TArrA = array[1..3] of AnsiChar;',
+  '  TArrA = array[1..3] of char;',
   'const',
   'const',
   {
   {
   '  A: TArrA = (''p'',''a'',''p'');', // duplicate allowed, this bracket is not a set
   '  A: TArrA = (''p'',''a'',''p'');', // duplicate allowed, this bracket is not a set
   '  B: TArrA = ''pas'';',
   '  B: TArrA = ''pas'';',
   '  Three = length(TArrA);',
   '  Three = length(TArrA);',
-  '  C: array[1..Three] of AnsiChar = ''pas'';',
+  '  C: array[1..Three] of char = ''pas'';',
   '  D = ''pp'';',
   '  D = ''pp'';',
-  '  E: array[length(D)..Three] of AnsiChar = D;',
+  '  E: array[length(D)..Three] of char = D;',
   '  F: array[1..2] of widechar = ''äö'';',
   '  F: array[1..2] of widechar = ''äö'';',
   }
   }
-  '  G: array[1..2] of AnsiChar = ''ä'';',
+  '  G: array[1..2] of char = ''ä'';',
   {
   {
-  '  H: array[1..4] of AnsiChar = ''äö'';',
-  '  I: array[1..4] of AnsiChar = ''ä''+''ö'';',
+  '  H: array[1..4] of char = ''äö'';',
+  '  I: array[1..4] of char = ''ä''+''ö'';',
   }
   }
   'begin']);
   'begin']);
   ParseProgram;
   ParseProgram;
@@ -14714,18 +14729,18 @@ begin
   Add([
   Add([
   '{$mode delphi}',
   '{$mode delphi}',
   'type',
   'type',
-  '  TArrA = array[1..3] of AnsiChar;',
+  '  TArrA = array[1..3] of char;',
   'const',
   'const',
   '  A: TArrA = (''p'',''a'',''p'');', // duplicate allowed, this bracket is not a set
   '  A: TArrA = (''p'',''a'',''p'');', // duplicate allowed, this bracket is not a set
   '  B: TArrA = ''pas'';',
   '  B: TArrA = ''pas'';',
   '  Three = length(TArrA);',
   '  Three = length(TArrA);',
-  '  C: array[1..Three] of AnsiChar = ''pas'';',
+  '  C: array[1..Three] of char = ''pas'';',
   '  D = ''pp'';',
   '  D = ''pp'';',
-  '  E: array[length(D)..Three] of AnsiChar = D;',
+  '  E: array[length(D)..Three] of char = D;',
   '  F: array[1..2] of widechar = ''äö'';',
   '  F: array[1..2] of widechar = ''äö'';',
-  '  G: array[1..2] of AnsiChar = ''ä'';',
-  '  H: array[1..4] of AnsiChar = ''äö'';',
-  '  I: array[1..4] of AnsiChar = ''ä''+''ö'';',
+  '  G: array[1..2] of char = ''ä'';',
+  '  H: array[1..4] of char = ''äö'';',
+  '  I: array[1..4] of char = ''ä''+''ö'';',
   'begin']);
   'begin']);
   ParseProgram;
   ParseProgram;
 end;
 end;
@@ -14747,11 +14762,11 @@ begin
   Add([
   Add([
   'procedure {#a}Run(const s: string); overload;',
   'procedure {#a}Run(const s: string); overload;',
   'begin end;',
   'begin end;',
-  'procedure {#b}Run(const a: array of AnsiChar); overload;',
+  'procedure {#b}Run(const a: array of char); overload;',
   'begin end;',
   'begin end;',
   'var',
   'var',
   '  s: string;',
   '  s: string;',
-  '  c: AnsiChar;',
+  '  c: char;',
   'begin',
   'begin',
   '  {@a}Run(''foo'');',
   '  {@a}Run(''foo'');',
   '  {@a}Run(s);',
   '  {@a}Run(s);',
@@ -14817,10 +14832,10 @@ procedure TTestResolver.TestArray_LowHigh;
 begin
 begin
   StartProgram(false);
   StartProgram(false);
   Add('type');
   Add('type');
-  Add('  TArrA = array[AnsiChar] of longint;');
+  Add('  TArrA = array[char] of longint;');
   Add('  TArrB = array of TArrA;');
   Add('  TArrB = array of TArrA;');
   Add('var');
   Add('var');
-  Add('  c: AnsiChar;');
+  Add('  c: char;');
   Add('  i: longint;');
   Add('  i: longint;');
   Add('begin');
   Add('begin');
   Add('  for c:=low(TArrA) to High(TArrA) do ;');
   Add('  for c:=low(TArrA) to High(TArrA) do ;');
@@ -15089,7 +15104,7 @@ begin
   '  Aliases: TarrStr = (''foo'',''b'');',
   '  Aliases: TarrStr = (''foo'',''b'');',
   '  OneInt: TArrInt = (7);',
   '  OneInt: TArrInt = (7);',
   '  OneInt2: array of integer = (7);',
   '  OneInt2: array of integer = (7);',
-  '  Chars: array of AnsiChar = ''aoc'';',
+  '  Chars: array of char = ''aoc'';',
   '  Names: array of string = (''a'',''foo'');',
   '  Names: array of string = (''a'',''foo'');',
   '  NameCount = low(Names)+high(Names)+length(Names);',
   '  NameCount = low(Names)+high(Names)+length(Names);',
   'procedure DoIt(Ints: TArrInt);',
   'procedure DoIt(Ints: TArrInt);',
@@ -15131,7 +15146,7 @@ begin
   '  Aliases: TarrStr = {#aliases_array}[''foo'',''b'',''b''];',
   '  Aliases: TarrStr = {#aliases_array}[''foo'',''b'',''b''];',
   '  OneInt: TArrInt = {#oneint_array}[7];',
   '  OneInt: TArrInt = {#oneint_array}[7];',
   '  TwoInt: array of integer = {#twoint1_array}[7]+{#twoint2_array}[8];',
   '  TwoInt: array of integer = {#twoint1_array}[7]+{#twoint2_array}[8];',
-  '  Chars: array of AnsiChar = ''aoc'';',
+  '  Chars: array of char = ''aoc'';',
   '  Names: array of string = {#names_array}[''a'',''a''];',
   '  Names: array of string = {#names_array}[''a'',''a''];',
   '  NameCount = low(Names)+high(Names)+length(Names);',
   '  NameCount = low(Names)+high(Names)+length(Names);',
   'procedure {#DoArrOfSet}DoIt(const s: TArrOfSet); overload; begin end;',
   'procedure {#DoArrOfSet}DoIt(const s: TArrOfSet); overload; begin end;',
@@ -15419,10 +15434,10 @@ begin
   StartProgram(false);
   StartProgram(false);
   Add([
   Add([
   '{$mode delphi}',
   '{$mode delphi}',
-  'Function CharInSet(Ch: AnsiChar;Const CSet : array of AnsiChar) : Boolean;',
+  'Function CharInSet(Ch: char;Const CSet : array of char) : Boolean;',
   'begin',
   'begin',
   'end;',
   'end;',
-  'var Key: AnsiChar;',
+  'var Key: char;',
   'begin',
   'begin',
   '  if CharInSet(Key, [^V, ^X, ^C]) then ;',
   '  if CharInSet(Key, [^V, ^X, ^C]) then ;',
   '  CharInSet(Key,''abc'');',
   '  CharInSet(Key,''abc'');',
@@ -15436,9 +15451,9 @@ begin
   StartProgram(false);
   StartProgram(false);
   Add([
   Add([
   '{$mode delphi}',
   '{$mode delphi}',
-  'type TArrChr = array of AnsiChar;',
+  'type TArrChr = array of char;',
   'var',
   'var',
-  '  Key: AnsiChar;',
+  '  Key: char;',
   '  s: string;',
   '  s: string;',
   '  a: TArrChr;',
   '  a: TArrChr;',
   'begin',
   'begin',
@@ -18851,7 +18866,7 @@ begin
   '  TStringHelper = type helper for String',
   '  TStringHelper = type helper for String',
   '    procedure DoIt;',
   '    procedure DoIt;',
   '  end;',
   '  end;',
-  '  TCharHelper = type helper for AnsiChar',
+  '  TCharHelper = type helper for char',
   '    procedure Fly;',
   '    procedure Fly;',
   '  end;',
   '  end;',
   'procedure TStringHelper.DoIt;',
   'procedure TStringHelper.DoIt;',
@@ -18880,7 +18895,7 @@ begin
     '  TStringHelper = type helper for String',
     '  TStringHelper = type helper for String',
     '    procedure DoIt;',
     '    procedure DoIt;',
     '  end;',
     '  end;',
-    '  TCharHelper = type helper for AnsiChar',
+    '  TCharHelper = type helper for char',
     '    procedure Fly;',
     '    procedure Fly;',
     '  end;',
     '  end;',
     '']),
     '']),