|
@@ -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;',
|
|
'']),
|
|
'']),
|