Warning, /frameworks/ktexteditor/autotests/input/indent/pascal/longtest4/expected is written in an unsupported language. File is not indexed.
0001 // kate: space-indent on; indent-width 4; replace-tabs on; remove-trailing-spaces all;
0002 // kate: syntax pascal; indent-mode pascal;
0003
0004 // these variables are understood by the pascal indenter ...
0005 // kate: cfgIndentCase false; // indent elements in a case statement
0006 // kate: cfgIndentBegin 0; // indent 'begin' this many spaces
0007 // kate: debugMode false; // show how indent is determined
0008 // kate: cfgAutoInsertStar true; // auto insert '*' in (* ... *)-comments
0009 // kate: cfgSnapParen true; // snap '* )' to '*)' in comments
0010
0011 begin {main program }
0012
0013 if f1 > 0 then result := f1-1
0014 else begin
0015 f1 := -23;
0016 end;
0017
0018 case e012 of
0019 2:
0020 if eeeeeeeeeeeeeeeeee
0021 or e33333333333
0022 then
0023 a := 12
0024 else
0025 for iiiiiiiiiii := 12
0026 to 89 // CHECK 89 lines up with 12
0027 do begin
0028 if very_long_expression
0029 or another_very_long_expression
0030 and yet_another_very_long_expression then
0031 s1;
0032 s11;
0033 end;
0034 1:
0035 if e
0036 +e2
0037 +e3
0038 +e2
0039 or 75 // CHECK: follows first continue line
0040 then
0041 for i := 1
0042 to 89
0043 do begin
0044 a := 12 + 24
0045 3 + // CHECK 3 lines up with 24 above
0046 19 +
0047 25;
0048 s1 := e1
0049 + e2;
0050 end;
0051 5:
0052 f32verylongfunctionnamezzzzzzzzzzzzzzz(
0053 z, // user can realign this anywhere
0054 a,b, // this should line up with 'z'''
0055 c,
0056 d,
0057 e
0058 );
0059
0060 3: begin
0061 s0;
0062 s3; // bad code, 'end' is missing
0063 //end; // missing end, so next few case values interpreted as labels
0064 5:
0065 if q then z;
0066
0067 s3; // code error - case value belongs here, not statement
0068 5:
0069 if c2 then s2;
0070
0071 16:
0072 if c2 then
0073 s1;
0074 17:
0075 if c2 then begin s1; s2 end;
0076
0077 4:
0078 if a then begin
0079 s2;
0080 s3 // no trailing semi, but it indents
0081 end;
0082 end; { ** bad code ** } // crossed begin/end - matches '3: begin' above
0083
0084
0085 2: s2;
0086 3: while c4
0087 and e3 do // CHECK: should indent beyond while
0088 s8;
0089 1: s1;
0090 {
0091 23:
0092 }
0093 23: s1;
0094 s2:
0095 begin
0096 s2
0097 s3 // no trailing semi in line above, but it indents correctly
0098 end; // need ';' to force alignment with new case value
0099 otherwise if a then b;
0100 if c0 then begin
0101 if c1 then begin
0102 // it does!!
0103 if c3 then
0104 write( // CHECK: deeply nested levels of parens
0105 f(5.5),
0106 'test', // should be aligned
0107 notCaseValue:4,
0108 f1(8,8),
0109 ff( a,
0110 b( f(13),
0111 12,
0112 x
0113 ),
0114 c( g(55) ),
0115
0116 ));
0117
0118 end else // statement unfinished
0119 otherwise // duplicate eotherwise
0120 if a then begin
0121 b
0122 end else if a1 then begin
0123 c;
0124 c;
0125 if a
0126 and a1 then
0127 b
0128 else
0129 c; { CHECK: outdents only when 'c' is followed by ';' }
0130 if a then begin
0131 b;
0132 b1;
0133 end else
0134 s3;
0135 if a then b else c;
0136 if a then
0137 b
0138 else
0139 c;
0140 if a then b
0141 else f( arg,
0142 arg2,
0143 a1,
0144 a2
0145 # this is a pp line!! // bug! silly place to put a pp line
0146 f( a,
0147 b
0148 ));
0149
0150 if a then
0151 b
0152 else if c1 then
0153 s1;
0154 if c2 then begin
0155 s33;
0156 s34
0157 end; { !!! classic error, shouldn't be a semi colon here }
0158 else if c3 then begin
0159 s44;
0160 s45
0161 end else begin
0162 s;
0163 s;
0164 end
0165
0166 end else if c1 then begin // comment
0167 s3
0168 end;
0169
0170 while c3 do
0171 s4;
0172 end; // spurious end
0173
0174 s0;
0175 s1;
0176 s2;
0177 s3;
0178 end // case e012 of
0179 else if c2 then begin // spurious else
0180
0181 ss;
0182
0183 if c1 then begin
0184 write( 'test',
0185 notCaseValue:4
0186 )
0187 end else // this else has no statement
0188 end else begin { should still be in sync }
0189
0190 s1;
0191
0192 s1;
0193
0194
0195
0196 s2
0197 end;
0198
0199 f( a,
0200 b,
0201 )
0202
0203 ff( a,
0204 b,
0205 c
0206 )
0207 ))
0208
0209 writeln( 'this is a string ', n:1, ' ', ' ', r:10:2 );
0210
0211 with p do
0212 begin
0213
0214 end;
0215
0216 with p065 do
0217 begin
0218 x := 2;
0219 end;
0220 case e07 of
0221 0:
0222 1: s1;
0223 2: begin
0224 s2;
0225 s3;
0226 end;
0227 3: s3;
0228 12:
0229
0230 15:
0231 4,5,6..9: begin s1; end;
0232 otherwise
0233 s6;
0234
0235
0236 s3;
0237 s1;
0238
0239 s2;
0240
0241 while e and
0242 e2 DO begin { comment }
0243 s0;
0244 s33;
0245 s44;
0246 end;
0247
0248 if e97 then begin
0249 s3;
0250 label:
0251 while c103 do begin
0252 s4;
0253 q := 0;
0254 case e of
0255 12,13..16,20: begin
0256 s2;
0257 s3;
0258 end;
0259 8: writeln( 'test',
0260 x,
0261 r:4
0262 );
0263 9:
0264
0265 end;
0266 while c1
0267 and c2 do begin
0268 s5;
0269 s9;
0270 end;
0271
0272 s;
0273 s;
0274 s1;
0275 if e105 then
0276 if c2 then begin
0277
0278 s3;
0279 end; // if
0280
0281 case e11 of
0282 2..4,5: begin
0283 s1;
0284 s2
0285 end;
0286
0287
0288 3: a:= 13;
0289
0290
0291 89:
0292
0293 case e12 of
0294 2,3:
0295 a:=13;
0296 2: begin
0297 a:= 13
0298 end;
0299 5,6,
0300 7:
0301 otherwise
0302
0303 s3;
0304 s4;
0305 end; // case e12 of
0306
0307 otherwise
0308
0309
0310 s4;
0311 s5;
0312 if c2 then
0313 s5
0314 end; // case e11 of
0315
0316 s3;
0317
0318 end; // while c103
0319
0320 end; // if e97
0321
0322 repeat
0323 s3;
0324 s4;
0325 until c1;
0326
0327 s0;
0328 s1;
0329
0330 if e then begin
0331 s3;
0332 s4;
0333 s0;
0334
0335 s1;
0336
0337 s1;
0338 s1;
0339 end;
0340
0341 repeat
0342 ss;
0343 s2;
0344 if e then
0345 ss;
0346 s3;
0347 s1;
0348 until e;
0349
0350 if e then begin
0351 s1;
0352 s3;
0353 if e then begin
0354 s3;
0355 s5;
0356 end;
0357 s6;
0358 s2;
0359 end;
0360
0361
0362 of:=2; // more bad code
0363
0364 repeat
0365 s1
0366 until c;
0367
0368
0369 a := 123456789;
0370 IF (e1) or (* comment *)
0371 (e2) then
0372
0373 begin // CHECK: the begin should follow 'if' line, not 'then' line
0374
0375 if e then begin s end
0376 else begin
0377 s1;
0378 s2;
0379 end;
0380
0381 if e then
0382 s0;
0383 if e then begin
0384 s1;
0385 s2; ( // unattached parens
0386
0387 )
0388 s; // problem caused by unattached parens
0389 end
0390 123456
0391 { comment }
0392
0393 if e4 then
0394 while e5 do begin
0395 (* ...
0396 * CHECK: stars should line up
0397 *
0398 *
0399 *)
0400 (aa)
0401 if a then b; (* qwe
0402 *rty *)
0403 cc;
0404 s;
0405 // comment
0406
0407 end;
0408
0409
0410 f( a, b)
0411
0412 case e of
0413 12,13: a:=12;
0414 1,2,3,4..6: writeln(
0415 a, 'TODO:', b );
0416
0417 567:
0418 s2;
0419
0420 88: writeln( 'zzzzzzzzzz',
0421 a:12,
0422 b
0423 );
0424 99: writeln(
0425 z:13,
0426 b
0427 );
0428 13: begin
0429 // no statement
0430 end;
0431
0432
0433
0434 0: f( a,
0435 b
0436 );
0437 12: ff ( a,
0438 b
0439 );
0440 (13+12): f( a,
0441 37,508.18
0442 );
0443
0444
0445
0446 2: if a = 12 then
0447 s1;
0448 else begin
0449 s2;
0450 end;
0451
0452 0: writeln( 'zzzzzzzzz',
0453
0454 a:3,
0455 b:4,
0456 'xxxxxxxxxx'
0457
0458 );
0459
0460 1: s1;
0461 3:
0462
0463
0464
0465 2: begin
0466
0467 s1;
0468 s2;
0469 s3;
0470 end;
0471
0472 5 :
0473 writeln( 'this is ',
0474 'multiline arg list'
0475 );
0476
0477
0478
0479
0480 5:
0481 6:
0482 s1;
0483
0484 9:
0485 c := 13;
0486
0487 c2,3,4..7: begin
0488
0489 s4;
0490 sl;
0491 a := 13;
0492
0493 label: // this is a label, not case value
0494 cc;
0495
0496 b := 17;
0497
0498 writeln( 'strrrrrr', a:4 );
0499
0500 end;
0501 c9 :
0502 s1;
0503
0504 end; { case e of }
0505 // comment
0506 ff( a, // this line aligns with 'end'
0507 b, // CHECK: keep relative indent
0508 c
0509 )
0510 ;
0511
0512 end; // begin CHECK:
0513
0514 ggggg:
0515
0516
0517 f(
0518 a,
0519 b,
0520 c
0521 );
0522
0523
0524 writeln( a,
0525
0526 b,
0527
0528 b, { check indent after cr here }
0529 );
0530
0531 f(13);
0532 end; // case e07
0533
0534 end. // main