This commit is contained in:
Mikhalkovich Stanislav 2019-04-04 12:51:53 +03:00
parent 4e45e59d4a
commit 75609986e1
6 changed files with 19 additions and 5 deletions

View file

@ -15,7 +15,7 @@ internal static class RevisionClass
public const string Major = "3"; public const string Major = "3";
public const string Minor = "4"; public const string Minor = "4";
public const string Build = "2"; public const string Build = "2";
public const string Revision = "2018"; public const string Revision = "2023";
public const string MainVersion = Major + "." + Minor; public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

View file

@ -1,4 +1,4 @@
%MINOR%=4
%REVISION%=2018
%COREVERSION%=2 %COREVERSION%=2
%REVISION%=2023
%MINOR%=4
%MAJOR%=3 %MAJOR%=3

View file

@ -1 +1 @@
!define VERSION '3.4.2.2018' !define VERSION '3.4.2.2023'

View file

@ -1709,6 +1709,7 @@ namespace PascalABCCompiler.SyntaxTree
public partial class expression public partial class expression
{ {
//public object semantic_ex;
public expression Plus(expression e) public expression Plus(expression e)
{ {
return new bin_expr(this, e, Operators.Plus); return new bin_expr(this, e, Operators.Plus);

9
TestSuite/loopn.pas Normal file
View file

@ -0,0 +1,9 @@
begin
var n := 10;
loop n do
Assert(n=n);
var p: procedure;
p := ()->begin
Assert(n=n);
end;
end.

View file

@ -848,7 +848,10 @@ namespace PascalABCCompiler.TreeConverter
motivation_keeper.reset(); // Это можно закомментировать - все тесты проходят SSM 2/1/17 motivation_keeper.reset(); // Это можно закомментировать - все тесты проходят SSM 2/1/17
//\ssyy //\ssyy
expression_node en = ret.visit(expr); expression_node en = ret.visit(expr);
//expr.semantic_ex = en; // SSM 3.1.17 кешируем для последующего обращения
//if (lambdaProcessingState == LambdaProcessingState.FinishPhase)
// expr.semantic_ex = en; // SSM 3.1.17 кешируем для последующего обращения
if (en == null) if (en == null)
AddError(get_location(expr), "EXPRESSION_EXPECTED"); AddError(get_location(expr), "EXPRESSION_EXPECTED");
//en.loc=get_location(expr); //en.loc=get_location(expr);
@ -20160,6 +20163,7 @@ namespace PascalABCCompiler.TreeConverter
AddError(get_location(st), "MISSED_SEMANTIC_CHECK_FOR_SUGARED_NODE_{0}", (st.typ as System.Type)?.Name ?? "Unknown"); AddError(get_location(st), "MISSED_SEMANTIC_CHECK_FOR_SUGARED_NODE_{0}", (st.typ as System.Type)?.Name ?? "Unknown");
} }
ret.reset(); // обязательно очистить - этот узел в семантику ничего не должен приносить! ret.reset(); // обязательно очистить - этот узел в семантику ничего не должен приносить!
ReplaceUsingParent(st, new PascalABCCompiler.SyntaxTree.empty_statement());
} }
public override void visit(SyntaxTree.semantic_check_sugared_var_def_statement_node st) public override void visit(SyntaxTree.semantic_check_sugared_var_def_statement_node st)