Skip to content

Commit 5ae6a61

Browse files
committed
clear state
1 parent b7358ac commit 5ae6a61

File tree

11 files changed

+47
-0
lines changed

11 files changed

+47
-0
lines changed

src/Application/HydraScript.Application.StaticAnalysis/IAmbiguousInvocationStorage.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ public interface IAmbiguousInvocationStorage
99
void CheckCandidatesAndThrow(string segment, FunctionSymbolId invocation);
1010

1111
void Clear(FunctionSymbolId invocation);
12+
13+
void Clear();
1214
}

src/Application/HydraScript.Application.StaticAnalysis/IComputedTypesStorage.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,6 @@ public interface IComputedTypesStorage
55
public Guid Save(Type computedType);
66

77
public Type Get(Guid computedTypeGuid);
8+
9+
public void Clear();
810
}

src/Application/HydraScript.Application.StaticAnalysis/IMethodStorage.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ public interface IMethodStorage
99
public void BindMethod(ObjectType objectType, FunctionSymbol method);
1010

1111
public IReadOnlyDictionary<FunctionSymbolId, FunctionSymbol> GetAvailableMethods(ObjectType objectType);
12+
13+
public void Clear();
1214
}

src/Application/HydraScript.Application.StaticAnalysis/ISymbolTableStorage.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,6 @@ public interface ISymbolTableStorage
1010
public void Init(Scope scope, ISymbolTable symbolTable);
1111

1212
public void InitWithOpenScope(Scope scope);
13+
14+
public void Clear();
1315
}

src/Application/HydraScript.Application.StaticAnalysis/Impl/AmbiguousInvocationStorage.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,6 @@ public void CheckCandidatesAndThrow(string segment, FunctionSymbolId invocation)
2222
}
2323

2424
public void Clear(FunctionSymbolId invocation) => _invocations.Remove(invocation);
25+
26+
public void Clear() => _invocations.Clear();
2527
}

src/Application/HydraScript.Application.StaticAnalysis/Impl/ComputedTypesStorage.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,6 @@ public Guid Save(Type computedType)
1313

1414
public Type Get(Guid computedTypeGuid) =>
1515
_computedTypes[computedTypeGuid];
16+
17+
public void Clear() => _computedTypes.Clear();
1618
}

src/Application/HydraScript.Application.StaticAnalysis/Impl/MethodStorage.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,13 @@ public void BindMethod(ObjectType objectType, FunctionSymbol method)
1818

1919
public IReadOnlyDictionary<FunctionSymbolId, FunctionSymbol> GetAvailableMethods(ObjectType objectType) =>
2020
_bindings.GetValueOrDefault(objectType, new Dictionary<FunctionSymbolId, FunctionSymbol>());
21+
22+
public void Clear()
23+
{
24+
foreach (var objectType in _bindings.Keys)
25+
{
26+
_bindings[objectType].Clear();
27+
}
28+
_bindings.Clear();
29+
}
2130
}

src/Application/HydraScript.Application.StaticAnalysis/Impl/SymbolTableStorage.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,13 @@ public void InitWithOpenScope(Scope scope)
2121
symbolTable.AddOpenScope(_symbolTables[scope.OpenScope.Id]);
2222
_symbolTables[scope.Id] = symbolTable;
2323
}
24+
25+
public void Clear()
26+
{
27+
foreach (var scopeId in _symbolTables.Keys)
28+
{
29+
_symbolTables[scopeId].Clear();
30+
}
31+
_symbolTables.Clear();
32+
}
2433
}

src/Application/HydraScript.Application.StaticAnalysis/Visitors/SemanticChecker.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ public Type Visit(ScriptBody visitable)
7777
foreach (var funcDecl in _functionStorage.Flush())
7878
funcDecl.Accept(This);
7979

80+
_methodStorage.Clear();
81+
_symbolTables.Clear();
82+
_computedTypes.Clear();
83+
_ambiguousInvocations.Clear();
84+
8085
return "undefined";
8186
}
8287

src/Domain/HydraScript.Domain.IR/ISymbolTable.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,9 @@ public void AddSymbol<TSymbol>(TSymbol symbol, ISymbolId<TSymbol> symbolId)
3939
/// </summary>
4040
/// <param name="id">Идентификатор символа</param>
4141
public bool ContainsSymbol(ISymbolId<ISymbol> id);
42+
43+
/// <summary>
44+
/// Очистка таблицы символов
45+
/// </summary>
46+
public void Clear();
4247
}

0 commit comments

Comments
 (0)