yukigo 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mocharc.json +3 -3
- package/CHANGELOG.md +26 -0
- package/README.md +193 -199
- package/dist/analyzer/GraphBuilder.d.ts +29 -0
- package/dist/analyzer/GraphBuilder.js +99 -0
- package/dist/analyzer/index.d.ts +11 -23
- package/dist/analyzer/index.js +100 -58
- package/dist/analyzer/inspections/functional/functional.d.ts +44 -0
- package/dist/analyzer/inspections/functional/functional.js +149 -0
- package/dist/analyzer/inspections/functional/smells.d.ts +16 -0
- package/dist/analyzer/inspections/functional/smells.js +98 -0
- package/dist/analyzer/inspections/{generic.d.ts → generic/generic.d.ts} +70 -43
- package/dist/analyzer/inspections/generic/generic.js +604 -0
- package/dist/analyzer/inspections/generic/smells.d.ts +61 -0
- package/dist/analyzer/inspections/generic/smells.js +349 -0
- package/dist/analyzer/inspections/imperative/imperative.d.ts +35 -0
- package/dist/analyzer/inspections/imperative/imperative.js +109 -0
- package/dist/analyzer/inspections/imperative/smells.d.ts +16 -0
- package/dist/analyzer/inspections/imperative/smells.js +58 -0
- package/dist/analyzer/inspections/logic/logic.d.ts +32 -0
- package/dist/analyzer/inspections/logic/logic.js +96 -0
- package/dist/analyzer/inspections/logic/smells.d.ts +15 -0
- package/dist/analyzer/inspections/logic/smells.js +60 -0
- package/dist/analyzer/inspections/object/object.d.ts +88 -0
- package/dist/analyzer/inspections/object/object.js +319 -0
- package/dist/analyzer/inspections/object/smells.d.ts +30 -0
- package/dist/analyzer/inspections/object/smells.js +135 -0
- package/dist/analyzer/utils.d.ts +26 -4
- package/dist/analyzer/utils.js +71 -13
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/interpreter/components/EnvBuilder.d.ts +9 -5
- package/dist/interpreter/components/EnvBuilder.js +100 -30
- package/dist/interpreter/components/Operations.d.ts +4 -4
- package/dist/interpreter/components/Operations.js +17 -2
- package/dist/interpreter/components/PatternMatcher.d.ts +47 -17
- package/dist/interpreter/components/PatternMatcher.js +264 -119
- package/dist/interpreter/components/RuntimeContext.d.ts +35 -0
- package/dist/interpreter/components/RuntimeContext.js +93 -0
- package/dist/interpreter/components/TestRunner.d.ts +18 -0
- package/dist/interpreter/components/TestRunner.js +103 -0
- package/dist/interpreter/components/Visitor.d.ts +63 -57
- package/dist/interpreter/components/Visitor.js +508 -173
- package/dist/interpreter/components/logic/LogicEngine.d.ts +29 -0
- package/dist/interpreter/components/logic/LogicEngine.js +259 -0
- package/dist/interpreter/components/logic/LogicResolver.d.ts +53 -0
- package/dist/interpreter/components/logic/LogicResolver.js +471 -0
- package/dist/interpreter/components/logic/LogicTranslator.d.ts +14 -0
- package/dist/interpreter/components/logic/LogicTranslator.js +99 -0
- package/dist/interpreter/components/runtimes/FunctionRuntime.d.ts +12 -0
- package/dist/interpreter/components/runtimes/FunctionRuntime.js +147 -0
- package/dist/interpreter/components/runtimes/LazyRuntime.d.ts +19 -0
- package/dist/interpreter/components/runtimes/LazyRuntime.js +269 -0
- package/dist/interpreter/components/runtimes/ObjectRuntime.d.ts +35 -0
- package/dist/interpreter/components/runtimes/ObjectRuntime.js +126 -0
- package/dist/interpreter/entities.d.ts +105 -0
- package/dist/interpreter/entities.js +96 -0
- package/dist/interpreter/errors.d.ts +1 -1
- package/dist/interpreter/index.d.ts +4 -12
- package/dist/interpreter/index.js +10 -13
- package/dist/interpreter/trampoline.d.ts +17 -0
- package/dist/interpreter/trampoline.js +38 -0
- package/dist/interpreter/utils.d.ts +4 -7
- package/dist/interpreter/utils.js +25 -17
- package/dist/tester/index.d.ts +25 -0
- package/dist/tester/index.js +108 -0
- package/dist/utils/helpers.d.ts +0 -4
- package/dist/utils/helpers.js +20 -24
- package/package.json +2 -2
- package/src/analyzer/GraphBuilder.ts +142 -0
- package/src/analyzer/index.ts +185 -132
- package/src/analyzer/inspections/functional/functional.ts +121 -0
- package/src/analyzer/inspections/functional/smells.ts +102 -0
- package/src/analyzer/inspections/{generic.ts → generic/generic.ts} +581 -499
- package/src/analyzer/inspections/generic/smells.ts +365 -0
- package/src/analyzer/inspections/imperative/imperative.ts +101 -0
- package/src/analyzer/inspections/imperative/smells.ts +54 -0
- package/src/analyzer/inspections/logic/logic.ts +90 -0
- package/src/analyzer/inspections/logic/smells.ts +54 -0
- package/src/analyzer/inspections/{object.ts → object/object.ts} +264 -282
- package/src/analyzer/inspections/object/smells.ts +144 -0
- package/src/analyzer/utils.ts +109 -26
- package/src/index.ts +3 -2
- package/src/interpreter/components/EnvBuilder.ts +202 -97
- package/src/interpreter/components/Operations.ts +99 -81
- package/src/interpreter/components/PatternMatcher.ts +475 -254
- package/src/interpreter/components/RuntimeContext.ts +119 -0
- package/src/interpreter/components/TestRunner.ts +151 -0
- package/src/interpreter/components/Visitor.ts +1065 -493
- package/src/interpreter/components/logic/LogicEngine.ts +519 -0
- package/src/interpreter/components/logic/LogicResolver.ts +858 -0
- package/src/interpreter/components/logic/LogicTranslator.ts +149 -0
- package/src/interpreter/components/runtimes/FunctionRuntime.ts +227 -0
- package/src/interpreter/components/runtimes/LazyRuntime.ts +334 -0
- package/src/interpreter/components/runtimes/ObjectRuntime.ts +224 -0
- package/src/interpreter/errors.ts +47 -47
- package/src/interpreter/index.ts +52 -59
- package/src/interpreter/trampoline.ts +71 -0
- package/src/interpreter/utils.ts +84 -79
- package/src/tester/index.ts +128 -0
- package/src/utils/helpers.ts +67 -73
- package/tests/analyzer/functional.spec.ts +207 -221
- package/tests/analyzer/generic.spec.ts +178 -100
- package/tests/analyzer/helpers.spec.ts +83 -83
- package/tests/analyzer/logic.spec.ts +237 -292
- package/tests/analyzer/oop.spec.ts +323 -338
- package/tests/analyzer/transitive.spec.ts +166 -0
- package/tests/interpreter/EnvBuilder.spec.ts +183 -178
- package/tests/interpreter/FunctionRuntime.spec.ts +223 -234
- package/tests/interpreter/LazyRuntime.spec.ts +225 -190
- package/tests/interpreter/LogicEngine.spec.ts +327 -194
- package/tests/interpreter/LogicSubstitution.spec.ts +80 -0
- package/tests/interpreter/ObjectRuntime.spec.ts +606 -0
- package/tests/interpreter/Operations.spec.ts +220 -220
- package/tests/interpreter/PatternSystem.spec.ts +213 -189
- package/tests/interpreter/Tests.spec.ts +122 -0
- package/tests/interpreter/interpreter.spec.ts +991 -937
- package/tests/tester/Tester.spec.ts +153 -0
- package/tsconfig.build.json +15 -7
- package/tsconfig.json +25 -17
- package/dist/analyzer/inspections/functional.d.ts +0 -46
- package/dist/analyzer/inspections/functional.js +0 -123
- package/dist/analyzer/inspections/generic.js +0 -427
- package/dist/analyzer/inspections/imperative.d.ts +0 -37
- package/dist/analyzer/inspections/imperative.js +0 -105
- package/dist/analyzer/inspections/logic.d.ts +0 -49
- package/dist/analyzer/inspections/logic.js +0 -140
- package/dist/analyzer/inspections/object.d.ts +0 -83
- package/dist/analyzer/inspections/object.js +0 -235
- package/dist/interpreter/components/FunctionRuntime.d.ts +0 -8
- package/dist/interpreter/components/FunctionRuntime.js +0 -52
- package/dist/interpreter/components/LazyRuntime.d.ts +0 -7
- package/dist/interpreter/components/LazyRuntime.js +0 -75
- package/dist/interpreter/components/LogicEngine.d.ts +0 -21
- package/dist/interpreter/components/LogicEngine.js +0 -152
- package/dist/interpreter/components/LogicResolver.d.ts +0 -11
- package/dist/interpreter/components/LogicResolver.js +0 -87
- package/src/analyzer/inspections/functional.ts +0 -159
- package/src/analyzer/inspections/imperative.ts +0 -129
- package/src/analyzer/inspections/logic.ts +0 -166
- package/src/interpreter/components/FunctionRuntime.ts +0 -79
- package/src/interpreter/components/LazyRuntime.ts +0 -97
- package/src/interpreter/components/LogicEngine.ts +0 -227
- package/src/interpreter/components/LogicResolver.ts +0 -130
|
@@ -1,35 +1,43 @@
|
|
|
1
|
-
import { ArithmeticBinaryOperation, ArithmeticUnaryOperation, Assignment, ASTNode, Attribute, Call, Catch, EntryPoint, Fact, Function, If, LogicalBinaryOperation, LogicalUnaryOperation, Method, Print, Procedure, Raise, Record as RecordNode, Rule, SimpleType, SymbolPrimitive, TraverseVisitor, Try, TypeAlias, TypeSignature, TypeVar, Variable } from "
|
|
2
|
-
import {
|
|
3
|
-
export declare class Assigns extends
|
|
1
|
+
import { ArithmeticBinaryOperation, ArithmeticUnaryOperation, Assignment, ASTNode, Attribute, Call, Catch, Class, EntryPoint, Equation, Fact, Function, If, LogicalBinaryOperation, LogicalUnaryOperation, Method, Object, Print, Procedure, Raise, Record as RecordNode, Rule, SimpleType, SymbolPrimitive, TraverseVisitor, Try, TypeAlias, TypeSignature, TypeVar, Variable } from "yukigo-ast";
|
|
2
|
+
import { VisitorConstructor, ScopedVisitor } from "../../utils.js";
|
|
3
|
+
export declare class Assigns extends ScopedVisitor {
|
|
4
4
|
private readonly targetIdentifier;
|
|
5
|
-
constructor(targetIdentifier: string);
|
|
5
|
+
constructor(targetIdentifier: string, scope?: string);
|
|
6
6
|
visitVariable(node: Variable): void;
|
|
7
7
|
visitAttribute(node: Attribute): void;
|
|
8
8
|
visitAssignment(node: Assignment): void;
|
|
9
9
|
}
|
|
10
|
-
export declare class Calls extends
|
|
10
|
+
export declare class Calls extends ScopedVisitor {
|
|
11
11
|
private readonly targetCallee;
|
|
12
|
-
constructor(targetCallee: string);
|
|
12
|
+
constructor(targetCallee: string, scope?: string);
|
|
13
13
|
visitCall(node: Call): void;
|
|
14
14
|
}
|
|
15
|
-
export declare class Declares extends
|
|
15
|
+
export declare class Declares extends ScopedVisitor {
|
|
16
16
|
private readonly targetIdentifier;
|
|
17
|
-
constructor(targetIdentifier: string);
|
|
18
|
-
|
|
17
|
+
constructor(targetIdentifier: string, scopeName?: string);
|
|
18
|
+
private check;
|
|
19
|
+
visitFunction(node: Function): void;
|
|
20
|
+
visitMethod(node: Method): void;
|
|
21
|
+
visitProcedure(node: Procedure): void;
|
|
22
|
+
visitRule(node: Rule): void;
|
|
23
|
+
visitFact(node: Fact): void;
|
|
24
|
+
visitVariable(node: Variable): void;
|
|
25
|
+
visitAttribute(node: Attribute): void;
|
|
26
|
+
visitTypeAlias(node: TypeAlias): void;
|
|
27
|
+
visitTypeSignature(node: TypeSignature): void;
|
|
19
28
|
}
|
|
20
|
-
export declare class DeclaresComputation extends
|
|
29
|
+
export declare class DeclaresComputation extends ScopedVisitor {
|
|
21
30
|
private readonly callName;
|
|
22
|
-
constructor(callName: string);
|
|
31
|
+
constructor(callName: string, scope?: string);
|
|
23
32
|
visitFunction(node: Function): void;
|
|
24
33
|
visitMethod(node: Method): void;
|
|
25
34
|
visitProcedure(node: Procedure): void;
|
|
26
35
|
visitFact(node: Fact): void;
|
|
27
36
|
visitRule(node: Rule): void;
|
|
28
37
|
}
|
|
29
|
-
export declare class DeclaresComputationWithArity extends
|
|
30
|
-
private readonly targetBinding;
|
|
38
|
+
export declare class DeclaresComputationWithArity extends ScopedVisitor {
|
|
31
39
|
private readonly targetArity;
|
|
32
|
-
constructor(
|
|
40
|
+
constructor(targetArity: string, scope?: string);
|
|
33
41
|
visitFunction(node: Function): void;
|
|
34
42
|
visitMethod(node: Method): void;
|
|
35
43
|
visitProcedure(node: Procedure): void;
|
|
@@ -39,14 +47,14 @@ export declare class DeclaresComputationWithArity extends TraverseVisitor {
|
|
|
39
47
|
export declare class DeclaresEntryPoint extends TraverseVisitor {
|
|
40
48
|
visitEntryPoint(node: EntryPoint): void;
|
|
41
49
|
}
|
|
42
|
-
export declare class DeclaresFunction extends
|
|
50
|
+
export declare class DeclaresFunction extends ScopedVisitor {
|
|
43
51
|
private readonly targetBinding;
|
|
44
|
-
constructor(targetBinding: string);
|
|
52
|
+
constructor(targetBinding: string, scope?: string);
|
|
45
53
|
visitFunction(node: Function): void;
|
|
46
54
|
}
|
|
47
|
-
export declare class DeclaresRecursively extends
|
|
55
|
+
export declare class DeclaresRecursively extends ScopedVisitor {
|
|
48
56
|
private readonly targetBinding;
|
|
49
|
-
constructor(targetBinding: string);
|
|
57
|
+
constructor(targetBinding: string, scope?: string);
|
|
50
58
|
visitFunction(node: Function): void;
|
|
51
59
|
visitMethod(node: Method): void;
|
|
52
60
|
visitProcedure(node: Procedure): void;
|
|
@@ -54,6 +62,17 @@ export declare class DeclaresRecursively extends DeclaresComputation {
|
|
|
54
62
|
visitRule(node: Rule): void;
|
|
55
63
|
visitNested(node: ASTNode): void;
|
|
56
64
|
}
|
|
65
|
+
export declare class HasDirectRecursion extends TraverseVisitor {
|
|
66
|
+
private readonly binding;
|
|
67
|
+
private isInsideBody;
|
|
68
|
+
constructor(binding: string);
|
|
69
|
+
visitFunction(node: Function): void;
|
|
70
|
+
visitRule(node: Rule): void;
|
|
71
|
+
visitProcedure(node: Procedure): void;
|
|
72
|
+
visitMethod(node: Method): void;
|
|
73
|
+
visitEquation(node: Equation): void;
|
|
74
|
+
visitSymbolPrimitive(node: SymbolPrimitive): void;
|
|
75
|
+
}
|
|
57
76
|
export declare class DeclaresTypeAlias extends TraverseVisitor {
|
|
58
77
|
private readonly typeAliasName;
|
|
59
78
|
constructor(typeAliasName: string);
|
|
@@ -64,44 +83,50 @@ export declare class DeclaresTypeSignature extends TraverseVisitor {
|
|
|
64
83
|
constructor(targetBinding: string);
|
|
65
84
|
visitTypeSignature(node: TypeSignature): void;
|
|
66
85
|
}
|
|
67
|
-
export declare class DeclaresVariable extends
|
|
86
|
+
export declare class DeclaresVariable extends ScopedVisitor {
|
|
68
87
|
private readonly targetBinding;
|
|
69
|
-
constructor(targetBinding: string);
|
|
88
|
+
constructor(targetBinding: string, scope?: string);
|
|
70
89
|
visitVariable(node: Variable): void;
|
|
71
90
|
}
|
|
72
|
-
export declare class Raises extends
|
|
91
|
+
export declare class Raises extends ScopedVisitor {
|
|
92
|
+
constructor(scope: string);
|
|
73
93
|
visitRaise(node: Raise): void;
|
|
74
94
|
}
|
|
75
|
-
export declare class Uses extends
|
|
95
|
+
export declare class Uses extends ScopedVisitor {
|
|
76
96
|
private readonly targetBinding;
|
|
77
|
-
constructor(targetBinding: string);
|
|
97
|
+
constructor(targetBinding: string, scope?: string);
|
|
78
98
|
visitSymbolPrimitive(node: SymbolPrimitive): void;
|
|
79
99
|
}
|
|
80
|
-
export declare class UsesArithmetic extends
|
|
100
|
+
export declare class UsesArithmetic extends ScopedVisitor {
|
|
101
|
+
constructor(scope?: string);
|
|
81
102
|
visitArithmeticBinaryOperation(node: ArithmeticBinaryOperation): void;
|
|
82
103
|
visitArithmeticUnaryOperation(node: ArithmeticUnaryOperation): void;
|
|
83
104
|
}
|
|
84
|
-
export declare class UsesConditional extends
|
|
105
|
+
export declare class UsesConditional extends ScopedVisitor {
|
|
85
106
|
visitIf(node: If): void;
|
|
86
107
|
}
|
|
87
|
-
export declare class UsesLogic extends
|
|
108
|
+
export declare class UsesLogic extends ScopedVisitor {
|
|
109
|
+
constructor(scope?: string);
|
|
88
110
|
visitLogicalBinaryOperation(node: LogicalBinaryOperation): void;
|
|
89
111
|
visitLogicalUnaryOperation(node: LogicalUnaryOperation): void;
|
|
90
112
|
}
|
|
91
|
-
export declare class UsesPrint extends
|
|
113
|
+
export declare class UsesPrint extends ScopedVisitor {
|
|
114
|
+
constructor(scope?: string);
|
|
92
115
|
visitPrint(node: Print): void;
|
|
93
116
|
}
|
|
94
|
-
export declare class UsesType extends
|
|
117
|
+
export declare class UsesType extends ScopedVisitor {
|
|
95
118
|
private readonly targetBinding;
|
|
96
|
-
constructor(targetBinding: string);
|
|
119
|
+
constructor(targetBinding: string, scope?: string);
|
|
97
120
|
visitTypeSignature(node: TypeSignature): void;
|
|
98
121
|
visitSimpleType(node: SimpleType): void;
|
|
99
122
|
visitTypeVar(node: TypeVar): void;
|
|
100
123
|
}
|
|
101
|
-
export declare class HasBinding extends
|
|
102
|
-
private readonly targetBinding;
|
|
103
|
-
constructor(targetBinding: string);
|
|
124
|
+
export declare class HasBinding extends ScopedVisitor {
|
|
104
125
|
visitFunction(node: Function): void;
|
|
126
|
+
visitObject(node: Object): void;
|
|
127
|
+
visitClass(node: Class): void;
|
|
128
|
+
visitRule(node: Rule): void;
|
|
129
|
+
visitFact(node: Fact): void;
|
|
105
130
|
visitTypeAlias(node: TypeAlias): void;
|
|
106
131
|
visitTypeSignature(node: TypeSignature): void;
|
|
107
132
|
visitRecord(node: RecordNode): void;
|
|
@@ -118,34 +143,36 @@ export declare class SubordinatesDeclarationsToEntryPoint extends TraverseVisito
|
|
|
118
143
|
visitEntryPoint(node: EntryPoint): void;
|
|
119
144
|
}
|
|
120
145
|
export declare class TypesAs extends TraverseVisitor {
|
|
121
|
-
private bindingName;
|
|
122
146
|
private typeName;
|
|
123
|
-
|
|
147
|
+
private bindingName;
|
|
148
|
+
constructor(typeName: string, bindingName: string);
|
|
124
149
|
visitTypeSignature(node: TypeSignature): void;
|
|
125
150
|
}
|
|
126
151
|
export declare class TypesParameterAs extends TraverseVisitor {
|
|
127
|
-
private bindingName;
|
|
128
152
|
private paramIndex;
|
|
129
153
|
private typeName;
|
|
130
|
-
|
|
154
|
+
private bindingName;
|
|
155
|
+
constructor(paramIndex: number, typeName: string, bindingName: string);
|
|
131
156
|
visitTypeSignature(node: TypeSignature): void;
|
|
132
157
|
}
|
|
133
158
|
export declare class TypesReturnAs extends TraverseVisitor {
|
|
134
|
-
private bindingName;
|
|
135
159
|
private typeName;
|
|
136
|
-
|
|
160
|
+
private bindingName;
|
|
161
|
+
constructor(typeName: string, bindingName: string);
|
|
137
162
|
visitTypeSignature(node: TypeSignature): void;
|
|
138
163
|
}
|
|
139
|
-
export declare class Rescues extends
|
|
164
|
+
export declare class Rescues extends ScopedVisitor {
|
|
140
165
|
private exceptionName;
|
|
141
|
-
constructor(exceptionName: string);
|
|
166
|
+
constructor(exceptionName: string, scope?: string);
|
|
142
167
|
visitCatch(node: Catch): void;
|
|
143
168
|
}
|
|
144
|
-
export declare class UsesExceptionHandling extends
|
|
169
|
+
export declare class UsesExceptionHandling extends ScopedVisitor {
|
|
170
|
+
constructor(scope?: string);
|
|
145
171
|
visitTry(node: Try): void;
|
|
146
172
|
}
|
|
147
|
-
export declare class UsesExceptions extends
|
|
173
|
+
export declare class UsesExceptions extends ScopedVisitor {
|
|
174
|
+
constructor(scope?: string);
|
|
148
175
|
visitTry(node: Try): void;
|
|
149
176
|
visitRaise(node: Raise): void;
|
|
150
177
|
}
|
|
151
|
-
export declare const genericInspections:
|
|
178
|
+
export declare const genericInspections: Record<string, VisitorConstructor>;
|