yukigo 0.2.3 → 0.3.2

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.
Files changed (266) hide show
  1. package/.mocharc.json +3 -3
  2. package/CHANGELOG.md +105 -40
  3. package/README.md +193 -193
  4. package/dist/analyzer/GraphBuilder.d.ts +1 -0
  5. package/dist/analyzer/GraphBuilder.js +2 -1
  6. package/dist/analyzer/index.d.ts +0 -7
  7. package/dist/analyzer/index.js +3 -3
  8. package/dist/analyzer/inspections/functional/functional.d.ts +1 -1
  9. package/dist/analyzer/inspections/functional/functional.js +1 -1
  10. package/dist/analyzer/inspections/functional/smells.d.ts +3 -3
  11. package/dist/analyzer/inspections/functional/smells.js +27 -35
  12. package/dist/analyzer/inspections/generic/generic.d.ts +22 -14
  13. package/dist/analyzer/inspections/generic/generic.js +82 -60
  14. package/dist/analyzer/inspections/generic/smells.d.ts +2 -0
  15. package/dist/analyzer/inspections/generic/smells.js +55 -64
  16. package/dist/analyzer/inspections/imperative/imperative.d.ts +3 -3
  17. package/dist/analyzer/inspections/imperative/imperative.js +3 -3
  18. package/dist/analyzer/inspections/imperative/smells.d.ts +1 -0
  19. package/dist/analyzer/inspections/imperative/smells.js +8 -5
  20. package/dist/analyzer/inspections/logic/logic.d.ts +8 -8
  21. package/dist/analyzer/inspections/logic/logic.js +5 -5
  22. package/dist/analyzer/inspections/logic/smells.js +2 -2
  23. package/dist/analyzer/inspections/object/object.d.ts +5 -5
  24. package/dist/analyzer/inspections/object/object.js +22 -21
  25. package/dist/analyzer/inspections/object/smells.js +11 -23
  26. package/dist/analyzer/utils.d.ts +6 -2
  27. package/dist/analyzer/utils.js +6 -2
  28. package/dist/interpreter/components/EnvBuilder.d.ts +20 -1
  29. package/dist/interpreter/components/EnvBuilder.js +211 -66
  30. package/dist/interpreter/components/EqualityComparer.d.ts +15 -0
  31. package/dist/interpreter/components/EqualityComparer.js +69 -0
  32. package/dist/interpreter/components/Operations.d.ts +17 -14
  33. package/dist/interpreter/components/Operations.js +61 -62
  34. package/dist/interpreter/components/PatternMatcher.d.ts +19 -58
  35. package/dist/interpreter/components/PatternMatcher.js +185 -286
  36. package/dist/interpreter/components/RuntimeContext.d.ts +24 -15
  37. package/dist/interpreter/components/RuntimeContext.js +43 -4
  38. package/dist/interpreter/components/TestRunner.d.ts +15 -13
  39. package/dist/interpreter/components/TestRunner.js +86 -53
  40. package/dist/interpreter/components/evaluators/BaseEvaluator.d.ts +19 -0
  41. package/dist/interpreter/components/evaluators/BaseEvaluator.js +20 -0
  42. package/dist/interpreter/components/evaluators/ExpressionEvaluator.d.ts +34 -0
  43. package/dist/interpreter/components/evaluators/ExpressionEvaluator.js +298 -0
  44. package/dist/interpreter/components/evaluators/OperationEvaluator.d.ts +25 -0
  45. package/dist/interpreter/components/evaluators/OperationEvaluator.js +226 -0
  46. package/dist/interpreter/components/evaluators/PrimitiveEvaluator.d.ts +19 -0
  47. package/dist/interpreter/components/evaluators/PrimitiveEvaluator.js +50 -0
  48. package/dist/interpreter/components/evaluators/StatementEvaluator.d.ts +28 -0
  49. package/dist/interpreter/components/evaluators/StatementEvaluator.js +240 -0
  50. package/dist/interpreter/components/evaluators/TestingEvaluator.d.ts +15 -0
  51. package/dist/interpreter/components/evaluators/TestingEvaluator.js +14 -0
  52. package/dist/interpreter/components/evaluators/index.d.ts +110 -0
  53. package/dist/interpreter/components/evaluators/index.js +21 -0
  54. package/dist/interpreter/components/evaluators/utils.d.ts +7 -0
  55. package/dist/interpreter/components/evaluators/utils.js +50 -0
  56. package/dist/interpreter/components/hooks/YukigoHook.d.ts +27 -0
  57. package/dist/interpreter/components/hooks/YukigoHook.js +1 -0
  58. package/dist/interpreter/components/kernel/commands.d.ts +122 -0
  59. package/dist/interpreter/components/kernel/commands.js +203 -0
  60. package/dist/interpreter/components/kernel/index.d.ts +51 -0
  61. package/dist/interpreter/components/kernel/index.js +176 -0
  62. package/dist/interpreter/components/logic/LogicEngine.d.ts +26 -23
  63. package/dist/interpreter/components/logic/LogicEngine.js +234 -221
  64. package/dist/interpreter/components/logic/LogicResolver.d.ts +22 -51
  65. package/dist/interpreter/components/logic/LogicResolver.js +73 -440
  66. package/dist/interpreter/components/logic/LogicTerm.d.ts +104 -0
  67. package/dist/interpreter/components/logic/LogicTerm.js +423 -0
  68. package/dist/interpreter/components/logic/LogicTranslator.d.ts +25 -9
  69. package/dist/interpreter/components/logic/LogicTranslator.js +211 -74
  70. package/dist/interpreter/components/runtimes/FunctionRuntime.d.ts +6 -4
  71. package/dist/interpreter/components/runtimes/FunctionRuntime.js +82 -84
  72. package/dist/interpreter/components/runtimes/LazyRuntime.d.ts +13 -14
  73. package/dist/interpreter/components/runtimes/LazyRuntime.js +112 -239
  74. package/dist/interpreter/components/runtimes/ObjectRuntime.d.ts +17 -14
  75. package/dist/interpreter/components/runtimes/ObjectRuntime.js +105 -74
  76. package/dist/interpreter/errors.d.ts +10 -0
  77. package/dist/interpreter/errors.js +17 -0
  78. package/dist/interpreter/index.d.ts +9 -5
  79. package/dist/interpreter/index.js +11 -13
  80. package/dist/interpreter/primitives/YuValue.d.ts +21 -0
  81. package/dist/interpreter/primitives/YuValue.js +40 -0
  82. package/dist/interpreter/primitives/capabilities.d.ts +90 -0
  83. package/dist/interpreter/primitives/capabilities.js +1 -0
  84. package/dist/interpreter/primitives/entities/LazyList.d.ts +48 -0
  85. package/dist/interpreter/primitives/entities/LazyList.js +164 -0
  86. package/dist/interpreter/primitives/entities/LogicResult.d.ts +51 -0
  87. package/dist/interpreter/primitives/entities/LogicResult.js +101 -0
  88. package/dist/interpreter/primitives/entities/RuntimeClass.d.ts +24 -0
  89. package/dist/interpreter/primitives/entities/RuntimeClass.js +57 -0
  90. package/dist/interpreter/primitives/entities/RuntimeFunction.d.ts +40 -0
  91. package/dist/interpreter/primitives/entities/RuntimeFunction.js +73 -0
  92. package/dist/interpreter/primitives/entities/RuntimeObject.d.ts +27 -0
  93. package/dist/interpreter/primitives/entities/RuntimeObject.js +82 -0
  94. package/dist/interpreter/primitives/entities/RuntimePredicate.d.ts +19 -0
  95. package/dist/interpreter/primitives/entities/RuntimePredicate.js +59 -0
  96. package/dist/interpreter/primitives/index.d.ts +14 -0
  97. package/dist/interpreter/primitives/index.js +14 -0
  98. package/dist/interpreter/primitives/scalars/YuBoolean.d.ts +24 -0
  99. package/dist/interpreter/primitives/scalars/YuBoolean.js +69 -0
  100. package/dist/interpreter/primitives/scalars/YuChar.d.ts +28 -0
  101. package/dist/interpreter/primitives/scalars/YuChar.js +78 -0
  102. package/dist/interpreter/primitives/scalars/YuNil.d.ts +25 -0
  103. package/dist/interpreter/primitives/scalars/YuNil.js +73 -0
  104. package/dist/interpreter/primitives/scalars/YuNumber.d.ts +49 -0
  105. package/dist/interpreter/primitives/scalars/YuNumber.js +165 -0
  106. package/dist/interpreter/primitives/sequences/YuArray.d.ts +33 -0
  107. package/dist/interpreter/primitives/sequences/YuArray.js +150 -0
  108. package/dist/interpreter/primitives/sequences/YuString.d.ts +40 -0
  109. package/dist/interpreter/primitives/sequences/YuString.js +130 -0
  110. package/dist/interpreter/utils.d.ts +23 -10
  111. package/dist/interpreter/utils.js +25 -30
  112. package/dist/tester/index.d.ts +3 -3
  113. package/dist/tester/index.js +39 -28
  114. package/dist/utils/helpers.d.ts +13 -5
  115. package/dist/utils/helpers.js +38 -85
  116. package/package.json +3 -16
  117. package/src/analyzer/GraphBuilder.ts +143 -142
  118. package/src/analyzer/index.ts +185 -194
  119. package/src/analyzer/inspections/functional/functional.ts +121 -121
  120. package/src/analyzer/inspections/functional/smells.ts +88 -102
  121. package/src/analyzer/inspections/generic/generic.ts +610 -577
  122. package/src/analyzer/inspections/generic/smells.ts +355 -365
  123. package/src/analyzer/inspections/imperative/imperative.ts +104 -101
  124. package/src/analyzer/inspections/imperative/smells.ts +58 -54
  125. package/src/analyzer/inspections/logic/logic.ts +84 -90
  126. package/src/analyzer/inspections/logic/smells.ts +54 -54
  127. package/src/analyzer/inspections/object/object.ts +295 -264
  128. package/src/analyzer/inspections/object/smells.ts +130 -144
  129. package/src/analyzer/utils.ts +115 -109
  130. package/src/index.ts +3 -3
  131. package/src/interpreter/components/EnvBuilder.ts +405 -202
  132. package/src/interpreter/components/EqualityComparer.ts +107 -0
  133. package/src/interpreter/components/Operations.ts +126 -99
  134. package/src/interpreter/components/PatternMatcher.ts +375 -475
  135. package/src/interpreter/components/RuntimeContext.ts +181 -119
  136. package/src/interpreter/components/TestRunner.ts +223 -151
  137. package/src/interpreter/components/evaluators/BaseEvaluator.ts +36 -0
  138. package/src/interpreter/components/evaluators/ExpressionEvaluator.ts +475 -0
  139. package/src/interpreter/components/evaluators/OperationEvaluator.ts +477 -0
  140. package/src/interpreter/components/evaluators/PrimitiveEvaluator.ts +80 -0
  141. package/src/interpreter/components/evaluators/StatementEvaluator.ts +372 -0
  142. package/src/interpreter/components/evaluators/TestingEvaluator.ts +26 -0
  143. package/src/interpreter/components/evaluators/index.ts +34 -0
  144. package/src/interpreter/components/evaluators/utils.ts +64 -0
  145. package/src/interpreter/components/hooks/YukigoHook.ts +45 -0
  146. package/src/interpreter/components/kernel/commands.ts +255 -0
  147. package/src/interpreter/components/kernel/index.ts +222 -0
  148. package/src/interpreter/components/logic/LogicEngine.ts +509 -519
  149. package/src/interpreter/components/logic/LogicResolver.ts +209 -858
  150. package/src/interpreter/components/logic/LogicTerm.ts +477 -0
  151. package/src/interpreter/components/logic/LogicTranslator.ts +362 -149
  152. package/src/interpreter/components/runtimes/FunctionRuntime.ts +249 -227
  153. package/src/interpreter/components/runtimes/LazyRuntime.ts +226 -334
  154. package/src/interpreter/components/runtimes/ObjectRuntime.ts +262 -224
  155. package/src/interpreter/errors.ts +68 -47
  156. package/src/interpreter/index.ts +50 -52
  157. package/src/interpreter/primitives/YuValue.ts +64 -0
  158. package/src/interpreter/primitives/capabilities.ts +111 -0
  159. package/src/interpreter/primitives/entities/LazyList.ts +225 -0
  160. package/src/interpreter/primitives/entities/LogicResult.ts +133 -0
  161. package/src/interpreter/primitives/entities/RuntimeClass.ts +70 -0
  162. package/src/interpreter/primitives/entities/RuntimeFunction.ts +108 -0
  163. package/src/interpreter/primitives/entities/RuntimeObject.ts +110 -0
  164. package/src/interpreter/primitives/entities/RuntimePredicate.ts +77 -0
  165. package/src/interpreter/primitives/index.ts +17 -0
  166. package/src/interpreter/primitives/scalars/YuBoolean.ts +79 -0
  167. package/src/interpreter/primitives/scalars/YuChar.ts +94 -0
  168. package/src/interpreter/primitives/scalars/YuNil.ts +84 -0
  169. package/src/interpreter/primitives/scalars/YuNumber.ts +187 -0
  170. package/src/interpreter/primitives/sequences/YuArray.ts +178 -0
  171. package/src/interpreter/primitives/sequences/YuString.ts +165 -0
  172. package/src/interpreter/utils.ts +105 -84
  173. package/src/tester/index.ts +157 -128
  174. package/src/utils/helpers.ts +113 -169
  175. package/tests/analyzer/functional.spec.ts +221 -207
  176. package/tests/analyzer/generic.spec.ts +178 -178
  177. package/tests/analyzer/helpers.spec.ts +83 -89
  178. package/tests/analyzer/logic.spec.ts +237 -237
  179. package/tests/analyzer/oop.spec.ts +320 -323
  180. package/tests/analyzer/transitive.spec.ts +166 -166
  181. package/tests/interpreter/EnvBuilder.spec.ts +181 -183
  182. package/tests/interpreter/FunctionRuntime.spec.ts +224 -223
  183. package/tests/interpreter/LazyRuntime.spec.ts +227 -225
  184. package/tests/interpreter/LogicEngine.spec.ts +371 -327
  185. package/tests/interpreter/LogicSubstitution.spec.ts +90 -80
  186. package/tests/interpreter/ObjectRuntime.spec.ts +431 -606
  187. package/tests/interpreter/Operations.spec.ts +312 -220
  188. package/tests/interpreter/PatternSystem.spec.ts +254 -213
  189. package/tests/interpreter/Tests.spec.ts +122 -122
  190. package/tests/interpreter/interpreter.spec.ts +1143 -991
  191. package/tests/kernel/YukigoKernel.spec.ts +112 -0
  192. package/tests/tester/Tester.spec.ts +156 -152
  193. package/tsconfig.build.json +16 -15
  194. package/tsconfig.json +27 -25
  195. package/dist/interpreter/components/Visitor.d.ts +0 -70
  196. package/dist/interpreter/components/Visitor.js +0 -634
  197. package/dist/interpreter/entities.d.ts +0 -105
  198. package/dist/interpreter/entities.js +0 -96
  199. package/dist/interpreter/trampoline.d.ts +0 -17
  200. package/dist/interpreter/trampoline.js +0 -38
  201. package/dist/src/analyzer/GraphBuilder.d.ts +0 -30
  202. package/dist/src/analyzer/GraphBuilder.js +0 -100
  203. package/dist/src/analyzer/index.d.ts +0 -59
  204. package/dist/src/analyzer/index.js +0 -152
  205. package/dist/src/analyzer/inspections/functional/functional.d.ts +0 -44
  206. package/dist/src/analyzer/inspections/functional/functional.js +0 -149
  207. package/dist/src/analyzer/inspections/functional/smells.d.ts +0 -16
  208. package/dist/src/analyzer/inspections/functional/smells.js +0 -98
  209. package/dist/src/analyzer/inspections/generic/generic.d.ts +0 -178
  210. package/dist/src/analyzer/inspections/generic/generic.js +0 -604
  211. package/dist/src/analyzer/inspections/generic/smells.d.ts +0 -61
  212. package/dist/src/analyzer/inspections/generic/smells.js +0 -349
  213. package/dist/src/analyzer/inspections/imperative/imperative.d.ts +0 -35
  214. package/dist/src/analyzer/inspections/imperative/imperative.js +0 -109
  215. package/dist/src/analyzer/inspections/imperative/smells.d.ts +0 -16
  216. package/dist/src/analyzer/inspections/imperative/smells.js +0 -58
  217. package/dist/src/analyzer/inspections/logic/logic.d.ts +0 -32
  218. package/dist/src/analyzer/inspections/logic/logic.js +0 -96
  219. package/dist/src/analyzer/inspections/logic/smells.d.ts +0 -15
  220. package/dist/src/analyzer/inspections/logic/smells.js +0 -60
  221. package/dist/src/analyzer/inspections/object/object.d.ts +0 -90
  222. package/dist/src/analyzer/inspections/object/object.js +0 -321
  223. package/dist/src/analyzer/inspections/object/smells.d.ts +0 -30
  224. package/dist/src/analyzer/inspections/object/smells.js +0 -135
  225. package/dist/src/analyzer/utils.d.ts +0 -30
  226. package/dist/src/analyzer/utils.js +0 -78
  227. package/dist/src/index.d.ts +0 -4
  228. package/dist/src/index.js +0 -4
  229. package/dist/src/interpreter/components/EnvBuilder.d.ts +0 -21
  230. package/dist/src/interpreter/components/EnvBuilder.js +0 -155
  231. package/dist/src/interpreter/components/Operations.d.ts +0 -14
  232. package/dist/src/interpreter/components/Operations.js +0 -84
  233. package/dist/src/interpreter/components/PatternMatcher.d.ts +0 -73
  234. package/dist/src/interpreter/components/PatternMatcher.js +0 -358
  235. package/dist/src/interpreter/components/RuntimeContext.d.ts +0 -35
  236. package/dist/src/interpreter/components/RuntimeContext.js +0 -93
  237. package/dist/src/interpreter/components/TestRunner.d.ts +0 -19
  238. package/dist/src/interpreter/components/TestRunner.js +0 -110
  239. package/dist/src/interpreter/components/Visitor.d.ts +0 -71
  240. package/dist/src/interpreter/components/Visitor.js +0 -638
  241. package/dist/src/interpreter/components/logic/LogicEngine.d.ts +0 -29
  242. package/dist/src/interpreter/components/logic/LogicEngine.js +0 -259
  243. package/dist/src/interpreter/components/logic/LogicResolver.d.ts +0 -53
  244. package/dist/src/interpreter/components/logic/LogicResolver.js +0 -484
  245. package/dist/src/interpreter/components/logic/LogicTranslator.d.ts +0 -14
  246. package/dist/src/interpreter/components/logic/LogicTranslator.js +0 -99
  247. package/dist/src/interpreter/components/runtimes/FunctionRuntime.d.ts +0 -12
  248. package/dist/src/interpreter/components/runtimes/FunctionRuntime.js +0 -149
  249. package/dist/src/interpreter/components/runtimes/LazyRuntime.d.ts +0 -19
  250. package/dist/src/interpreter/components/runtimes/LazyRuntime.js +0 -269
  251. package/dist/src/interpreter/components/runtimes/ObjectRuntime.d.ts +0 -35
  252. package/dist/src/interpreter/components/runtimes/ObjectRuntime.js +0 -126
  253. package/dist/src/interpreter/errors.d.ts +0 -19
  254. package/dist/src/interpreter/errors.js +0 -36
  255. package/dist/src/interpreter/index.d.ts +0 -24
  256. package/dist/src/interpreter/index.js +0 -41
  257. package/dist/src/interpreter/trampoline.d.ts +0 -17
  258. package/dist/src/interpreter/trampoline.js +0 -38
  259. package/dist/src/interpreter/utils.d.ts +0 -11
  260. package/dist/src/interpreter/utils.js +0 -65
  261. package/dist/src/tester/index.d.ts +0 -25
  262. package/dist/src/tester/index.js +0 -113
  263. package/dist/src/utils/helpers.d.ts +0 -13
  264. package/dist/src/utils/helpers.js +0 -52
  265. package/src/interpreter/components/Visitor.ts +0 -1065
  266. package/src/interpreter/trampoline.ts +0 -71
@@ -1,149 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import * as Yu from "yukigo-ast";
8
- import { ScopedVisitor, AutoScoped } from "../../utils.js";
9
- let UsesComposition = class UsesComposition extends ScopedVisitor {
10
- constructor(scope) {
11
- super(scope);
12
- }
13
- visitCompositionExpression(node) {
14
- throw new Yu.StopTraversalException();
15
- }
16
- };
17
- UsesComposition = __decorate([
18
- AutoScoped
19
- ], UsesComposition);
20
- export { UsesComposition };
21
- let UsesAnonymousVariable = class UsesAnonymousVariable extends ScopedVisitor {
22
- constructor(scope) {
23
- super(scope);
24
- }
25
- visitWildcardPattern(node) {
26
- throw new Yu.StopTraversalException();
27
- }
28
- };
29
- UsesAnonymousVariable = __decorate([
30
- AutoScoped
31
- ], UsesAnonymousVariable);
32
- export { UsesAnonymousVariable };
33
- let UsesComprehension = class UsesComprehension extends ScopedVisitor {
34
- constructor(scope) {
35
- super(scope);
36
- }
37
- visitListComprehension(node) {
38
- throw new Yu.StopTraversalException();
39
- }
40
- };
41
- UsesComprehension = __decorate([
42
- AutoScoped
43
- ], UsesComprehension);
44
- export { UsesComprehension };
45
- let UsesGuards = class UsesGuards extends ScopedVisitor {
46
- constructor(scope) {
47
- super(scope);
48
- }
49
- visitGuardedBody(node) {
50
- throw new Yu.StopTraversalException();
51
- }
52
- };
53
- UsesGuards = __decorate([
54
- AutoScoped
55
- ], UsesGuards);
56
- export { UsesGuards };
57
- let UsesOtherwise = class UsesOtherwise extends ScopedVisitor {
58
- constructor(scope) {
59
- super(scope);
60
- }
61
- visitOtherwise(node) {
62
- throw new Yu.StopTraversalException();
63
- }
64
- };
65
- UsesOtherwise = __decorate([
66
- AutoScoped
67
- ], UsesOtherwise);
68
- export { UsesOtherwise };
69
- let UsesLambda = class UsesLambda extends ScopedVisitor {
70
- constructor(scope) {
71
- super(scope);
72
- }
73
- visitLambda(node) {
74
- throw new Yu.StopTraversalException();
75
- }
76
- };
77
- UsesLambda = __decorate([
78
- AutoScoped
79
- ], UsesLambda);
80
- export { UsesLambda };
81
- let UsesYield = class UsesYield extends ScopedVisitor {
82
- constructor(scope) {
83
- super(scope);
84
- }
85
- visitYield(node) {
86
- throw new Yu.StopTraversalException();
87
- }
88
- };
89
- UsesYield = __decorate([
90
- AutoScoped
91
- ], UsesYield);
92
- export { UsesYield };
93
- let UsesPatternMatching = class UsesPatternMatching extends ScopedVisitor {
94
- constructor(scope) {
95
- super(scope);
96
- }
97
- visitConsPattern(node) {
98
- throw new Yu.StopTraversalException();
99
- }
100
- visitAsPattern(node) {
101
- throw new Yu.StopTraversalException();
102
- }
103
- visitListPattern(node) {
104
- throw new Yu.StopTraversalException();
105
- }
106
- visitTuplePattern(node) {
107
- throw new Yu.StopTraversalException();
108
- }
109
- visitLiteralPattern(node) {
110
- throw new Yu.StopTraversalException();
111
- }
112
- visitApplicationPattern(node) {
113
- throw new Yu.StopTraversalException();
114
- }
115
- visitConstructorPattern(node) {
116
- throw new Yu.StopTraversalException();
117
- }
118
- visitUnionPattern(node) {
119
- throw new Yu.StopTraversalException();
120
- }
121
- visitFunctorPattern(node) {
122
- throw new Yu.StopTraversalException();
123
- }
124
- visitWildcardPattern(node) {
125
- throw new Yu.StopTraversalException();
126
- }
127
- };
128
- UsesPatternMatching = __decorate([
129
- AutoScoped
130
- ], UsesPatternMatching);
131
- export { UsesPatternMatching };
132
- export const functionalInspections = {
133
- UsesComposition: UsesComposition,
134
- HasComposition: UsesComposition,
135
- UsesAnonymousVariable: UsesAnonymousVariable,
136
- HasAnonymousVariable: UsesAnonymousVariable,
137
- UsesComprehension: UsesComprehension,
138
- HasComprehension: UsesComprehension,
139
- UsesGuards: UsesGuards,
140
- HasGuards: UsesGuards,
141
- UsesOtherwise: UsesOtherwise,
142
- HasOtherwise: UsesOtherwise,
143
- UsesLambda: UsesLambda,
144
- HasLambda: UsesLambda,
145
- UsesYield: UsesYield,
146
- HasYield: UsesYield,
147
- UsesPatternMatching: UsesPatternMatching,
148
- HasPatternMatching: UsesPatternMatching,
149
- };
@@ -1,16 +0,0 @@
1
- import { Lambda, Equation, GuardedBody } from "yukigo-ast";
2
- import { ScopedVisitor, VisitorConstructor } from "../../utils.js";
3
- export declare class HasRedundantLambda extends ScopedVisitor {
4
- visitLambda(node: Lambda): void;
5
- }
6
- export declare class HasRedundantGuards extends ScopedVisitor {
7
- visitEquation(node: Equation): void;
8
- private isAlwaysTrue;
9
- }
10
- export declare class ShouldUseOtherwise extends ScopedVisitor {
11
- visitGuardedBody(node: GuardedBody): void;
12
- }
13
- export declare class HasRedundantParameter extends ScopedVisitor {
14
- visitEquation(node: Equation): void;
15
- }
16
- export declare const functionalSmells: Record<string, VisitorConstructor>;
@@ -1,98 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { Call, VariablePattern, Variable, StopTraversalException, BooleanPrimitive, Application, isUnguardedBody, Otherwise, } from "yukigo-ast";
8
- import { AutoScoped, ScopedVisitor } from "../../utils.js";
9
- import { Uses } from "../generic/generic.js";
10
- let HasRedundantLambda = class HasRedundantLambda extends ScopedVisitor {
11
- visitLambda(node) {
12
- if (node.parameters.length !== 1)
13
- return;
14
- if (!(node.body instanceof Application))
15
- return;
16
- const param = node.parameters[0];
17
- const call = node.body;
18
- if (call.functionExpr instanceof Application ||
19
- call.functionExpr instanceof Call)
20
- return;
21
- const arg = call.parameter;
22
- if (param instanceof VariablePattern &&
23
- arg instanceof Variable &&
24
- param.name.value === arg.identifier.value)
25
- throw new StopTraversalException();
26
- }
27
- };
28
- HasRedundantLambda = __decorate([
29
- AutoScoped
30
- ], HasRedundantLambda);
31
- export { HasRedundantLambda };
32
- let HasRedundantGuards = class HasRedundantGuards extends ScopedVisitor {
33
- visitEquation(node) {
34
- if (isUnguardedBody(node.body))
35
- return;
36
- // If there is only 1 guard...
37
- if (node.body.length === 1) {
38
- const guard = node.body[0];
39
- // ...and that guard is "True" or "otherwise"
40
- if (this.isAlwaysTrue(guard.condition))
41
- throw new StopTraversalException();
42
- }
43
- }
44
- isAlwaysTrue(node) {
45
- // check for boolean literal 'True'
46
- if (node instanceof BooleanPrimitive && node.value === true)
47
- return true;
48
- // check for default case
49
- if (node instanceof Otherwise)
50
- return true;
51
- return false;
52
- }
53
- };
54
- HasRedundantGuards = __decorate([
55
- AutoScoped
56
- ], HasRedundantGuards);
57
- export { HasRedundantGuards };
58
- let ShouldUseOtherwise = class ShouldUseOtherwise extends ScopedVisitor {
59
- visitGuardedBody(node) {
60
- if (node.condition instanceof BooleanPrimitive &&
61
- node.condition.value === true)
62
- throw new StopTraversalException();
63
- }
64
- };
65
- ShouldUseOtherwise = __decorate([
66
- AutoScoped
67
- ], ShouldUseOtherwise);
68
- export { ShouldUseOtherwise };
69
- let HasRedundantParameter = class HasRedundantParameter extends ScopedVisitor {
70
- visitEquation(node) {
71
- for (const pattern of node.patterns) {
72
- if (pattern instanceof VariablePattern) {
73
- const paramName = pattern.name.value;
74
- const usageChecker = new Uses(paramName, this.binding);
75
- try {
76
- node.accept(usageChecker);
77
- // uses didnt throw so the param is not being used
78
- throw new StopTraversalException();
79
- }
80
- catch (e) {
81
- if (e instanceof StopTraversalException)
82
- continue;
83
- throw e;
84
- }
85
- }
86
- }
87
- }
88
- };
89
- HasRedundantParameter = __decorate([
90
- AutoScoped
91
- ], HasRedundantParameter);
92
- export { HasRedundantParameter };
93
- export const functionalSmells = {
94
- HasRedundantGuards: HasRedundantGuards,
95
- HasRedundantLambda: HasRedundantLambda,
96
- HasRedundantParameter: HasRedundantParameter,
97
- ShouldUseOtherwise: ShouldUseOtherwise,
98
- };
@@ -1,178 +0,0 @@
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, Try, TypeAlias, TypeSignature, TypeVar, Variable } from "yukigo-ast";
2
- import { VisitorConstructor, ScopedVisitor, InspectionVisitor } from "../../utils.js";
3
- export declare class Assigns extends ScopedVisitor {
4
- private readonly targetIdentifier;
5
- constructor(targetIdentifier: string, scope?: string);
6
- visitVariable(node: Variable): void;
7
- visitAttribute(node: Attribute): void;
8
- visitAssignment(node: Assignment): void;
9
- }
10
- export declare class Calls extends ScopedVisitor {
11
- private readonly targetCallee;
12
- constructor(targetCallee: string, scope?: string);
13
- visitCall(node: Call): void;
14
- }
15
- export declare class Declares extends ScopedVisitor {
16
- private readonly targetIdentifier;
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;
28
- }
29
- export declare class DeclaresComputation extends ScopedVisitor {
30
- private readonly callName;
31
- constructor(callName: string, scope?: string);
32
- visitFunction(node: Function): void;
33
- visitMethod(node: Method): void;
34
- visitProcedure(node: Procedure): void;
35
- visitFact(node: Fact): void;
36
- visitRule(node: Rule): void;
37
- }
38
- export declare class DeclaresComputationWithArity extends ScopedVisitor {
39
- private readonly targetArity;
40
- constructor(targetArity: string, scope?: string);
41
- visitFunction(node: Function): void;
42
- visitMethod(node: Method): void;
43
- visitProcedure(node: Procedure): void;
44
- visitFact(node: Fact): void;
45
- visitRule(node: Rule): void;
46
- }
47
- export declare class DeclaresEntryPoint extends InspectionVisitor {
48
- visitEntryPoint(node: EntryPoint): void;
49
- }
50
- export declare class DeclaresFunction extends ScopedVisitor {
51
- private readonly targetBinding;
52
- constructor(targetBinding: string, scope?: string);
53
- visitFunction(node: Function): void;
54
- }
55
- export declare class DeclaresRecursively extends ScopedVisitor {
56
- private readonly targetBinding;
57
- constructor(targetBinding: string, scope?: string);
58
- visitFunction(node: Function): void;
59
- visitMethod(node: Method): void;
60
- visitProcedure(node: Procedure): void;
61
- visitFact(node: Fact): void;
62
- visitRule(node: Rule): void;
63
- visitNested(node: ASTNode): void;
64
- }
65
- export declare class HasDirectRecursion extends InspectionVisitor {
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
- }
76
- export declare class DeclaresTypeAlias extends InspectionVisitor {
77
- private readonly typeAliasName;
78
- constructor(typeAliasName: string);
79
- visitTypeAlias(node: TypeAlias): void;
80
- }
81
- export declare class DeclaresTypeSignature extends InspectionVisitor {
82
- private readonly targetBinding;
83
- constructor(targetBinding: string);
84
- visitTypeSignature(node: TypeSignature): void;
85
- }
86
- export declare class DeclaresVariable extends ScopedVisitor {
87
- private readonly targetBinding;
88
- constructor(targetBinding: string, scope?: string);
89
- visitVariable(node: Variable): void;
90
- }
91
- export declare class Raises extends ScopedVisitor {
92
- constructor(scope: string);
93
- visitRaise(node: Raise): void;
94
- }
95
- export declare class Uses extends ScopedVisitor {
96
- private readonly targetBinding;
97
- constructor(targetBinding: string, scope?: string);
98
- visitSymbolPrimitive(node: SymbolPrimitive): void;
99
- }
100
- export declare class UsesArithmetic extends ScopedVisitor {
101
- constructor(scope?: string);
102
- visitArithmeticBinaryOperation(node: ArithmeticBinaryOperation): void;
103
- visitArithmeticUnaryOperation(node: ArithmeticUnaryOperation): void;
104
- }
105
- export declare class UsesConditional extends ScopedVisitor {
106
- visitIf(node: If): void;
107
- }
108
- export declare class UsesLogic extends ScopedVisitor {
109
- constructor(scope?: string);
110
- visitLogicalBinaryOperation(node: LogicalBinaryOperation): void;
111
- visitLogicalUnaryOperation(node: LogicalUnaryOperation): void;
112
- }
113
- export declare class UsesPrint extends ScopedVisitor {
114
- constructor(scope?: string);
115
- visitPrint(node: Print): void;
116
- }
117
- export declare class UsesType extends ScopedVisitor {
118
- private readonly targetBinding;
119
- constructor(targetBinding: string, scope?: string);
120
- visitTypeSignature(node: TypeSignature): void;
121
- visitSimpleType(node: SimpleType): void;
122
- visitTypeVar(node: TypeVar): void;
123
- }
124
- export declare class HasBinding extends ScopedVisitor {
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;
130
- visitTypeAlias(node: TypeAlias): void;
131
- visitTypeSignature(node: TypeSignature): void;
132
- visitRecord(node: RecordNode): void;
133
- }
134
- export declare class SubordinatesDeclarationsTo extends InspectionVisitor {
135
- private childName;
136
- private parentName;
137
- constructor(childName: string, parentName: string);
138
- visitFunction(node: Function): void;
139
- }
140
- export declare class SubordinatesDeclarationsToEntryPoint extends InspectionVisitor {
141
- private childName;
142
- constructor(childName: string);
143
- visitEntryPoint(node: EntryPoint): void;
144
- }
145
- export declare class TypesAs extends InspectionVisitor {
146
- private typeName;
147
- private bindingName;
148
- constructor(typeName: string, bindingName: string);
149
- visitTypeSignature(node: TypeSignature): void;
150
- }
151
- export declare class TypesParameterAs extends InspectionVisitor {
152
- private paramIndex;
153
- private typeName;
154
- private bindingName;
155
- constructor(paramIndex: number, typeName: string, bindingName: string);
156
- visitTypeSignature(node: TypeSignature): void;
157
- }
158
- export declare class TypesReturnAs extends InspectionVisitor {
159
- private typeName;
160
- private bindingName;
161
- constructor(typeName: string, bindingName: string);
162
- visitTypeSignature(node: TypeSignature): void;
163
- }
164
- export declare class Rescues extends ScopedVisitor {
165
- private exceptionName;
166
- constructor(exceptionName: string, scope?: string);
167
- visitCatch(node: Catch): void;
168
- }
169
- export declare class UsesExceptionHandling extends ScopedVisitor {
170
- constructor(scope?: string);
171
- visitTry(node: Try): void;
172
- }
173
- export declare class UsesExceptions extends ScopedVisitor {
174
- constructor(scope?: string);
175
- visitTry(node: Try): void;
176
- visitRaise(node: Raise): void;
177
- }
178
- export declare const genericInspections: Record<string, VisitorConstructor>;