@@ -83,7 +83,7 @@ pub fn diff(
83
83
const deadline = if (dmp .diff_timeout == 0 )
84
84
std .math .maxInt (u64 )
85
85
else
86
- @intCast (u64 , std .time .milliTimestamp ()) + dmp .diff_timeout ;
86
+ @as (u64 , @intCast ( std .time .milliTimestamp () )) + dmp .diff_timeout ;
87
87
return dmp .diffInternal (allocator , before , after , check_lines , deadline );
88
88
}
89
89
@@ -343,20 +343,20 @@ fn diffHalfMatchInternal(
343
343
var best_short_text_b : []const u8 = "" ;
344
344
345
345
while (j < short_text .len and b : {
346
- j = @intCast (isize , std .mem .indexOf (u8 , short_text [@intCast (usize , j + 1 ).. ], seed ) orelse break :b false ) + j + 1 ;
346
+ j = @as (isize , @intCast ( std .mem .indexOf (u8 , short_text [@as (usize , @intCast ( j + 1 )) .. ], seed ) orelse break :b false ) ) + j + 1 ;
347
347
break :b true ;
348
348
}) {
349
- var prefix_length = diffCommonPrefix (long_text [i .. ], short_text [@intCast (usize , j ).. ]);
350
- var suffix_length = diffCommonSuffix (long_text [0.. i ], short_text [0.. @intCast (usize , j )]);
349
+ var prefix_length = diffCommonPrefix (long_text [i .. ], short_text [@as (usize , @intCast ( j ) ).. ]);
350
+ var suffix_length = diffCommonSuffix (long_text [0.. i ], short_text [0.. @as (usize , @intCast ( j ) )]);
351
351
if (best_common .items .len < suffix_length + prefix_length ) {
352
352
best_common .items .len = 0 ;
353
- try best_common .appendSlice (allocator , short_text [@intCast (usize , j - @intCast (isize , suffix_length )) .. @intCast (usize , j - @intCast (isize , suffix_length )) + suffix_length ]);
354
- try best_common .appendSlice (allocator , short_text [@intCast (usize , j ) .. @intCast (usize , j ) + prefix_length ]);
353
+ try best_common .appendSlice (allocator , short_text [@as (usize , @intCast ( j - @as (isize , @intCast ( suffix_length )))) .. @as (usize , @intCast ( j - @as (isize , @intCast ( suffix_length )) )) + suffix_length ]);
354
+ try best_common .appendSlice (allocator , short_text [@as (usize , @intCast ( j )) .. @as (usize , @intCast ( j ) ) + prefix_length ]);
355
355
356
356
best_long_text_a = long_text [0 .. i - suffix_length ];
357
357
best_long_text_b = long_text [i + prefix_length .. ];
358
- best_short_text_a = short_text [0.. @intCast (usize , j - @intCast (isize , suffix_length ))];
359
- best_short_text_b = short_text [@intCast (usize , j + @intCast (isize , prefix_length )).. ];
358
+ best_short_text_a = short_text [0.. @as (usize , @intCast ( j - @as (isize , @intCast ( suffix_length )) ))];
359
+ best_short_text_b = short_text [@as (usize , @intCast ( j + @as (isize , @intCast ( prefix_length )) )).. ];
360
360
}
361
361
}
362
362
if (best_common .items .len * 2 >= long_text .len ) {
@@ -386,24 +386,24 @@ fn diffBisect(
386
386
after : []const u8 ,
387
387
deadline : u64 ,
388
388
) DiffError ! DiffList {
389
- const before_length = @intCast (isize , before .len );
390
- const after_length = @intCast (isize , after .len );
391
- const max_d = @intCast (isize , (before .len + after .len + 1 ) / 2 );
389
+ const before_length : isize = @intCast (before .len );
390
+ const after_length : isize = @intCast (after .len );
391
+ const max_d : isize = @intCast ((before .len + after .len + 1 ) / 2 );
392
392
const v_offset = max_d ;
393
393
const v_length = 2 * max_d ;
394
394
395
- var v1 = try ArrayListUnmanaged (isize ).initCapacity (allocator , @intCast (usize , v_length ));
396
- v1 .items .len = @intCast (usize , v_length );
397
- var v2 = try ArrayListUnmanaged (isize ).initCapacity (allocator , @intCast (usize , v_length ));
398
- v2 .items .len = @intCast (usize , v_length );
395
+ var v1 = try ArrayListUnmanaged (isize ).initCapacity (allocator , @as (usize , @intCast ( v_length ) ));
396
+ v1 .items .len = @intCast (v_length );
397
+ var v2 = try ArrayListUnmanaged (isize ).initCapacity (allocator , @as (usize , @intCast ( v_length ) ));
398
+ v2 .items .len = @intCast (v_length );
399
399
400
400
var x : usize = 0 ;
401
401
while (x < v_length ) : (x += 1 ) {
402
402
v1 .items [x ] = -1 ;
403
403
v2 .items [x ] = -1 ;
404
404
}
405
- v1 .items [@intCast (usize , v_offset + 1 )] = 0 ;
406
- v2 .items [@intCast (usize , v_offset + 1 )] = 0 ;
405
+ v1 .items [@intCast (v_offset + 1 )] = 0 ;
406
+ v2 .items [@intCast (v_offset + 1 )] = 0 ;
407
407
const delta = before_length - after_length ;
408
408
// If the total number of characters is odd, then the front path will
409
409
// collide with the reverse path.
@@ -418,7 +418,7 @@ fn diffBisect(
418
418
var d : isize = 0 ;
419
419
while (d < max_d ) : (d += 1 ) {
420
420
// Bail out if deadline is reached.
421
- if (@intCast (u64 , std .time .milliTimestamp ()) > deadline ) {
421
+ if (@as (u64 , @intCast ( std .time .milliTimestamp () )) > deadline ) {
422
422
break ;
423
423
}
424
424
@@ -428,20 +428,20 @@ fn diffBisect(
428
428
var k1_offset = v_offset + k1 ;
429
429
var x1 : isize = 0 ;
430
430
if (k1 == - d or (k1 != d and
431
- v1 .items [@intCast (usize , k1_offset - 1 )] < v1 .items [@intCast (usize , k1_offset + 1 )]))
431
+ v1 .items [@intCast (k1_offset - 1 )] < v1 .items [@intCast (k1_offset + 1 )]))
432
432
{
433
- x1 = v1 .items [@intCast (usize , k1_offset + 1 )];
433
+ x1 = v1 .items [@intCast (k1_offset + 1 )];
434
434
} else {
435
- x1 = v1 .items [@intCast (usize , k1_offset - 1 )] + 1 ;
435
+ x1 = v1 .items [@intCast (k1_offset - 1 )] + 1 ;
436
436
}
437
437
var y1 = x1 - k1 ;
438
438
while (x1 < before_length and
439
- y1 < after_length and before [@intCast (usize , x1 )] == after [@intCast (usize , y1 )])
439
+ y1 < after_length and before [@intCast (x1 )] == after [@intCast (y1 )])
440
440
{
441
441
x1 += 1 ;
442
442
y1 += 1 ;
443
443
}
444
- v1 .items [@intCast (usize , k1_offset )] = x1 ;
444
+ v1 .items [@intCast (k1_offset )] = x1 ;
445
445
if (x1 > before_length ) {
446
446
// Ran off the right of the graph.
447
447
k1end += 2 ;
@@ -450,9 +450,9 @@ fn diffBisect(
450
450
k1start += 2 ;
451
451
} else if (front ) {
452
452
var k2_offset = v_offset + delta - k1 ;
453
- if (k2_offset >= 0 and k2_offset < v_length and v2 .items [@intCast (usize , k2_offset )] != -1 ) {
453
+ if (k2_offset >= 0 and k2_offset < v_length and v2 .items [@intCast (k2_offset )] != -1 ) {
454
454
// Mirror x2 onto top-left coordinate system.
455
- const x2 = before_length - v2 .items [@intCast (usize , k2_offset )];
455
+ const x2 = before_length - v2 .items [@intCast (k2_offset )];
456
456
if (x1 >= x2 ) {
457
457
// Overlap detected.
458
458
return dmp .diffBisectSplit (allocator , before , after , x1 , y1 , deadline );
@@ -467,21 +467,21 @@ fn diffBisect(
467
467
const k2_offset = v_offset + k2 ;
468
468
var x2 : isize = 0 ;
469
469
if (k2 == - d or (k2 != d and
470
- v2 .items [@intCast (usize , k2_offset - 1 )] < v2 .items [@intCast (usize , k2_offset + 1 )]))
470
+ v2 .items [@intCast (k2_offset - 1 )] < v2 .items [@intCast (k2_offset + 1 )]))
471
471
{
472
- x2 = v2 .items [@intCast (usize , k2_offset + 1 )];
472
+ x2 = v2 .items [@intCast (k2_offset + 1 )];
473
473
} else {
474
- x2 = v2 .items [@intCast (usize , k2_offset - 1 )] + 1 ;
474
+ x2 = v2 .items [@intCast (k2_offset - 1 )] + 1 ;
475
475
}
476
476
var y2 : isize = x2 - k2 ;
477
477
while (x2 < before_length and y2 < after_length and
478
- before [@intCast (usize , before_length - x2 - 1 )] ==
479
- after [@intCast (usize , after_length - y2 - 1 )])
478
+ before [@intCast (before_length - x2 - 1 )] ==
479
+ after [@intCast (after_length - y2 - 1 )])
480
480
{
481
481
x2 += 1 ;
482
482
y2 += 1 ;
483
483
}
484
- v2 .items [@intCast (usize , k2_offset )] = x2 ;
484
+ v2 .items [@intCast (k2_offset )] = x2 ;
485
485
if (x2 > before_length ) {
486
486
// Ran off the left of the graph.
487
487
k2end += 2 ;
@@ -490,11 +490,11 @@ fn diffBisect(
490
490
k2start += 2 ;
491
491
} else if (! front ) {
492
492
const k1_offset = v_offset + delta - k2 ;
493
- if (k1_offset >= 0 and k1_offset < v_length and v1 .items [@intCast (usize , k1_offset )] != -1 ) {
494
- const x1 = v1 .items [@intCast (usize , k1_offset )];
493
+ if (k1_offset >= 0 and k1_offset < v_length and v1 .items [@intCast (k1_offset )] != -1 ) {
494
+ const x1 = v1 .items [@intCast (k1_offset )];
495
495
const y1 = v_offset + x1 - k1_offset ;
496
496
// Mirror x2 onto top-left coordinate system.
497
- x2 = before_length - v2 .items [@intCast (usize , k2_offset )];
497
+ x2 = before_length - v2 .items [@intCast (k2_offset )];
498
498
if (x1 >= x2 ) {
499
499
// Overlap detected.
500
500
return dmp .diffBisectSplit (allocator , before , after , x1 , y1 , deadline );
@@ -528,10 +528,10 @@ fn diffBisectSplit(
528
528
y : isize ,
529
529
deadline : u64 ,
530
530
) DiffError ! DiffList {
531
- const text1a = text1 [0.. @intCast (usize , x )];
532
- const text2a = text2 [0.. @intCast (usize , y )];
533
- const text1b = text1 [@intCast (usize , x ).. ];
534
- const text2b = text2 [@intCast (usize , y ).. ];
531
+ const text1a = text1 [0.. @intCast (x )];
532
+ const text2a = text2 [0.. @intCast (y )];
533
+ const text1b = text1 [@intCast (x ).. ];
534
+ const text2b = text2 [@intCast (y ).. ];
535
535
536
536
// Compute both diffs serially.
537
537
var diffs = try dmp .diffInternal (allocator , text1a , text2a , false , deadline );
@@ -680,24 +680,24 @@ fn diffLinesToCharsMunge(
680
680
// Walk the text, pulling out a Substring for each line.
681
681
// text.split('\n') would would temporarily double our memory footprint.
682
682
// Modifying text would create many large strings to garbage collect.
683
- while (line_end < @intCast (isize , text .len ) - 1 ) {
683
+ while (line_end < @as (isize , @intCast ( text .len ) ) - 1 ) {
684
684
line_end = b : {
685
- break :b @intCast (isize , std .mem .indexOf (u8 , text [@intCast (usize , line_start ).. ], "\n " ) orelse
686
- break :b @intCast (isize , text .len - 1 )) + line_start ;
685
+ break :b @as (isize , @intCast ( std .mem .indexOf (u8 , text [@intCast (line_start ).. ], "\n " ) orelse
686
+ break :b @intCast (text .len - 1 ) )) + line_start ;
687
687
};
688
- line = text [@intCast (usize , line_start ) .. @intCast (usize , line_start ) + @intCast (usize , line_end + 1 - line_start )];
688
+ line = text [@intCast (line_start ) .. @as (usize , @intCast ( line_start )) + @as (usize , @intCast ( line_end + 1 - line_start ) )];
689
689
690
690
if (line_hash .get (line )) | value | {
691
- try chars .append (allocator , @intCast (u8 , value ));
691
+ try chars .append (allocator , @intCast (value ));
692
692
} else {
693
693
if (line_array .items .len == max_lines ) {
694
694
// Bail out at 255 because char 256 == char 0.
695
- line = text [@intCast (usize , line_start ).. ];
696
- line_end = @intCast (isize , text .len );
695
+ line = text [@intCast (line_start ).. ];
696
+ line_end = @intCast (text .len );
697
697
}
698
698
try line_array .append (allocator , line );
699
699
try line_hash .put (allocator , line , line_array .items .len - 1 );
700
- try chars .append (allocator , @intCast (u8 , line_array .items .len - 1 ));
700
+ try chars .append (allocator , @intCast (line_array .items .len - 1 ));
701
701
}
702
702
line_start = line_end + 1 ;
703
703
}
@@ -934,18 +934,18 @@ fn diffCleanupSemantic(allocator: std.mem.Allocator, diffs: *DiffList) DiffError
934
934
var length_insertions2 : usize = 0 ;
935
935
var length_deletions2 : usize = 0 ;
936
936
while (pointer < diffs .items .len ) {
937
- if (diffs .items [@intCast (usize , pointer )].operation == .equal ) { // Equality found.
937
+ if (diffs .items [@intCast (pointer )].operation == .equal ) { // Equality found.
938
938
try equalities .append (allocator , pointer );
939
939
length_insertions1 = length_insertions2 ;
940
940
length_deletions1 = length_deletions2 ;
941
941
length_insertions2 = 0 ;
942
942
length_deletions2 = 0 ;
943
- last_equality = diffs .items [@intCast (usize , pointer )].text ;
943
+ last_equality = diffs .items [@intCast (pointer )].text ;
944
944
} else { // an insertion or deletion
945
- if (diffs .items [@intCast (usize , pointer )].operation == .insert ) {
946
- length_insertions2 += diffs .items [@intCast (usize , pointer )].text .len ;
945
+ if (diffs .items [@intCast (pointer )].operation == .insert ) {
946
+ length_insertions2 += diffs .items [@intCast (pointer )].text .len ;
947
947
} else {
948
- length_deletions2 += diffs .items [@intCast (usize , pointer )].text .len ;
948
+ length_deletions2 += diffs .items [@intCast (pointer )].text .len ;
949
949
}
950
950
// Eliminate an equality that is smaller or equal to the edits on both
951
951
// sides of it.
@@ -956,11 +956,11 @@ fn diffCleanupSemantic(allocator: std.mem.Allocator, diffs: *DiffList) DiffError
956
956
// Duplicate record.
957
957
try diffs .insert (
958
958
allocator ,
959
- @intCast (usize , equalities .items [equalities .items .len - 1 ]),
959
+ @intCast (equalities .items [equalities .items .len - 1 ]),
960
960
Diff .init (.delete , try allocator .dupe (u8 , last_equality .? )),
961
961
);
962
962
// Change second copy to insert.
963
- diffs .items [@intCast (usize , equalities .items [equalities .items .len - 1 ] + 1 )].operation = .insert ;
963
+ diffs .items [@intCast (equalities .items [equalities .items .len - 1 ] + 1 )].operation = .insert ;
964
964
// Throw away the equality we just deleted.
965
965
_ = equalities .pop ();
966
966
if (equalities .items .len > 0 ) {
@@ -992,46 +992,46 @@ fn diffCleanupSemantic(allocator: std.mem.Allocator, diffs: *DiffList) DiffError
992
992
// Only extract an overlap if it is as big as the edit ahead or behind it.
993
993
pointer = 1 ;
994
994
while (pointer < diffs .items .len ) {
995
- if (diffs .items [@intCast (usize , pointer - 1 )].operation == .delete and
996
- diffs .items [@intCast (usize , pointer )].operation == .insert )
995
+ if (diffs .items [@intCast (pointer - 1 )].operation == .delete and
996
+ diffs .items [@intCast (pointer )].operation == .insert )
997
997
{
998
- const deletion = diffs .items [@intCast (usize , pointer - 1 )].text ;
999
- const insertion = diffs .items [@intCast (usize , pointer )].text ;
998
+ const deletion = diffs .items [@intCast (pointer - 1 )].text ;
999
+ const insertion = diffs .items [@intCast (pointer )].text ;
1000
1000
var overlap_length1 : usize = diffCommonOverlap (deletion , insertion );
1001
1001
var overlap_length2 : usize = diffCommonOverlap (insertion , deletion );
1002
1002
if (overlap_length1 >= overlap_length2 ) {
1003
- if (@floatFromInt (f32 , overlap_length1 ) >= @floatFromInt (f32 , deletion .len ) / 2.0 or
1004
- @floatFromInt (f32 , overlap_length1 ) >= @floatFromInt (f32 , insertion .len ) / 2.0 )
1003
+ if (@as (f32 , @floatFromInt ( overlap_length1 )) >= @as (f32 , @floatFromInt ( deletion .len ) ) / 2.0 or
1004
+ @as (f32 , @floatFromInt ( overlap_length1 )) >= @as (f32 , @floatFromInt ( insertion .len ) ) / 2.0 )
1005
1005
{
1006
1006
// Overlap found.
1007
1007
// Insert an equality and trim the surrounding edits.
1008
1008
try diffs .insert (
1009
1009
allocator ,
1010
- @intCast (usize , pointer ),
1010
+ @intCast (pointer ),
1011
1011
Diff .init (.equal , try allocator .dupe (u8 , insertion [0.. overlap_length1 ])),
1012
1012
);
1013
- diffs .items [@intCast (usize , pointer - 1 )].text =
1013
+ diffs .items [@intCast (pointer - 1 )].text =
1014
1014
try allocator .dupe (u8 , deletion [0 .. deletion .len - overlap_length1 ]);
1015
- diffs .items [@intCast (usize , pointer + 1 )].text =
1015
+ diffs .items [@intCast (pointer + 1 )].text =
1016
1016
try allocator .dupe (u8 , insertion [overlap_length1 .. ]);
1017
1017
pointer += 1 ;
1018
1018
}
1019
1019
} else {
1020
- if (@floatFromInt (f32 , overlap_length2 ) >= @floatFromInt (f32 , deletion .len ) / 2.0 or
1021
- @floatFromInt (f32 , overlap_length2 ) >= @floatFromInt (f32 , insertion .len ) / 2.0 )
1020
+ if (@as (f32 , @floatFromInt ( overlap_length2 )) >= @as (f32 , @floatFromInt ( deletion .len ) ) / 2.0 or
1021
+ @as (f32 , @floatFromInt ( overlap_length2 )) >= @as (f32 , @floatFromInt ( insertion .len ) ) / 2.0 )
1022
1022
{
1023
1023
// Reverse overlap found.
1024
1024
// Insert an equality and swap and trim the surrounding edits.
1025
1025
try diffs .insert (
1026
1026
allocator ,
1027
- @intCast (usize , pointer ),
1027
+ @intCast (pointer ),
1028
1028
Diff .init (.equal , try allocator .dupe (u8 , deletion [0.. overlap_length2 ])),
1029
1029
);
1030
- diffs .items [@intCast (usize , pointer - 1 )].operation = .insert ;
1031
- diffs .items [@intCast (usize , pointer - 1 )].text =
1030
+ diffs .items [@intCast (pointer - 1 )].operation = .insert ;
1031
+ diffs .items [@intCast (pointer - 1 )].text =
1032
1032
try allocator .dupe (u8 , insertion [0 .. insertion .len - overlap_length2 ]);
1033
- diffs .items [@intCast (usize , pointer + 1 )].operation = .delete ;
1034
- diffs .items [@intCast (usize , pointer + 1 )].text =
1033
+ diffs .items [@intCast (pointer + 1 )].operation = .delete ;
1034
+ diffs .items [@intCast (pointer + 1 )].text =
1035
1035
try allocator .dupe (u8 , deletion [overlap_length2 .. ]);
1036
1036
pointer += 1 ;
1037
1037
}
@@ -1051,7 +1051,7 @@ pub fn diffCleanupSemanticLossless(
1051
1051
) DiffError ! void {
1052
1052
var pointer : usize = 1 ;
1053
1053
// Intentionally ignore the first and last element (don't need checking).
1054
- while (pointer < @intCast (isize , diffs .items .len ) - 1 ) {
1054
+ while (pointer < @as (isize , @intCast ( diffs .items .len ) ) - 1 ) {
1055
1055
if (diffs .items [pointer - 1 ].operation == .equal and
1056
1056
diffs .items [pointer + 1 ].operation == .equal )
1057
1057
{
0 commit comments