From 2997a1ad9f577a3220f0d7d101cb720a375fe7a1 Mon Sep 17 00:00:00 2001 From: LPeter1997 Date: Sat, 4 Nov 2023 08:25:34 +0100 Subject: [PATCH] Update IncrementalBinder.cs --- .../Internal/Binding/IncrementalBinder.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Draco.Compiler/Internal/Binding/IncrementalBinder.cs b/src/Draco.Compiler/Internal/Binding/IncrementalBinder.cs index ca1f4f00c..d74cf3f76 100644 --- a/src/Draco.Compiler/Internal/Binding/IncrementalBinder.cs +++ b/src/Draco.Compiler/Internal/Binding/IncrementalBinder.cs @@ -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; @@ -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 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 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 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)); @@ -94,8 +95,7 @@ internal override void BindTypeSyntaxToSymbol(SyntaxNode syntax, Internal.Symbol // Memo logic - private TBoundNode TypeNode(TUntypedNode untyped, Func binder) - where TUntypedNode : UntypedNode + private BindingTask MemoizeBinding(SyntaxNode syntax, Func> binder) where TBoundNode : BoundNode { if (untyped.Syntax is null) return binder();