Skip to content

Commit

Permalink
reduce table analyzer
Browse files Browse the repository at this point in the history
  • Loading branch information
CppCXY committed Aug 16, 2024
1 parent 8b45db6 commit 6fbfaed
Showing 1 changed file with 37 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,17 +1,34 @@
using EmmyLua.CodeAnalysis.Compilation.Analyzer.ResolveAnalyzer;
using EmmyLua.CodeAnalysis.Compilation.Symbol;
using EmmyLua.CodeAnalysis.Document;
using EmmyLua.CodeAnalysis.Syntax.Node.SyntaxNodes;

namespace EmmyLua.CodeAnalysis.Compilation.Analyzer.DeclarationAnalyzer.DeclarationWalker;

public partial class DeclarationWalker
{
private List<SourceRange> TableIgnoreRanges { get; } = new();

private void AnalyzeTableExpr(LuaTableExprSyntax tableExprSyntax)
{
if (IsIgnoreTable(tableExprSyntax))
{
return;
}

declarationContext.TypeManager.AddDocumentElementType(tableExprSyntax.UniqueId);
var fields = new List<LuaSymbol>();
foreach (var fieldSyntax in tableExprSyntax.FieldList)
var fieldList = tableExprSyntax.FieldList.ToList();
for (var i = 0; i < fieldList.Count; i++)
{
var fieldSyntax = fieldList[i];
if (i == 0 && fieldSyntax.IsValue)
{
// declarationContext.TypeManager.AddDocumentElementType(fieldSyntax.UniqueId);
TableIgnoreRanges.Add(tableExprSyntax.Range);
return;
}

if (fieldSyntax is { Name: { } fieldName, Value: { } value })
{
var declaration = new LuaSymbol(
Expand All @@ -35,4 +52,23 @@ private void AnalyzeTableExpr(LuaTableExprSyntax tableExprSyntax)
declarationContext.TypeManager.AddElementMembers(tableExprSyntax.UniqueId, fields);
}
}

private bool IsIgnoreTable(LuaTableExprSyntax tableExprSyntax)
{
if (TableIgnoreRanges.Count == 0)
{
return false;
}

var tableRange = tableExprSyntax.Range;
foreach (var range in TableIgnoreRanges)
{
if (range.Intersect(tableRange))
{
return true;
}
}

return false;
}
}

0 comments on commit 6fbfaed

Please sign in to comment.