|
@@ -22422,7 +22422,8 @@ begin
|
|
StartProgram(false);
|
|
StartProgram(false);
|
|
Add([
|
|
Add([
|
|
'{$R+}',
|
|
'{$R+}',
|
|
- 'type TLetter = char;',
|
|
|
|
|
|
+ 'type',
|
|
|
|
+ ' TLetter = char;',
|
|
'var',
|
|
'var',
|
|
' b: TLetter = ''2'';',
|
|
' b: TLetter = ''2'';',
|
|
' w: TLetter = ''3'';',
|
|
' w: TLetter = ''3'';',
|
|
@@ -22571,29 +22572,44 @@ procedure TTestModule.TestRangeChecks_StringIndex;
|
|
begin
|
|
begin
|
|
StartProgram(false);
|
|
StartProgram(false);
|
|
Add([
|
|
Add([
|
|
|
|
+ 'type',
|
|
|
|
+ ' TObject = class',
|
|
|
|
+ ' S: string;',
|
|
|
|
+ ' end;',
|
|
'{$R+}',
|
|
'{$R+}',
|
|
'procedure DoIt(var h: string);',
|
|
'procedure DoIt(var h: string);',
|
|
'var',
|
|
'var',
|
|
' s: string;',
|
|
' s: string;',
|
|
' i: longint;',
|
|
' i: longint;',
|
|
' c: char;',
|
|
' c: char;',
|
|
|
|
+ ' o: tobject;',
|
|
'begin',
|
|
'begin',
|
|
' c:=s[1];',
|
|
' c:=s[1];',
|
|
' s[i]:=s[i];',
|
|
' s[i]:=s[i];',
|
|
' h[i]:=h[i];',
|
|
' h[i]:=h[i];',
|
|
|
|
+ ' c:=o.s[i];',
|
|
'end;',
|
|
'end;',
|
|
'begin',
|
|
'begin',
|
|
'']);
|
|
'']);
|
|
ConvertProgram;
|
|
ConvertProgram;
|
|
CheckSource('TestRangeChecks_StringIndex',
|
|
CheckSource('TestRangeChecks_StringIndex',
|
|
LinesToStr([ // statements
|
|
LinesToStr([ // statements
|
|
|
|
+ 'rtl.createClass($mod, "TObject", null, function () {',
|
|
|
|
+ ' this.$init = function () {',
|
|
|
|
+ ' this.S = "";',
|
|
|
|
+ ' };',
|
|
|
|
+ ' this.$final = function () {',
|
|
|
|
+ ' };',
|
|
|
|
+ '});',
|
|
'this.DoIt = function (h) {',
|
|
'this.DoIt = function (h) {',
|
|
' var s = "";',
|
|
' var s = "";',
|
|
' var i = 0;',
|
|
' var i = 0;',
|
|
' var c = "";',
|
|
' var c = "";',
|
|
|
|
+ ' var o = null;',
|
|
' c = rtl.rcc(rtl.rcCharAt(s, 0), 0, 65535);',
|
|
' c = rtl.rcc(rtl.rcCharAt(s, 0), 0, 65535);',
|
|
' s = rtl.rcSetCharAt(s, i - 1, rtl.rcCharAt(s, i - 1));',
|
|
' s = rtl.rcSetCharAt(s, i - 1, rtl.rcCharAt(s, i - 1));',
|
|
' h.set(rtl.rcSetCharAt(h.get(), i - 1, rtl.rcCharAt(h.get(), i - 1)));',
|
|
' h.set(rtl.rcSetCharAt(h.get(), i - 1, rtl.rcCharAt(h.get(), i - 1)));',
|
|
|
|
+ ' c = rtl.rcc(o.S.charAt(i - 1), 0, 65535);',
|
|
'};',
|
|
'};',
|
|
'']),
|
|
'']),
|
|
LinesToStr([ // $mod.$main
|
|
LinesToStr([ // $mod.$main
|