Добавление очистки кэша типизированных файлов и множеств для исправления отличий в 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
|
|
@ -293,6 +293,18 @@ namespace PascalABCCompiler.TreeConverter
|
|||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Очистка переменных перед компиляцией интерфейсной или имплементационной части модуля
|
||||
/// </summary>
|
||||
public void ResetBeforeModuleCompilation()
|
||||
{
|
||||
// Эти кэши нужно очищать перед компиляцией модуля, потому что иначе
|
||||
// в pcu файлы будет записываться разное кол-во типов оттуда в зависимости от того,
|
||||
// использовались ли они в других модулях, которые компилировались ранее EVA 26.03.2026
|
||||
TypedFiles.Clear();
|
||||
TypedSets.Clear();
|
||||
}
|
||||
|
||||
public void reset()
|
||||
{
|
||||
//CurrentHandlerList = null; // SSM 29/03/22 - не сработало
|
||||
|
|
@ -310,9 +322,7 @@ namespace PascalABCCompiler.TreeConverter
|
|||
type_stack.Clear();
|
||||
clear_special_local_vars();
|
||||
_scope_stack.Clear();
|
||||
TypedFiles.Clear();
|
||||
ShortStringTypes.Clear();
|
||||
TypedSets.Clear();
|
||||
_compiled_tn = null;
|
||||
_explicit_interface_type = null;
|
||||
_ctt = null;
|
||||
|
|
|
|||
|
|
@ -178,7 +178,10 @@ namespace PascalABCCompiler.TreeConverter
|
|||
/// <summary>
|
||||
/// Можно переопределять для добавления действий перед конвертацией интерфейсной и имплементационной частей
|
||||
/// </summary>
|
||||
public virtual void BeforeCompilationActions() { }
|
||||
public virtual void BeforeCompilationActions()
|
||||
{
|
||||
ResetBeforeModuleCompilation();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Можно переопределять для добавления действий после конвертации интерфейсной и имплементационной частей
|
||||
|
|
@ -659,6 +662,14 @@ namespace PascalABCCompiler.TreeConverter
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Очистка переменных перед компиляцией интерфейсной или имплементационной части модуля
|
||||
/// </summary>
|
||||
private void ResetBeforeModuleCompilation()
|
||||
{
|
||||
context.ResetBeforeModuleCompilation();
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
_system_unit = null;
|
||||
|
|
|
|||
Loading…
Reference in a new issue