This commit is contained in:
parent
b844e02ff5
commit
e5f60689cd
|
|
@ -113,13 +113,16 @@ namespace SyntaxVisitors
|
|||
return;
|
||||
}
|
||||
|
||||
var newNameCache = new Dictionary<string, string>();
|
||||
|
||||
var newLocalNames = var_def.vars.idents.Select(id =>
|
||||
{
|
||||
var low = id.name.ToLower();
|
||||
|
||||
var newName = this.CreateNewVariableName(low);
|
||||
//BlockNamesStack[CurrentLevel].Add(low, newName);
|
||||
BlockNamesStack[CurrentLevel][low] = newName;
|
||||
//BlockNamesStack[CurrentLevel][low] = newName;
|
||||
newNameCache[low] = newName;
|
||||
return new ident(newName, id.source_context);
|
||||
});
|
||||
|
||||
|
|
@ -130,6 +133,8 @@ namespace SyntaxVisitors
|
|||
Replace(var_def, newVS);
|
||||
listNodes[listNodes.Count - 1] = newVS; //SSM 8.11.18
|
||||
ProcessNode(newVS.inital_value); // SSM 10.06.2020 #2103
|
||||
foreach (var key in newNameCache.Keys)
|
||||
BlockNamesStack[CurrentLevel][key] = newNameCache[key];
|
||||
//base.visit(newVS); // SSM 10.06.2020 - зачем обходить всё?
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,14 +3,27 @@
|
|||
function f1: sequence of integer;
|
||||
begin
|
||||
//Ошибка: Ожидалось имя процедуры или функции
|
||||
var v := 1;//V(0);
|
||||
var v := V(0);
|
||||
// Если закомментировать эту строчку - предыдущая строчка работает
|
||||
yield v;
|
||||
end;
|
||||
|
||||
function f2: sequence of integer;
|
||||
begin
|
||||
//Ошибка: Ожидалось имя процедуры или функции
|
||||
var v := V(0);
|
||||
var w := v + 1;
|
||||
// Если закомментировать эту строчку - предыдущая строчка работает
|
||||
yield w;
|
||||
end;
|
||||
|
||||
begin
|
||||
var i := 0;
|
||||
foreach var j in f1 do
|
||||
i := j;
|
||||
assert(i = 1);
|
||||
|
||||
foreach var j in f2 do
|
||||
i := j;
|
||||
assert(i = 2);
|
||||
end.
|
||||
Loading…
Reference in a new issue