|
@@ -22518,6 +22518,9 @@ begin
|
|
|
' TArrByte = array[byte] of Ten;',
|
|
|
' TArrChar = array[''0''..''9''] of Ten;',
|
|
|
' TArrByteChar = array[byte,''0''..''9''] of Ten;',
|
|
|
+ ' TObject = class',
|
|
|
+ ' A: TArr;',
|
|
|
+ ' end;',
|
|
|
'procedure DoIt;',
|
|
|
'var',
|
|
|
' Arr: TArr;',
|
|
@@ -22527,6 +22530,7 @@ begin
|
|
|
' ArrByteChar: TArrByteChar;',
|
|
|
' i: Ten;',
|
|
|
' c: char;',
|
|
|
+ ' o: tobject;',
|
|
|
'begin',
|
|
|
' i:=Arr[1];',
|
|
|
' i:=ArrByteChar[1,''2''];',
|
|
@@ -22538,12 +22542,21 @@ begin
|
|
|
' ArrChar[c]:=ArrChar[c];',
|
|
|
' ArrByteChar[7,''7'']:=ArrByteChar[7,''7''];',
|
|
|
' ArrByteChar[i,c]:=ArrByteChar[i,c];',
|
|
|
+ ' o.a[i]:=o.a[i];',
|
|
|
'end;',
|
|
|
'begin',
|
|
|
'']);
|
|
|
ConvertProgram;
|
|
|
CheckSource('TestRangeChecks_ArrayIndex',
|
|
|
LinesToStr([ // statements
|
|
|
+ 'rtl.createClass($mod, "TObject", null, function () {',
|
|
|
+ ' this.$init = function () {',
|
|
|
+ ' this.A = [];',
|
|
|
+ ' };',
|
|
|
+ ' this.$final = function () {',
|
|
|
+ ' this.A = undefined;',
|
|
|
+ ' };',
|
|
|
+ '});',
|
|
|
'this.DoIt = function () {',
|
|
|
' var Arr = [];',
|
|
|
' var ArrArr = [];',
|
|
@@ -22552,6 +22565,7 @@ begin
|
|
|
' var ArrByteChar = rtl.arraySetLength(null, 0, 256, 10);',
|
|
|
' var i = 0;',
|
|
|
' var c = "";',
|
|
|
+ ' var o = null;',
|
|
|
' i = rtl.rc(Arr[1], 1, 10);',
|
|
|
' i = rtl.rc(ArrByteChar[1][2], 1, 10);',
|
|
|
' Arr[1] = rtl.rc(Arr[1], 1, 10);',
|
|
@@ -22562,6 +22576,7 @@ begin
|
|
|
' rtl.rcArrW(ArrChar, c.charCodeAt() - 48, rtl.rcArrR(ArrChar, c.charCodeAt() - 48));',
|
|
|
' ArrByteChar[7][7] = rtl.rc(ArrByteChar[7][7], 1, 10);',
|
|
|
' rtl.rcArrW(ArrByteChar, i, c.charCodeAt() - 48, rtl.rcArrR(ArrByteChar, i, c.charCodeAt() - 48));',
|
|
|
+ ' o.A[i] = rtl.rc(o.A[i], 1, 10);',
|
|
|
'};',
|
|
|
'']),
|
|
|
LinesToStr([ // $mod.$main
|