Skip to content

Commit

Permalink
Update IncrementalBinder.cs
Browse files Browse the repository at this point in the history
  • Loading branch information
LPeter1997 committed Nov 4, 2023
1 parent b57a3f0 commit 2997a1a
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions src/Draco.Compiler/Internal/Binding/IncrementalBinder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using Draco.Compiler.Api.Syntax;
using Draco.Compiler.Internal.Binding;
using Draco.Compiler.Internal.Binding.Tasks;
using Draco.Compiler.Internal.BoundTree;
using Draco.Compiler.Internal.Diagnostics;
using Draco.Compiler.Internal.Solver;
Expand Down Expand Up @@ -67,14 +68,14 @@ public override (Internal.Symbols.TypeSymbol Type, BoundExpression? Value) BindG

// Memoizing overrides /////////////////////////////////////////////////

internal override BoundStatement TypeStatement(BoundStatement statement, ConstraintSolver constraints, DiagnosticBag diagnostics) =>
this.TypeNode(statement, () => base.TypeStatement(statement, constraints, diagnostics));
protected override BindingTask<BoundStatement> BindStatement(SyntaxNode syntax, ConstraintSolver constraints, DiagnosticBag diagnostics) =>
this.MemoizeBinding(syntax, () => base.BindStatement(syntax, constraints, diagnostics));

internal override BoundExpression TypeExpression(BoundExpression expression, ConstraintSolver constraints, DiagnosticBag diagnostics) =>
this.TypeNode(expression, () => base.TypeExpression(expression, constraints, diagnostics));
protected override BindingTask<BoundExpression> BindExpression(SyntaxNode syntax, ConstraintSolver constraints, DiagnosticBag diagnostics) =>
this.MemoizeBinding(syntax, () => base.BindExpression(syntax, constraints, diagnostics));

internal override BoundLvalue TypeLvalue(BoundLvalue lvalue, ConstraintSolver constraints, DiagnosticBag diagnostics) =>
this.TypeNode(lvalue, () => base.TypeLvalue(lvalue, constraints, diagnostics));
protected override BindingTask<BoundLvalue> BindLvalue(SyntaxNode syntax, ConstraintSolver constraints, DiagnosticBag diagnostics) =>
this.MemoizeBinding(syntax, () => base.BindLvalue(syntax, constraints, diagnostics));

internal override Symbol BindLabel(LabelSyntax syntax, ConstraintSolver constraints, DiagnosticBag diagnostics) =>
this.BindSymbol(syntax, () => base.BindLabel(syntax, constraints, diagnostics));
Expand All @@ -94,8 +95,7 @@ internal override void BindTypeSyntaxToSymbol(SyntaxNode syntax, Internal.Symbol

// Memo logic

private TBoundNode TypeNode<TUntypedNode, TBoundNode>(TUntypedNode untyped, Func<TBoundNode> binder)
where TUntypedNode : UntypedNode
private BindingTask<TBoundNode> MemoizeBinding<TBoundNode>(SyntaxNode syntax, Func<BindingTask<TBoundNode>> binder)
where TBoundNode : BoundNode
{
if (untyped.Syntax is null) return binder();
Expand Down

0 comments on commit 2997a1a

Please sign in to comment.