Skip to content

Commit 60ffb60

Browse files
committed
refactor for readability in program code
1 parent eb5c162 commit 60ffb60

5 files changed

Lines changed: 268 additions & 372 deletions

File tree

implement/Pine.Core/DotNet/CompileKernelFunctionApplication.cs

Lines changed: 44 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using Pine.Pine.PineVM;
77
using System;
88
using System.Collections.Generic;
9-
using System.Collections.Immutable;
109
using System.Linq;
1110

1211
namespace Pine.Core.DotNet;
@@ -106,16 +105,11 @@ IEnumerable<IReadOnlyList<StaticExpression<DeclQualifiedName>>> EnumerateArgumen
106105

107106
public static IEnumerable<CompiledCSharpExpression> TryCompileKernelFusion(
108107
StaticExpression<DeclQualifiedName>.KernelApplication kernelApp,
109-
Func<IReadOnlyList<int>, ExpressionSyntax?> selfFunctionInterface,
110-
Func<StaticExpression<DeclQualifiedName>, CompiledCSharpExpression?> generalOverride,
111-
IReadOnlyDictionary<DeclQualifiedName, StaticFunctionInterface> availableFunctions,
112-
IReadOnlyDictionary<PineValue, DeclQualifiedName> availableValueDecls,
113-
DeclarationSyntaxContext declarationSyntaxContext,
114-
ImmutableDictionary<StaticExpression<DeclQualifiedName>, (string identifier, LocalType ltype)> alreadyDeclared)
108+
ExpressionEmitEnv emitEnv)
115109
{
116110
TypeSyntax TypeSyntaxFromType(Type type)
117111
{
118-
return CompileTypeSyntax.TypeSyntaxFromType(type, declarationSyntaxContext);
112+
return CompileTypeSyntax.TypeSyntaxFromType(type, emitEnv.FunctionEnv.DeclarationSyntaxContext);
119113
}
120114

121115
{
@@ -135,22 +129,12 @@ skipApp.Input is StaticExpression<DeclQualifiedName>.List skipArgsList &&
135129
var argumentExpr =
136130
StaticProgramCSharpClass.CompileToCSharpExpression(
137131
skipArgsList.Items[1],
138-
selfFunctionInterface,
139-
generalOverride,
140-
availableFunctions,
141-
availableValueDecls,
142-
declarationSyntaxContext,
143-
alreadyDeclared);
132+
emitEnv);
144133

145134
var skipCountExpr =
146135
StaticProgramCSharpClass.CompileToCSharpExpression(
147136
skipArgsList.Items[0],
148-
selfFunctionInterface,
149-
generalOverride,
150-
availableFunctions,
151-
availableValueDecls,
152-
declarationSyntaxContext,
153-
alreadyDeclared);
137+
emitEnv);
154138

155139
// Build fully-qualified invocation: Pine.Core.Internal.KernelFunctionFused.SkipAndTake(argument: ..., skipCountValue: ..., takeCount: ...)
156140
var genericCSharpExpr =
@@ -169,12 +153,12 @@ skipApp.Input is StaticExpression<DeclQualifiedName>.List skipArgsList &&
169153

170154
SyntaxFactory.Token(SyntaxKind.CommaToken),
171155

172-
SyntaxFactory.Argument(skipCountExpr.AsGenericValue(declarationSyntaxContext))
156+
SyntaxFactory.Argument(skipCountExpr.AsGenericValue(emitEnv.FunctionEnv.DeclarationSyntaxContext))
173157
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("skipCountValue"))),
174158

175159
SyntaxFactory.Token(SyntaxKind.CommaToken),
176160

177-
SyntaxFactory.Argument(argumentExpr.AsGenericValue(declarationSyntaxContext))
161+
SyntaxFactory.Argument(argumentExpr.AsGenericValue(emitEnv.FunctionEnv.DeclarationSyntaxContext))
178162
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("argument"))),
179163
})));
180164

@@ -202,32 +186,17 @@ takeApp2.Input is StaticExpression<DeclQualifiedName>.List takeArgsList2 &&
202186
var argumentExpr =
203187
StaticProgramCSharpClass.CompileToCSharpExpression(
204188
takeArgsList2.Items[1],
205-
selfFunctionInterface,
206-
generalOverride,
207-
availableFunctions,
208-
availableValueDecls,
209-
declarationSyntaxContext,
210-
alreadyDeclared);
189+
emitEnv);
211190

212191
var takeCountExpr =
213192
StaticProgramCSharpClass.CompileToCSharpExpression(
214193
takeArgsList2.Items[0],
215-
selfFunctionInterface,
216-
generalOverride,
217-
availableFunctions,
218-
availableValueDecls,
219-
declarationSyntaxContext,
220-
alreadyDeclared);
194+
emitEnv);
221195

222196
var skipCountExpr =
223197
StaticProgramCSharpClass.CompileToCSharpExpression(
224198
skipArgsList2.Items[0],
225-
selfFunctionInterface,
226-
generalOverride,
227-
availableFunctions,
228-
availableValueDecls,
229-
declarationSyntaxContext,
230-
alreadyDeclared);
199+
emitEnv);
231200

232201
// Build fully-qualified invocation: Pine.Core.Internal.KernelFunctionFused.TakeAndSkip(skipCountValue: ..., takeCountValue: ..., argument: ...)
233202
var genericCSharpExpr =
@@ -241,14 +210,18 @@ takeApp2.Input is StaticExpression<DeclQualifiedName>.List takeArgsList2 &&
241210
SyntaxFactory.SeparatedList<ArgumentSyntax>(
242211
new SyntaxNodeOrToken[]
243212
{
244-
SyntaxFactory.Argument(skipCountExpr.AsGenericValue(declarationSyntaxContext))
245-
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("skipCountValue"))),
246-
SyntaxFactory.Token(SyntaxKind.CommaToken),
247-
SyntaxFactory.Argument(takeCountExpr.AsGenericValue(declarationSyntaxContext))
248-
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("takeCountValue"))),
249-
SyntaxFactory.Token(SyntaxKind.CommaToken),
250-
SyntaxFactory.Argument(argumentExpr.AsGenericValue(declarationSyntaxContext))
251-
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("argument"))),
213+
SyntaxFactory.Argument(skipCountExpr.AsGenericValue(emitEnv.FunctionEnv.DeclarationSyntaxContext))
214+
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("skipCountValue"))),
215+
216+
SyntaxFactory.Token(SyntaxKind.CommaToken),
217+
218+
SyntaxFactory.Argument(takeCountExpr.AsGenericValue(emitEnv.FunctionEnv.DeclarationSyntaxContext))
219+
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("takeCountValue"))),
220+
221+
SyntaxFactory.Token(SyntaxKind.CommaToken),
222+
223+
SyntaxFactory.Argument(argumentExpr.AsGenericValue(emitEnv.FunctionEnv.DeclarationSyntaxContext))
224+
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("argument"))),
252225
})));
253226

254227
yield return CompiledCSharpExpression.Generic(genericCSharpExpr);
@@ -274,12 +247,7 @@ innerReverseApp.Function is nameof(KernelFunction.reverse))
274247
var seqExpr =
275248
StaticProgramCSharpClass.CompileToCSharpExpression(
276249
innerReverseApp.Input,
277-
selfFunctionInterface,
278-
generalOverride,
279-
availableFunctions,
280-
availableValueDecls,
281-
declarationSyntaxContext,
282-
alreadyDeclared);
250+
emitEnv);
283251

284252
// Build fully-qualified invocation: Pine.Core.Internal.KernelFunctionFused.TakeLast(takeCount: n, value: seq)
285253
var genericCSharpExpr =
@@ -298,7 +266,7 @@ innerReverseApp.Function is nameof(KernelFunction.reverse))
298266

299267
SyntaxFactory.Token(SyntaxKind.CommaToken),
300268

301-
SyntaxFactory.Argument(seqExpr.AsGenericValue(declarationSyntaxContext))
269+
SyntaxFactory.Argument(seqExpr.AsGenericValue(emitEnv.FunctionEnv.DeclarationSyntaxContext))
302270
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("value")))
303271
})));
304272

@@ -328,12 +296,7 @@ innerReverseApp.Function is nameof(KernelFunction.reverse))
328296
var seqExpr =
329297
StaticProgramCSharpClass.CompileToCSharpExpression(
330298
innerReverseApp.Input,
331-
selfFunctionInterface,
332-
generalOverride,
333-
availableFunctions,
334-
availableValueDecls,
335-
declarationSyntaxContext,
336-
alreadyDeclared);
299+
emitEnv);
337300

338301
// Build fully-qualified invocation: Pine.Core.Internal.KernelFunctionFused.SkipLast(skipCount: n, value: seq)
339302
var genericCSharpExpr =
@@ -352,7 +315,7 @@ innerReverseApp.Function is nameof(KernelFunction.reverse))
352315

353316
SyntaxFactory.Token(SyntaxKind.CommaToken),
354317

355-
SyntaxFactory.Argument(seqExpr.AsGenericValue(declarationSyntaxContext))
318+
SyntaxFactory.Argument(seqExpr.AsGenericValue(emitEnv.FunctionEnv.DeclarationSyntaxContext))
356319
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("value")))
357320
})));
358321

@@ -378,22 +341,12 @@ concatArgsList.Items[1] is StaticExpression<DeclQualifiedName>.List itemToAppend
378341
var prefixExpr =
379342
StaticProgramCSharpClass.CompileToCSharpExpression(
380343
concatArgsList.Items[0],
381-
selfFunctionInterface,
382-
generalOverride,
383-
availableFunctions,
384-
availableValueDecls,
385-
declarationSyntaxContext,
386-
alreadyDeclared);
344+
emitEnv);
387345

388346
var itemToAppendExpr =
389347
StaticProgramCSharpClass.CompileToCSharpExpression(
390348
itemToAppendList.Items[0],
391-
selfFunctionInterface,
392-
generalOverride,
393-
availableFunctions,
394-
availableValueDecls,
395-
declarationSyntaxContext,
396-
alreadyDeclared);
349+
emitEnv);
397350

398351
// Build fully-qualified invocation: Pine.Core.Internal.KernelFunctionFused.ListAppendItem(prefix: ..., itemToAppend: ...)
399352
var genericCSharpExpr =
@@ -407,12 +360,12 @@ concatArgsList.Items[1] is StaticExpression<DeclQualifiedName>.List itemToAppend
407360
SyntaxFactory.SeparatedList<ArgumentSyntax>(
408361
new SyntaxNodeOrToken[]
409362
{
410-
SyntaxFactory.Argument(prefixExpr.AsGenericValue(declarationSyntaxContext))
363+
SyntaxFactory.Argument(prefixExpr.AsGenericValue(emitEnv.FunctionEnv.DeclarationSyntaxContext))
411364
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("prefix"))),
412365

413366
SyntaxFactory.Token(SyntaxKind.CommaToken),
414367

415-
SyntaxFactory.Argument(itemToAppendExpr.AsGenericValue(declarationSyntaxContext))
368+
SyntaxFactory.Argument(itemToAppendExpr.AsGenericValue(emitEnv.FunctionEnv.DeclarationSyntaxContext))
416369
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("itemToAppend"))),
417370
})));
418371

@@ -434,22 +387,12 @@ ExpressionSyntax ListPrependItemSyntax(
434387
var itemToPrependExpr =
435388
StaticProgramCSharpClass.CompileToCSharpExpression(
436389
itemToPrepend,
437-
selfFunctionInterface,
438-
generalOverride,
439-
availableFunctions,
440-
availableValueDecls,
441-
declarationSyntaxContext,
442-
alreadyDeclared);
390+
emitEnv);
443391

444392
var suffixExpr =
445393
StaticProgramCSharpClass.CompileToCSharpExpression(
446394
suffix,
447-
selfFunctionInterface,
448-
generalOverride,
449-
availableFunctions,
450-
availableValueDecls,
451-
declarationSyntaxContext,
452-
alreadyDeclared);
395+
emitEnv);
453396

454397
// Build fully-qualified invocation: Pine.Core.Internal.KernelFunctionFused.ListPrependItem(itemToPrepend: ..., suffix: ...)
455398
return
@@ -463,13 +406,13 @@ ExpressionSyntax ListPrependItemSyntax(
463406
SyntaxFactory.SeparatedList<ArgumentSyntax>(
464407
new SyntaxNodeOrToken[]
465408
{
466-
SyntaxFactory.Argument(itemToPrependExpr.AsGenericValue(declarationSyntaxContext))
467-
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("itemToPrepend"))),
409+
SyntaxFactory.Argument(itemToPrependExpr.AsGenericValue(emitEnv.FunctionEnv.DeclarationSyntaxContext))
410+
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("itemToPrepend"))),
468411

469412
SyntaxFactory.Token(SyntaxKind.CommaToken),
470413

471-
SyntaxFactory.Argument(suffixExpr.AsGenericValue(declarationSyntaxContext))
472-
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("suffix"))),
414+
SyntaxFactory.Argument(suffixExpr.AsGenericValue(emitEnv.FunctionEnv.DeclarationSyntaxContext))
415+
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("suffix"))),
473416
})));
474417
}
475418

@@ -485,12 +428,7 @@ ExpressionSyntax BlobPrependByteSyntax(
485428
var suffixExpr =
486429
StaticProgramCSharpClass.CompileToCSharpExpression(
487430
suffix,
488-
selfFunctionInterface,
489-
generalOverride,
490-
availableFunctions,
491-
availableValueDecls,
492-
declarationSyntaxContext,
493-
alreadyDeclared);
431+
emitEnv);
494432

495433
// Build fully-qualified invocation: Pine.Core.Internal.KernelFunctionFused.BlobPrependByte(byteToPrepend: ..., suffix: ...)
496434
return
@@ -505,12 +443,12 @@ ExpressionSyntax BlobPrependByteSyntax(
505443
new SyntaxNodeOrToken[]
506444
{
507445
SyntaxFactory.Argument(PineCSharpSyntaxFactory.ExpressionSyntaxForIntegerLiteral(byteToPrepend))
508-
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("byteToPrepend"))),
446+
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("byteToPrepend"))),
509447

510448
SyntaxFactory.Token(SyntaxKind.CommaToken),
511449

512-
SyntaxFactory.Argument(suffixExpr.AsGenericValue(declarationSyntaxContext))
513-
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("suffix"))),
450+
SyntaxFactory.Argument(suffixExpr.AsGenericValue(emitEnv.FunctionEnv.DeclarationSyntaxContext))
451+
.WithNameColon(SyntaxFactory.NameColon(SyntaxFactory.IdentifierName("suffix"))),
514452
})));
515453
}
516454

@@ -569,21 +507,16 @@ prefixLiteral.Value is PineValue.BlobValue prefixBlob &&
569507
var argumentExpr =
570508
StaticProgramCSharpClass.CompileToCSharpExpression(
571509
concatList.Items[1],
572-
selfFunctionInterface,
573-
generalOverride,
574-
availableFunctions,
575-
availableValueDecls,
576-
declarationSyntaxContext,
577-
alreadyDeclared);
510+
emitEnv);
578511

579512
if (prefixBlob.Bytes.Span[0] is 2)
580513
{
581514
return
582515
CompiledCSharpExpression.Generic(
583516
CanonicalIntegerFromUnsignedSyntax(
584517
signIsPositive: false,
585-
argumentExpr.AsGenericValue(declarationSyntaxContext),
586-
declarationSyntaxContext));
518+
argumentExpr.AsGenericValue(emitEnv.FunctionEnv.DeclarationSyntaxContext),
519+
emitEnv.FunctionEnv.DeclarationSyntaxContext));
587520
}
588521

589522
if (prefixBlob.Bytes.Span[0] is 4)
@@ -592,8 +525,8 @@ prefixLiteral.Value is PineValue.BlobValue prefixBlob &&
592525
CompiledCSharpExpression.Generic(
593526
CanonicalIntegerFromUnsignedSyntax(
594527
signIsPositive: true,
595-
argumentExpr.AsGenericValue(declarationSyntaxContext),
596-
declarationSyntaxContext));
528+
argumentExpr.AsGenericValue(emitEnv.FunctionEnv.DeclarationSyntaxContext),
529+
emitEnv.FunctionEnv.DeclarationSyntaxContext));
597530
}
598531
}
599532

implement/Pine.Core/DotNet/DeclarationSyntaxContext.cs

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)