|
@@ -317,6 +317,7 @@ type
|
|
Procedure TestRepeatUntilNonBoolFail;
|
|
Procedure TestRepeatUntilNonBoolFail;
|
|
Procedure TestWhileDoNonBoolFail;
|
|
Procedure TestWhileDoNonBoolFail;
|
|
Procedure TestIfThenNonBoolFail;
|
|
Procedure TestIfThenNonBoolFail;
|
|
|
|
+ Procedure TestIfAssignMissingSemicolonFail;
|
|
Procedure TestForLoopVarNonVarFail;
|
|
Procedure TestForLoopVarNonVarFail;
|
|
Procedure TestForLoopStartIncompFail;
|
|
Procedure TestForLoopStartIncompFail;
|
|
Procedure TestForLoopEndIncompFail;
|
|
Procedure TestForLoopEndIncompFail;
|
|
@@ -4227,19 +4228,21 @@ end;
|
|
procedure TTestResolver.TestStatements;
|
|
procedure TTestResolver.TestStatements;
|
|
begin
|
|
begin
|
|
StartProgram(false);
|
|
StartProgram(false);
|
|
- Add('var');
|
|
|
|
- Add(' v1,v2,v3:longint;');
|
|
|
|
- Add('begin');
|
|
|
|
- Add(' v1:=1;');
|
|
|
|
- Add(' v2:=v1+v1*v1+v1 div v1;');
|
|
|
|
- Add(' v3:=-v1;');
|
|
|
|
- Add(' repeat');
|
|
|
|
- Add(' v1:=v1+1;');
|
|
|
|
- Add(' until v1>=5;');
|
|
|
|
- Add(' while v1>=0 do');
|
|
|
|
- Add(' v1:=v1-v2;');
|
|
|
|
- Add(' for v1:=v2 to v3 do v2:=v1;');
|
|
|
|
- Add(' if v1<v2 then v3:=v1 else v3:=v2;');
|
|
|
|
|
|
+ Add([
|
|
|
|
+ 'var',
|
|
|
|
+ ' v1,v2,v3:longint;',
|
|
|
|
+ 'begin',
|
|
|
|
+ ' v1:=1;',
|
|
|
|
+ ' v2:=v1+v1*v1+v1 div v1;',
|
|
|
|
+ ' v3:=-v1;',
|
|
|
|
+ ' repeat',
|
|
|
|
+ ' v1:=v1+1;',
|
|
|
|
+ ' until v1>=5;',
|
|
|
|
+ ' while v1>=0 do',
|
|
|
|
+ ' v1:=v1-v2;',
|
|
|
|
+ ' for v1:=v2 to v3 do v2:=v1;',
|
|
|
|
+ ' if v1<v2 then v3:=v1 else v3:=v2;',
|
|
|
|
+ '']);
|
|
ParseProgram;
|
|
ParseProgram;
|
|
AssertEquals('3 declarations',3,PasProgram.ProgramSection.Declarations.Count);
|
|
AssertEquals('3 declarations',3,PasProgram.ProgramSection.Declarations.Count);
|
|
end;
|
|
end;
|
|
@@ -4450,6 +4453,18 @@ begin
|
|
CheckResolverException('Boolean expected, but Longint found',nXExpectedButYFound);
|
|
CheckResolverException('Boolean expected, but Longint found',nXExpectedButYFound);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TTestResolver.TestIfAssignMissingSemicolonFail;
|
|
|
|
+begin
|
|
|
|
+ StartProgram(false);
|
|
|
|
+ Add([
|
|
|
|
+ 'var',
|
|
|
|
+ ' v:longint;',
|
|
|
|
+ 'begin',
|
|
|
|
+ ' if true then v:=1',
|
|
|
|
+ ' v:=2']);
|
|
|
|
+ CheckParserException('Expected "Semicolon"',nParserExpectTokenError);
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TTestResolver.TestForLoopVarNonVarFail;
|
|
procedure TTestResolver.TestForLoopVarNonVarFail;
|
|
begin
|
|
begin
|
|
StartProgram(false);
|
|
StartProgram(false);
|