Skip to content

Commit 879825f

Browse files
committed
#153 - generic FindSymbol
1 parent 78c3bc6 commit 879825f

File tree

10 files changed

+18
-20
lines changed

10 files changed

+18
-20
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using HydraScript.Domain.IR.Impl.SymbolIds;
21
using HydraScript.Domain.IR.Impl.Symbols;
2+
using HydraScript.Domain.IR.Impl.Symbols.Ids;
33
using HydraScript.Domain.IR.Types;
44

55
namespace HydraScript.Application.StaticAnalysis;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using HydraScript.Domain.FrontEnd.Parser.Impl.Ast.Nodes.Declarations.AfterTypesAreLoaded;
2-
using HydraScript.Domain.IR.Impl.SymbolIds;
32
using HydraScript.Domain.IR.Impl.Symbols;
3+
using HydraScript.Domain.IR.Impl.Symbols.Ids;
44

55
namespace HydraScript.Application.StaticAnalysis.Impl;
66

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using HydraScript.Domain.IR.Impl.SymbolIds;
21
using HydraScript.Domain.IR.Impl.Symbols;
2+
using HydraScript.Domain.IR.Impl.Symbols.Ids;
33
using HydraScript.Domain.IR.Types;
44

55
namespace HydraScript.Application.StaticAnalysis.Impl;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using HydraScript.Domain.FrontEnd.Parser.Impl.Ast.Nodes.Declarations;
2-
using HydraScript.Domain.IR.Impl.SymbolIds;
32
using HydraScript.Domain.IR.Impl.Symbols;
3+
using HydraScript.Domain.IR.Impl.Symbols.Ids;
44

55
namespace HydraScript.Application.StaticAnalysis.Impl;
66

@@ -33,7 +33,7 @@ public void Resolve()
3333
var declarationToResolve = _declarationsToResolve.Dequeue();
3434

3535
var typeSymbol = symbolTables[declarationToResolve.Scope]
36-
.FindSymbol<TypeSymbol>(new TypeSymbolId(declarationToResolve.TypeId))!;
36+
.FindSymbol(new TypeSymbolId(declarationToResolve.TypeId))!;
3737

3838
var resolvingCandidates = symbolTables[declarationToResolve.Scope]
3939
.GetAvailableSymbols()

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
using HydraScript.Domain.FrontEnd.Parser.Impl.Ast.Nodes.Declarations.AfterTypesAreLoaded;
55
using HydraScript.Domain.FrontEnd.Parser.Impl.Ast.Nodes.Expressions.ComplexLiterals;
66
using HydraScript.Domain.FrontEnd.Parser.Impl.Ast.Nodes.Expressions.PrimaryExpressions;
7-
using HydraScript.Domain.IR.Impl.SymbolIds;
87
using HydraScript.Domain.IR.Impl.Symbols;
8+
using HydraScript.Domain.IR.Impl.Symbols.Ids;
99
using HydraScript.Domain.IR.Types;
1010

1111
namespace HydraScript.Application.StaticAnalysis.Visitors;

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
using HydraScript.Domain.FrontEnd.Parser.Impl.Ast.Nodes.Expressions.ComplexLiterals;
1010
using HydraScript.Domain.FrontEnd.Parser.Impl.Ast.Nodes.Expressions.PrimaryExpressions;
1111
using HydraScript.Domain.FrontEnd.Parser.Impl.Ast.Nodes.Statements;
12-
using HydraScript.Domain.IR.Impl.SymbolIds;
1312
using HydraScript.Domain.IR.Impl.Symbols;
13+
using HydraScript.Domain.IR.Impl.Symbols.Ids;
1414
using HydraScript.Domain.IR.Types;
1515

1616
namespace HydraScript.Application.StaticAnalysis.Visitors;
@@ -138,7 +138,7 @@ public Type Visit(ExpressionStatement visitable) =>
138138

139139
public Type Visit(IdentifierReference visitable)
140140
{
141-
var symbol = _symbolTables[visitable.Scope].FindSymbol<VariableSymbol>(new VariableSymbolId(visitable.Name));
141+
var symbol = _symbolTables[visitable.Scope].FindSymbol(new VariableSymbolId(visitable.Name));
142142
if (symbol is { Initialized: false })
143143
throw new AccessBeforeInitialization(visitable);
144144
return symbol?.Type ?? throw new UnknownIdentifierReference(visitable);
@@ -277,9 +277,9 @@ public Type Visit(LexicalDeclaration visitable)
277277
for (var i = 0; i < visitable.Assignments.Count; i++)
278278
{
279279
var assignment = visitable.Assignments[i];
280-
var registeredSymbol = _symbolTables[visitable.Scope].FindSymbol<VariableSymbol>(
281-
new VariableSymbolId(assignment.Destination.Id))!;
280+
var registeredSymbol = _symbolTables[visitable.Scope].FindSymbol(new VariableSymbolId(assignment.Destination.Id))!;
282281
var sourceType = assignment.Source.Accept(This);
282+
283283
if (sourceType.Equals(undefined))
284284
throw new CannotDefineType(assignment.Source.Segment);
285285
if (sourceType.Equals(@void))
@@ -325,8 +325,7 @@ public Type Visit(AssignmentExpression visitable)
325325
}
326326

327327
var symbol =
328-
_symbolTables[visitable.Scope].FindSymbol<VariableSymbol>(
329-
new VariableSymbolId(visitable.Destination.Id)) ??
328+
_symbolTables[visitable.Scope].FindSymbol(new VariableSymbolId(visitable.Destination.Id)) ??
330329
throw new UnknownIdentifierReference(visitable.Destination.Id);
331330

332331
if (symbol.ReadOnly)
@@ -416,7 +415,7 @@ public Type Visit(CallExpression visitable)
416415
else
417416
{
418417
functionSymbol =
419-
_symbolTables[visitable.Scope].FindSymbol<FunctionSymbol>(new FunctionSymbolId(visitable.Id, parameters))
418+
_symbolTables[visitable.Scope].FindSymbol(new FunctionSymbolId(visitable.Id, parameters))
420419
?? throw new UnknownIdentifierReference(visitable.Id);
421420
}
422421

@@ -454,7 +453,7 @@ public Type Visit(CallExpression visitable)
454453
public Type Visit(FunctionDeclaration visitable)
455454
{
456455
var parameters = visitable.Arguments.Select(x => x.TypeValue.Accept(_typeBuilder)).ToList();
457-
var symbol = _symbolTables[visitable.Scope].FindSymbol<FunctionSymbol>(new FunctionSymbolId(visitable.Name, parameters))!;
456+
var symbol = _symbolTables[visitable.Scope].FindSymbol(new FunctionSymbolId(visitable.Name, parameters))!;
458457
_functionStorage.RemoveIfPresent(symbol);
459458
visitable.Statements.Accept(This);
460459

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using HydraScript.Application.StaticAnalysis.Exceptions;
22
using HydraScript.Domain.FrontEnd.Parser.Impl.Ast.Nodes.Declarations;
3-
using HydraScript.Domain.IR.Impl.SymbolIds;
4-
using HydraScript.Domain.IR.Impl.Symbols;
3+
using HydraScript.Domain.IR.Impl.Symbols.Ids;
54
using HydraScript.Domain.IR.Types;
65

76
namespace HydraScript.Application.StaticAnalysis.Visitors;
@@ -18,7 +17,7 @@ public TypeBuilder(ISymbolTableStorage symbolTables) =>
1817
_symbolTables = symbolTables;
1918

2019
public Type Visit(TypeIdentValue visitable) =>
21-
_symbolTables[visitable.Scope].FindSymbol<TypeSymbol>(new TypeSymbolId(visitable.TypeId))?.Type ??
20+
_symbolTables[visitable.Scope].FindSymbol(new TypeSymbolId(visitable.TypeId))?.Type ??
2221
throw new UnknownIdentifierReference(visitable.TypeId);
2322

2423
public ArrayType Visit(ArrayTypeValue visitable)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
using HydraScript.Domain.FrontEnd.Parser;
33
using HydraScript.Domain.FrontEnd.Parser.Impl.Ast.Nodes;
44
using HydraScript.Domain.FrontEnd.Parser.Impl.Ast.Nodes.Declarations;
5-
using HydraScript.Domain.IR.Impl.SymbolIds;
65
using HydraScript.Domain.IR.Impl.Symbols;
6+
using HydraScript.Domain.IR.Impl.Symbols.Ids;
77

88
namespace HydraScript.Application.StaticAnalysis.Visitors;
99

src/Domain/HydraScript.Domain.IR/Types/ObjectType.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using System.Text;
2-
using HydraScript.Domain.IR.Impl.SymbolIds;
2+
using HydraScript.Domain.IR.Impl.Symbols.Ids;
33

44
namespace HydraScript.Domain.IR.Types;
55

tests/HydraScript.UnitTests/Application/SymbolTableTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public void FindSymbolTest(ISymbol symbol)
1515
outerScope.AddSymbol(symbol);
1616
innerScope.AddOpenScope(outerScope);
1717

18-
Assert.NotNull(innerScope.FindSymbol<ISymbol>(id));
18+
Assert.NotNull(innerScope.FindSymbol(id));
1919
Assert.True(outerScope.ContainsSymbol(id));
2020
}
2121
}

0 commit comments

Comments
 (0)