Добавление очистки кэша типизированных файлов и множеств для исправления отличий в pcu файлах (#3408)
* Fix cache of typed files, typed sets and short strings clearing * Delete ShortStringTypes clearing * Add doc comments * Return ShortStringTypes clearing in reset method
This commit is contained in:
parent
60799b031b
commit
cda2ab0097
|
|
@ -292,7 +292,19 @@ namespace PascalABCCompiler.TreeConverter
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Очистка переменных перед компиляцией интерфейсной или имплементационной части модуля
|
||||||
|
/// </summary>
|
||||||
|
public void ResetBeforeModuleCompilation()
|
||||||
|
{
|
||||||
|
// Эти кэши нужно очищать перед компиляцией модуля, потому что иначе
|
||||||
|
// в pcu файлы будет записываться разное кол-во типов оттуда в зависимости от того,
|
||||||
|
// использовались ли они в других модулях, которые компилировались ранее EVA 26.03.2026
|
||||||
|
TypedFiles.Clear();
|
||||||
|
TypedSets.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
public void reset()
|
public void reset()
|
||||||
{
|
{
|
||||||
//CurrentHandlerList = null; // SSM 29/03/22 - не сработало
|
//CurrentHandlerList = null; // SSM 29/03/22 - не сработало
|
||||||
|
|
@ -310,9 +322,7 @@ namespace PascalABCCompiler.TreeConverter
|
||||||
type_stack.Clear();
|
type_stack.Clear();
|
||||||
clear_special_local_vars();
|
clear_special_local_vars();
|
||||||
_scope_stack.Clear();
|
_scope_stack.Clear();
|
||||||
TypedFiles.Clear();
|
|
||||||
ShortStringTypes.Clear();
|
ShortStringTypes.Clear();
|
||||||
TypedSets.Clear();
|
|
||||||
_compiled_tn = null;
|
_compiled_tn = null;
|
||||||
_explicit_interface_type = null;
|
_explicit_interface_type = null;
|
||||||
_ctt = null;
|
_ctt = null;
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,10 @@ namespace PascalABCCompiler.TreeConverter
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Можно переопределять для добавления действий перед конвертацией интерфейсной и имплементационной частей
|
/// Можно переопределять для добавления действий перед конвертацией интерфейсной и имплементационной частей
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual void BeforeCompilationActions() { }
|
public virtual void BeforeCompilationActions()
|
||||||
|
{
|
||||||
|
ResetBeforeModuleCompilation();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Можно переопределять для добавления действий после конвертации интерфейсной и имплементационной частей
|
/// Можно переопределять для добавления действий после конвертации интерфейсной и имплементационной частей
|
||||||
|
|
@ -659,6 +662,14 @@ namespace PascalABCCompiler.TreeConverter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Очистка переменных перед компиляцией интерфейсной или имплементационной части модуля
|
||||||
|
/// </summary>
|
||||||
|
private void ResetBeforeModuleCompilation()
|
||||||
|
{
|
||||||
|
context.ResetBeforeModuleCompilation();
|
||||||
|
}
|
||||||
|
|
||||||
public void Reset()
|
public void Reset()
|
||||||
{
|
{
|
||||||
_system_unit = null;
|
_system_unit = null;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue