@eagleoutice/flowr 1.5.2 → 2.0.1

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 (570) hide show
  1. package/abstract-interpretation/handler/binop/binop.d.ts +3 -4
  2. package/abstract-interpretation/handler/binop/binop.js +4 -2
  3. package/abstract-interpretation/handler/binop/operators.d.ts +2 -2
  4. package/abstract-interpretation/handler/binop/operators.js +14 -28
  5. package/abstract-interpretation/processor.d.ts +3 -2
  6. package/abstract-interpretation/processor.js +2 -2
  7. package/benchmark/slicer.d.ts +101 -0
  8. package/benchmark/slicer.js +214 -0
  9. package/benchmark/stats/print.d.ts +7 -0
  10. package/benchmark/stats/print.js +151 -0
  11. package/benchmark/stats/stats.d.ts +42 -0
  12. package/benchmark/stats/stats.js +6 -0
  13. package/benchmark/stopwatch.d.ts +35 -0
  14. package/benchmark/stopwatch.js +79 -0
  15. package/benchmark/summarizer/data.d.ts +54 -0
  16. package/benchmark/summarizer/first-phase/input.d.ts +3 -0
  17. package/benchmark/summarizer/first-phase/input.js +76 -0
  18. package/benchmark/summarizer/first-phase/process.d.ts +11 -0
  19. package/benchmark/summarizer/first-phase/process.js +205 -0
  20. package/benchmark/summarizer/second-phase/graph.d.ts +2 -0
  21. package/benchmark/summarizer/second-phase/graph.js +54 -0
  22. package/benchmark/summarizer/second-phase/process.d.ts +6 -0
  23. package/benchmark/summarizer/second-phase/process.js +127 -0
  24. package/benchmark/summarizer/summarizer.d.ts +31 -0
  25. package/benchmark/summarizer/summarizer.js +58 -0
  26. package/cli/benchmark-app.d.ts +10 -0
  27. package/cli/benchmark-app.js +67 -0
  28. package/cli/benchmark-helper-app.d.ts +9 -0
  29. package/cli/benchmark-helper-app.js +69 -0
  30. package/cli/common/features.d.ts +3 -0
  31. package/cli/common/features.js +30 -0
  32. package/cli/common/options.d.ts +20 -0
  33. package/cli/common/options.js +85 -0
  34. package/cli/common/script.d.ts +21 -0
  35. package/cli/common/script.js +61 -0
  36. package/cli/common/scripts-info.d.ts +25 -0
  37. package/cli/common/scripts-info.js +83 -0
  38. package/cli/export-quads-app.d.ts +7 -0
  39. package/cli/export-quads-app.js +43 -0
  40. package/cli/flowr.d.ts +29 -0
  41. package/cli/flowr.js +141 -0
  42. package/cli/repl/commands/cfg.d.ts +3 -0
  43. package/cli/repl/commands/cfg.js +37 -0
  44. package/cli/repl/commands/commands.d.ts +13 -0
  45. package/cli/repl/commands/commands.js +142 -0
  46. package/cli/repl/commands/dataflow.d.ts +3 -0
  47. package/cli/repl/commands/dataflow.js +34 -0
  48. package/cli/repl/commands/execute.d.ts +4 -0
  49. package/cli/repl/commands/execute.js +27 -0
  50. package/cli/repl/commands/main.d.ts +39 -0
  51. package/cli/repl/commands/main.js +14 -0
  52. package/cli/repl/commands/normalize.d.ts +3 -0
  53. package/cli/repl/commands/normalize.js +34 -0
  54. package/cli/repl/commands/parse.d.ts +2 -0
  55. package/cli/repl/commands/parse.js +110 -0
  56. package/cli/repl/commands/quit.d.ts +2 -0
  57. package/cli/repl/commands/quit.js +15 -0
  58. package/cli/repl/commands/version.d.ts +16 -0
  59. package/cli/repl/commands/version.js +28 -0
  60. package/cli/repl/core.d.ts +36 -0
  61. package/cli/repl/core.js +174 -0
  62. package/cli/repl/execute.d.ts +28 -0
  63. package/cli/repl/execute.js +79 -0
  64. package/cli/repl/print-version.d.ts +2 -0
  65. package/cli/repl/print-version.js +10 -0
  66. package/cli/repl/prompt.d.ts +2 -0
  67. package/cli/repl/prompt.js +9 -0
  68. package/cli/repl/server/connection.d.ts +21 -0
  69. package/cli/repl/server/connection.js +218 -0
  70. package/cli/repl/server/messages/analysis.d.ts +72 -0
  71. package/cli/repl/server/messages/analysis.js +21 -0
  72. package/cli/repl/server/messages/error.d.ts +11 -0
  73. package/{core/input.js → cli/repl/server/messages/error.js} +1 -1
  74. package/cli/repl/server/messages/hello.d.ts +20 -0
  75. package/{core/output.js → cli/repl/server/messages/hello.js} +1 -1
  76. package/cli/repl/server/messages/messages.d.ts +35 -0
  77. package/cli/repl/server/messages/messages.js +40 -0
  78. package/cli/repl/server/messages/repl.d.ts +33 -0
  79. package/cli/repl/server/messages/repl.js +37 -0
  80. package/cli/repl/server/messages/slice.d.ts +26 -0
  81. package/cli/repl/server/messages/slice.js +37 -0
  82. package/cli/repl/server/net.d.ts +49 -0
  83. package/cli/repl/server/net.js +63 -0
  84. package/cli/repl/server/send.d.ts +4 -0
  85. package/cli/repl/server/send.js +18 -0
  86. package/cli/repl/server/server.d.ts +20 -0
  87. package/cli/repl/server/server.js +66 -0
  88. package/cli/repl/server/validate.d.ts +15 -0
  89. package/cli/repl/server/validate.js +34 -0
  90. package/cli/slicer-app.d.ts +11 -0
  91. package/cli/slicer-app.js +83 -0
  92. package/cli/statistics-app.d.ts +11 -0
  93. package/cli/statistics-app.js +99 -0
  94. package/cli/statistics-helper-app.d.ts +11 -0
  95. package/cli/statistics-helper-app.js +87 -0
  96. package/cli/summarizer-app.d.ts +18 -0
  97. package/cli/summarizer-app.js +66 -0
  98. package/core/pipeline-executor.d.ts +154 -0
  99. package/core/pipeline-executor.js +221 -0
  100. package/core/print/dataflow-printer.d.ts +3 -4
  101. package/core/print/dataflow-printer.js +5 -5
  102. package/core/print/normalize-printer.d.ts +1 -1
  103. package/core/print/normalize-printer.js +3 -3
  104. package/core/print/parse-printer.js +3 -3
  105. package/core/print/print.d.ts +13 -4
  106. package/core/print/print.js +13 -2
  107. package/core/print/slice-diff-ansi.d.ts +3 -2
  108. package/core/print/slice-diff-ansi.js +4 -4
  109. package/core/steps/all/core/00-parse.d.ts +28 -0
  110. package/core/steps/all/core/00-parse.js +24 -0
  111. package/core/steps/all/core/10-normalize.d.ts +29 -0
  112. package/core/steps/all/core/10-normalize.js +26 -0
  113. package/core/steps/all/core/20-dataflow.d.ts +27 -0
  114. package/core/steps/all/core/20-dataflow.js +29 -0
  115. package/core/steps/all/static-slicing/00-slice.d.ts +28 -0
  116. package/core/steps/all/static-slicing/00-slice.js +21 -0
  117. package/core/steps/all/static-slicing/10-reconstruct.d.ts +25 -0
  118. package/core/steps/all/static-slicing/10-reconstruct.js +21 -0
  119. package/core/steps/pipeline/create-pipeline.d.ts +6 -0
  120. package/core/steps/pipeline/create-pipeline.js +130 -0
  121. package/core/steps/pipeline/default-pipelines.d.ts +251 -0
  122. package/core/steps/pipeline/default-pipelines.js +18 -0
  123. package/core/steps/pipeline/invalid-pipeline-error.d.ts +6 -0
  124. package/core/steps/pipeline/invalid-pipeline-error.js +14 -0
  125. package/core/steps/pipeline/pipeline.d.ts +60 -0
  126. package/core/steps/pipeline/pipeline.js +28 -0
  127. package/core/steps/pipeline-step.d.ts +85 -0
  128. package/core/steps/pipeline-step.js +8 -0
  129. package/dataflow/environments/append.d.ts +4 -4
  130. package/dataflow/environments/append.js +4 -4
  131. package/dataflow/environments/built-in.d.ts +25 -0
  132. package/dataflow/environments/built-in.js +123 -0
  133. package/dataflow/environments/clone.d.ts +2 -0
  134. package/dataflow/environments/clone.js +23 -0
  135. package/dataflow/environments/{register.d.ts → define.d.ts} +3 -3
  136. package/dataflow/environments/define.js +51 -0
  137. package/dataflow/environments/diff.d.ts +6 -0
  138. package/dataflow/environments/diff.js +85 -0
  139. package/dataflow/environments/environment.d.ts +10 -43
  140. package/dataflow/environments/environment.js +32 -138
  141. package/dataflow/environments/identifier.d.ts +31 -0
  142. package/dataflow/environments/identifier.js +3 -0
  143. package/dataflow/environments/overwrite.d.ts +4 -4
  144. package/dataflow/environments/overwrite.js +9 -22
  145. package/dataflow/environments/resolve-by-name.d.ts +7 -6
  146. package/dataflow/environments/resolve-by-name.js +35 -19
  147. package/dataflow/environments/scoping.js +1 -4
  148. package/dataflow/extractor.d.ts +6 -6
  149. package/dataflow/extractor.js +47 -57
  150. package/dataflow/graph/diff.d.ts +24 -7
  151. package/dataflow/graph/diff.js +114 -74
  152. package/dataflow/graph/edge.d.ts +66 -20
  153. package/dataflow/graph/edge.js +73 -27
  154. package/dataflow/graph/graph.d.ts +53 -29
  155. package/dataflow/graph/graph.js +84 -89
  156. package/dataflow/graph/quads.js +2 -2
  157. package/dataflow/graph/vertex.d.ts +37 -34
  158. package/dataflow/info.d.ts +49 -0
  159. package/dataflow/info.js +29 -0
  160. package/dataflow/internal/linker.d.ts +11 -10
  161. package/dataflow/internal/linker.js +64 -90
  162. package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
  163. package/dataflow/internal/process/functions/call/argument/make-argument.js +31 -0
  164. package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +3 -0
  165. package/dataflow/internal/process/functions/call/argument/unpack-argument.js +18 -0
  166. package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +9 -0
  167. package/dataflow/internal/process/functions/call/built-in/built-in-access.js +82 -0
  168. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +29 -0
  169. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +167 -0
  170. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +11 -0
  171. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +165 -0
  172. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +7 -0
  173. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +97 -0
  174. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +7 -0
  175. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +165 -0
  176. package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +7 -0
  177. package/dataflow/internal/process/functions/call/built-in/built-in-get.js +36 -0
  178. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +7 -0
  179. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +100 -0
  180. package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +7 -0
  181. package/dataflow/internal/process/functions/call/built-in/built-in-library.js +32 -0
  182. package/dataflow/internal/process/functions/call/built-in/built-in-logical-bin-op.d.ts +9 -0
  183. package/dataflow/internal/process/functions/call/built-in/built-in-logical-bin-op.js +35 -0
  184. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +7 -0
  185. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +35 -0
  186. package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +9 -0
  187. package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +29 -0
  188. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +7 -0
  189. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +32 -0
  190. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +12 -0
  191. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +45 -0
  192. package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +11 -0
  193. package/dataflow/internal/process/functions/call/built-in/built-in-source.js +72 -0
  194. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +7 -0
  195. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +61 -0
  196. package/dataflow/internal/process/functions/call/common.d.ts +35 -0
  197. package/dataflow/internal/process/functions/call/common.js +70 -0
  198. package/dataflow/internal/process/functions/call/default-call-handling.d.ts +5 -0
  199. package/dataflow/internal/process/functions/call/default-call-handling.js +15 -0
  200. package/dataflow/internal/process/functions/call/known-call-handling.d.ts +26 -0
  201. package/dataflow/internal/process/functions/call/known-call-handling.js +62 -0
  202. package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -0
  203. package/dataflow/internal/process/functions/call/named-call-handling.js +53 -0
  204. package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +6 -0
  205. package/dataflow/internal/process/functions/call/unnamed-call-handling.js +58 -0
  206. package/dataflow/internal/process/functions/process-argument.d.ts +9 -0
  207. package/dataflow/internal/process/functions/{argument.js → process-argument.js} +25 -20
  208. package/dataflow/internal/process/functions/{parameter.d.ts → process-parameter.d.ts} +3 -2
  209. package/dataflow/internal/process/functions/{parameter.js → process-parameter.js} +10 -13
  210. package/dataflow/internal/process/process-named-call.d.ts +6 -0
  211. package/dataflow/internal/process/process-named-call.js +17 -0
  212. package/dataflow/internal/process/process-symbol.d.ts +5 -0
  213. package/dataflow/internal/process/process-symbol.js +26 -0
  214. package/dataflow/internal/process/process-uninteresting-leaf.d.ts +4 -0
  215. package/dataflow/internal/process/process-uninteresting-leaf.js +9 -0
  216. package/dataflow/internal/process/process-value.d.ts +4 -0
  217. package/dataflow/internal/process/process-value.js +22 -0
  218. package/dataflow/logger.d.ts +1 -0
  219. package/dataflow/logger.js +6 -0
  220. package/dataflow/processor.d.ts +18 -13
  221. package/dataflow/processor.js +1 -1
  222. package/package.json +48 -85
  223. package/r-bridge/data/data.d.ts +603 -0
  224. package/r-bridge/data/data.js +753 -0
  225. package/r-bridge/data/get.d.ts +19 -0
  226. package/r-bridge/data/get.js +51 -0
  227. package/r-bridge/data/print.d.ts +1 -0
  228. package/r-bridge/data/print.js +58 -0
  229. package/r-bridge/data/types.d.ts +33 -0
  230. package/r-bridge/data/types.js +3 -0
  231. package/r-bridge/init.d.ts +3 -0
  232. package/r-bridge/init.js +22 -0
  233. package/r-bridge/lang-4.x/ast/model/collect.d.ts +2 -1
  234. package/r-bridge/lang-4.x/ast/model/collect.js +2 -2
  235. package/r-bridge/lang-4.x/ast/model/model.d.ts +26 -5
  236. package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +4 -3
  237. package/r-bridge/lang-4.x/ast/model/nodes/r-argument.d.ts +4 -0
  238. package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +0 -17
  239. package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +3 -1
  240. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +6 -4
  241. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.js +2 -0
  242. package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +2 -3
  243. package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +1 -1
  244. package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +1 -1
  245. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +2 -2
  246. package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +0 -11
  247. package/r-bridge/lang-4.x/ast/model/operators.d.ts +6 -18
  248. package/r-bridge/lang-4.x/ast/model/operators.js +36 -48
  249. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +19 -15
  250. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +59 -54
  251. package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +8 -0
  252. package/r-bridge/lang-4.x/ast/model/processing/node-id.js +18 -0
  253. package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +2 -2
  254. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +28 -17
  255. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +7 -34
  256. package/r-bridge/lang-4.x/ast/model/processing/visitor.js +5 -2
  257. package/r-bridge/lang-4.x/ast/model/type.js +13 -6
  258. package/r-bridge/lang-4.x/ast/parser/json/format.d.ts +4 -1
  259. package/r-bridge/lang-4.x/ast/parser/json/format.js +9 -2
  260. package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +5 -5
  261. package/r-bridge/lang-4.x/ast/parser/json/parser.js +22 -27
  262. package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +10 -7
  263. package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +19 -11
  264. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then-else.d.ts → normalize-if-then-else.d.ts} +3 -3
  265. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then-else.js → normalize-if-then-else.js} +10 -13
  266. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.d.ts → normalize-if-then.d.ts} +3 -3
  267. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.js → normalize-if-then.js} +9 -12
  268. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.d.ts +10 -0
  269. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.js +64 -0
  270. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.d.ts → normalize-argument.d.ts} +4 -4
  271. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.js → normalize-argument.js} +13 -17
  272. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.d.ts → normalize-call.d.ts} +6 -4
  273. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.js → normalize-call.js} +24 -29
  274. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-definition.d.ts +12 -0
  275. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{definition.js → normalize-definition.js} +14 -19
  276. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.d.ts → normalize-parameter.d.ts} +4 -4
  277. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.js → normalize-parameter.js} +12 -16
  278. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-break.d.ts +4 -0
  279. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{break.js → normalize-break.js} +6 -8
  280. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-for.d.ts +4 -0
  281. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{for.js → normalize-for.js} +18 -20
  282. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-next.d.ts +4 -0
  283. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{next.js → normalize-next.js} +6 -8
  284. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-repeat.d.ts +13 -0
  285. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{repeat.js → normalize-repeat.js} +13 -16
  286. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-while.d.ts +4 -0
  287. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{while.js → normalize-while.js} +10 -12
  288. package/r-bridge/lang-4.x/ast/parser/xml/internal/{access.d.ts → normalize-access.d.ts} +4 -4
  289. package/r-bridge/lang-4.x/ast/parser/xml/internal/{access.js → normalize-access.js} +44 -45
  290. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.d.ts → normalize-binary.d.ts} +3 -3
  291. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.js → normalize-binary.js} +23 -73
  292. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.d.ts +13 -0
  293. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.js +47 -0
  294. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-comment.d.ts +11 -0
  295. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/{comment.js → normalize-comment.js} +5 -10
  296. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-line-directive.d.ts +13 -0
  297. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/{line-directive.js → normalize-line-directive.js} +7 -12
  298. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.d.ts +3 -0
  299. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.js +15 -0
  300. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.d.ts +10 -0
  301. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.js +182 -0
  302. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.d.ts +4 -0
  303. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.js +34 -0
  304. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.d.ts +13 -0
  305. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.js +59 -0
  306. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-number.d.ts +16 -0
  307. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{number.js → normalize-number.js} +12 -18
  308. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-string.d.ts +11 -0
  309. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{string.js → normalize-string.js} +7 -12
  310. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.d.ts → normalize-symbol.d.ts} +4 -4
  311. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.js → normalize-symbol.js} +12 -15
  312. package/r-bridge/lang-4.x/ast/parser/xml/{internal/meta.d.ts → normalize-meta.d.ts} +5 -3
  313. package/r-bridge/lang-4.x/ast/parser/xml/{internal/meta.js → normalize-meta.js} +8 -8
  314. package/r-bridge/lang-4.x/ast/parser/xml/{data.d.ts → normalizer-data.d.ts} +1 -5
  315. package/r-bridge/lang-4.x/ast/parser/xml/normalizer-data.js +3 -0
  316. package/r-bridge/lang-4.x/{values.d.ts → convert-values.d.ts} +2 -2
  317. package/r-bridge/lang-4.x/{values.js → convert-values.js} +5 -5
  318. package/r-bridge/retriever.d.ts +5 -5
  319. package/r-bridge/retriever.js +11 -24
  320. package/r-bridge/shell-executor.d.ts +0 -1
  321. package/r-bridge/shell-executor.js +7 -12
  322. package/r-bridge/shell.d.ts +14 -12
  323. package/r-bridge/shell.js +50 -45
  324. package/reconstruct/reconstruct.d.ts +4 -2
  325. package/reconstruct/reconstruct.js +193 -185
  326. package/slicing/criterion/collect-all.d.ts +4 -3
  327. package/slicing/criterion/collect-all.js +5 -1
  328. package/slicing/criterion/filters/all-variables.js +14 -22
  329. package/slicing/criterion/parse.d.ts +4 -2
  330. package/slicing/criterion/parse.js +13 -11
  331. package/slicing/static/fingerprint.d.ts +5 -0
  332. package/slicing/static/fingerprint.js +17 -0
  333. package/slicing/static/slice-call.d.ts +10 -0
  334. package/slicing/static/slice-call.js +86 -0
  335. package/slicing/static/slicer-types.d.ts +33 -0
  336. package/slicing/static/slicer-types.js +3 -0
  337. package/slicing/static/static-slicer.d.ts +6 -24
  338. package/slicing/static/static-slicer.js +54 -155
  339. package/slicing/static/visiting-queue.d.ts +23 -0
  340. package/slicing/static/visiting-queue.js +53 -0
  341. package/statistics/features/common-syntax-probability.d.ts +29 -0
  342. package/statistics/features/common-syntax-probability.js +159 -0
  343. package/statistics/features/feature.d.ts +182 -0
  344. package/statistics/features/feature.js +39 -0
  345. package/statistics/features/post-processing.d.ts +12 -0
  346. package/statistics/features/post-processing.js +21 -0
  347. package/statistics/features/supported/assignments/assignments.d.ts +12 -0
  348. package/statistics/features/supported/assignments/assignments.js +55 -0
  349. package/statistics/features/supported/assignments/post-process.d.ts +3 -0
  350. package/statistics/features/supported/assignments/post-process.js +124 -0
  351. package/statistics/features/supported/comments/comments.d.ts +18 -0
  352. package/statistics/features/supported/comments/comments.js +133 -0
  353. package/statistics/features/supported/comments/post-process.d.ts +3 -0
  354. package/statistics/features/supported/comments/post-process.js +49 -0
  355. package/statistics/features/supported/control-flow/control-flow.d.ts +17 -0
  356. package/statistics/features/supported/control-flow/control-flow.js +68 -0
  357. package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
  358. package/statistics/features/supported/control-flow/post-process.js +64 -0
  359. package/statistics/features/supported/data-access/data-access.d.ts +15 -0
  360. package/statistics/features/supported/data-access/data-access.js +120 -0
  361. package/statistics/features/supported/data-access/post-process.d.ts +3 -0
  362. package/statistics/features/supported/data-access/post-process.js +106 -0
  363. package/statistics/features/supported/defined-functions/defined-functions.d.ts +34 -0
  364. package/statistics/features/supported/defined-functions/defined-functions.js +142 -0
  365. package/statistics/features/supported/defined-functions/post-process.d.ts +6 -0
  366. package/statistics/features/supported/defined-functions/post-process.js +169 -0
  367. package/statistics/features/supported/expression-list/expression-list.d.ts +9 -0
  368. package/statistics/features/supported/expression-list/expression-list.js +36 -0
  369. package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
  370. package/statistics/features/supported/expression-list/post-process.js +43 -0
  371. package/statistics/features/supported/loops/loops.d.ts +20 -0
  372. package/statistics/features/supported/loops/loops.js +79 -0
  373. package/statistics/features/supported/loops/post-process.d.ts +3 -0
  374. package/statistics/features/supported/loops/post-process.js +71 -0
  375. package/statistics/features/supported/used-functions/post-process.d.ts +6 -0
  376. package/statistics/features/supported/used-functions/post-process.js +178 -0
  377. package/statistics/features/supported/used-functions/used-functions.d.ts +24 -0
  378. package/statistics/features/supported/used-functions/used-functions.js +97 -0
  379. package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
  380. package/statistics/features/supported/used-packages/post-process.js +120 -0
  381. package/statistics/features/supported/used-packages/used-packages.d.ts +16 -0
  382. package/statistics/features/supported/used-packages/used-packages.js +130 -0
  383. package/statistics/features/supported/values/post-process.d.ts +3 -0
  384. package/statistics/features/supported/values/post-process.js +71 -0
  385. package/statistics/features/supported/values/values.d.ts +14 -0
  386. package/statistics/features/supported/values/values.js +101 -0
  387. package/statistics/features/supported/variables/post-process.d.ts +9 -0
  388. package/statistics/features/supported/variables/post-process.js +121 -0
  389. package/statistics/features/supported/variables/variables.d.ts +15 -0
  390. package/statistics/features/supported/variables/variables.js +60 -0
  391. package/statistics/meta-statistics.d.ts +33 -0
  392. package/statistics/meta-statistics.js +17 -0
  393. package/statistics/output/file-provider.d.ts +37 -0
  394. package/statistics/output/file-provider.js +97 -0
  395. package/statistics/output/print-stats.d.ts +17 -0
  396. package/statistics/output/print-stats.js +69 -0
  397. package/statistics/output/statistics-file.d.ts +37 -0
  398. package/statistics/output/statistics-file.js +69 -0
  399. package/statistics/statistics.d.ts +28 -0
  400. package/statistics/statistics.js +108 -0
  401. package/statistics/summarizer/auto-detect.d.ts +2 -0
  402. package/statistics/summarizer/auto-detect.js +32 -0
  403. package/statistics/summarizer/first-phase/process.d.ts +6 -0
  404. package/statistics/summarizer/first-phase/process.js +81 -0
  405. package/statistics/summarizer/post-process/clusterer.d.ts +26 -0
  406. package/statistics/summarizer/post-process/clusterer.js +43 -0
  407. package/statistics/summarizer/post-process/file-based-count.d.ts +17 -0
  408. package/statistics/summarizer/post-process/file-based-count.js +49 -0
  409. package/statistics/summarizer/post-process/histogram.d.ts +59 -0
  410. package/statistics/summarizer/post-process/histogram.js +128 -0
  411. package/statistics/summarizer/post-process/post-process-output.d.ts +16 -0
  412. package/statistics/summarizer/post-process/post-process-output.js +105 -0
  413. package/statistics/summarizer/second-phase/process.d.ts +11 -0
  414. package/statistics/summarizer/second-phase/process.js +116 -0
  415. package/statistics/summarizer/summarizer.d.ts +35 -0
  416. package/statistics/summarizer/summarizer.js +135 -0
  417. package/util/ansi.d.ts +2 -2
  418. package/util/ansi.js +2 -2
  419. package/util/arrays.d.ts +11 -1
  420. package/util/arrays.js +34 -1
  421. package/util/assert.d.ts +1 -0
  422. package/util/assert.js +5 -1
  423. package/util/cfg/cfg.d.ts +3 -2
  424. package/util/cfg/cfg.js +17 -28
  425. package/util/cfg/visitor.d.ts +1 -1
  426. package/util/defaultmap.d.ts +1 -1
  427. package/util/defaultmap.js +1 -1
  428. package/util/diff.d.ts +4 -4
  429. package/util/files.d.ts +2 -2
  430. package/util/files.js +1 -1
  431. package/util/log.d.ts +1 -0
  432. package/util/log.js +7 -1
  433. package/util/logic.d.ts +1 -0
  434. package/util/logic.js +3 -0
  435. package/util/mermaid/ast.d.ts +1 -1
  436. package/util/mermaid/ast.js +2 -2
  437. package/util/mermaid/cfg.d.ts +1 -1
  438. package/util/mermaid/dfg.d.ts +34 -8
  439. package/util/mermaid/dfg.js +99 -70
  440. package/util/mermaid/mermaid.d.ts +1 -1
  441. package/util/mermaid/mermaid.js +6 -7
  442. package/util/objects.js +4 -0
  443. package/util/quads.d.ts +3 -3
  444. package/util/quads.js +0 -1
  445. package/util/range.d.ts +27 -14
  446. package/util/range.js +31 -27
  447. package/util/version.js +1 -1
  448. package/core/index.d.ts +0 -4
  449. package/core/index.js +0 -23
  450. package/core/input.d.ts +0 -42
  451. package/core/output.d.ts +0 -15
  452. package/core/slicer.d.ts +0 -124
  453. package/core/slicer.js +0 -227
  454. package/core/steps.d.ts +0 -508
  455. package/core/steps.js +0 -100
  456. package/dataflow/environments/index.d.ts +0 -7
  457. package/dataflow/environments/index.js +0 -23
  458. package/dataflow/environments/register.js +0 -40
  459. package/dataflow/environments/scopes.d.ts +0 -6
  460. package/dataflow/environments/scopes.js +0 -6
  461. package/dataflow/graph/index.d.ts +0 -4
  462. package/dataflow/graph/index.js +0 -21
  463. package/dataflow/index.d.ts +0 -5
  464. package/dataflow/index.js +0 -24
  465. package/dataflow/internal/info.d.ts +0 -21
  466. package/dataflow/internal/info.js +0 -16
  467. package/dataflow/internal/process/access.d.ts +0 -4
  468. package/dataflow/internal/process/access.js +0 -53
  469. package/dataflow/internal/process/expression-list.d.ts +0 -8
  470. package/dataflow/internal/process/expression-list.js +0 -144
  471. package/dataflow/internal/process/functions/argument.d.ts +0 -8
  472. package/dataflow/internal/process/functions/exit-points.d.ts +0 -2
  473. package/dataflow/internal/process/functions/exit-points.js +0 -121
  474. package/dataflow/internal/process/functions/function-call.d.ts +0 -5
  475. package/dataflow/internal/process/functions/function-call.js +0 -105
  476. package/dataflow/internal/process/functions/function-definition.d.ts +0 -4
  477. package/dataflow/internal/process/functions/function-definition.js +0 -176
  478. package/dataflow/internal/process/functions/source.d.ts +0 -8
  479. package/dataflow/internal/process/functions/source.js +0 -81
  480. package/dataflow/internal/process/if-then-else.d.ts +0 -4
  481. package/dataflow/internal/process/if-then-else.js +0 -56
  482. package/dataflow/internal/process/loops/for-loop.d.ts +0 -4
  483. package/dataflow/internal/process/loops/for-loop.js +0 -54
  484. package/dataflow/internal/process/loops/repeat-loop.d.ts +0 -4
  485. package/dataflow/internal/process/loops/repeat-loop.js +0 -21
  486. package/dataflow/internal/process/loops/while-loop.d.ts +0 -4
  487. package/dataflow/internal/process/loops/while-loop.js +0 -31
  488. package/dataflow/internal/process/operators/assignment.d.ts +0 -4
  489. package/dataflow/internal/process/operators/assignment.js +0 -129
  490. package/dataflow/internal/process/operators/non-assignment-binary-op.d.ts +0 -4
  491. package/dataflow/internal/process/operators/non-assignment-binary-op.js +0 -25
  492. package/dataflow/internal/process/operators/pipe.d.ts +0 -4
  493. package/dataflow/internal/process/operators/pipe.js +0 -46
  494. package/dataflow/internal/process/operators/unary-op.d.ts +0 -4
  495. package/dataflow/internal/process/operators/unary-op.js +0 -10
  496. package/dataflow/internal/process/symbol.d.ts +0 -4
  497. package/dataflow/internal/process/symbol.js +0 -21
  498. package/dataflow/internal/process/uninteresting-leaf.d.ts +0 -3
  499. package/dataflow/internal/process/uninteresting-leaf.js +0 -9
  500. package/index.d.ts +0 -4
  501. package/index.js +0 -21
  502. package/r-bridge/index.d.ts +0 -11
  503. package/r-bridge/index.js +0 -28
  504. package/r-bridge/lang-4.x/ast/index.d.ts +0 -3
  505. package/r-bridge/lang-4.x/ast/index.js +0 -22
  506. package/r-bridge/lang-4.x/ast/model/index.d.ts +0 -6
  507. package/r-bridge/lang-4.x/ast/model/index.js +0 -23
  508. package/r-bridge/lang-4.x/ast/model/nodes/index.d.ts +0 -21
  509. package/r-bridge/lang-4.x/ast/model/nodes/index.js +0 -38
  510. package/r-bridge/lang-4.x/ast/model/nodes/info/index.d.ts +0 -13
  511. package/r-bridge/lang-4.x/ast/model/nodes/info/index.js +0 -27
  512. package/r-bridge/lang-4.x/ast/model/processing/index.d.ts +0 -5
  513. package/r-bridge/lang-4.x/ast/model/processing/index.js +0 -22
  514. package/r-bridge/lang-4.x/ast/parser/xml/hooks.d.ts +0 -292
  515. package/r-bridge/lang-4.x/ast/parser/xml/hooks.js +0 -136
  516. package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +0 -3
  517. package/r-bridge/lang-4.x/ast/parser/xml/index.js +0 -20
  518. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.d.ts +0 -2
  519. package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.js +0 -19
  520. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.d.ts +0 -10
  521. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +0 -65
  522. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.d.ts +0 -1
  523. package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.js +0 -18
  524. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.d.ts +0 -12
  525. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.d.ts +0 -2
  526. package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.js +0 -20
  527. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +0 -9
  528. package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +0 -26
  529. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.d.ts +0 -4
  530. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.d.ts +0 -4
  531. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.d.ts +0 -5
  532. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.js +0 -22
  533. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.d.ts +0 -4
  534. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.d.ts +0 -13
  535. package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.d.ts +0 -4
  536. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.d.ts +0 -3
  537. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.js +0 -20
  538. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.d.ts +0 -6
  539. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.js +0 -24
  540. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.d.ts +0 -13
  541. package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +0 -59
  542. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.d.ts +0 -11
  543. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.d.ts +0 -1
  544. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.js +0 -18
  545. package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.d.ts +0 -12
  546. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.d.ts +0 -10
  547. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +0 -159
  548. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.d.ts +0 -3
  549. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.js +0 -20
  550. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.d.ts +0 -4
  551. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +0 -33
  552. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.d.ts +0 -13
  553. package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +0 -64
  554. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.d.ts +0 -3
  555. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.js +0 -20
  556. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.d.ts +0 -13
  557. package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.d.ts +0 -11
  558. package/r-bridge/lang-4.x/index.d.ts +0 -2
  559. package/r-bridge/lang-4.x/index.js +0 -19
  560. package/slicing/criterion/filters/index.d.ts +0 -1
  561. package/slicing/criterion/filters/index.js +0 -18
  562. package/slicing/criterion/index.d.ts +0 -3
  563. package/slicing/criterion/index.js +0 -20
  564. package/slicing/index.d.ts +0 -3
  565. package/slicing/index.js +0 -20
  566. package/slicing/static/index.d.ts +0 -1
  567. package/slicing/static/index.js +0 -18
  568. package/util/mermaid/index.d.ts +0 -3
  569. package/util/mermaid/index.js +0 -20
  570. /package/{r-bridge/lang-4.x/ast/parser/xml → benchmark/summarizer}/data.js +0 -0
package/core/steps.js DELETED
@@ -1,100 +0,0 @@
1
- "use strict";
2
- /**
3
- * This file defines *all* steps of the slicing process and the data they require.
4
- *
5
- * Note, that the order of elements here also describes the *desired* order of their desired execution for readability.
6
- * However, it is the {@link SteppingSlicer} which controls the order of execution and the steps required to achieve a given result.
7
- *
8
- * If you add a new step, you have to (at least) update the {@link SteppingSlicer} as well as the corresponding type predicate {@link SteppingSlicerInput}.
9
- * Furthermore, if your step is the new *last* step, please update {@link LAST_STEP}.
10
- *
11
- * Please note that the combination of `satisfies` and `as` seems to be required.
12
- * With `satisfies` we make sure that the respective element has all the keys it requires, and the `as` force the type to be exactly the given one
13
- *
14
- * @module
15
- */
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.printStepResult = exports.executeSingleSubStep = exports.LAST_STEP = exports.LAST_PER_FILE_STEP = exports.STEPS = exports.STEPS_PER_SLICE = exports.STEPS_PER_FILE = void 0;
18
- const r_bridge_1 = require("../r-bridge");
19
- const dataflow_1 = require("../dataflow");
20
- const slicing_1 = require("../slicing");
21
- const print_1 = require("./print/print");
22
- const normalize_printer_1 = require("./print/normalize-printer");
23
- const assert_1 = require("../util/assert");
24
- const parse_printer_1 = require("./print/parse-printer");
25
- const dataflow_printer_1 = require("./print/dataflow-printer");
26
- const parser_1 = require("../r-bridge/lang-4.x/ast/parser/json/parser");
27
- exports.STEPS_PER_FILE = {
28
- 'parse': {
29
- description: 'Parse the given R code into an AST',
30
- processor: (r, s) => (0, r_bridge_1.retrieveParseDataFromRCode)(r, s),
31
- required: 'once-per-file',
32
- printer: {
33
- [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
34
- [2 /* StepOutputFormat.Json */]: text => text,
35
- [5 /* StepOutputFormat.RdfQuads */]: parse_printer_1.parseToQuads
36
- }
37
- },
38
- 'normalize': {
39
- description: 'Normalize the AST to flowR\'s AST (first step of the normalization)',
40
- processor: (j, h, g) => (0, parser_1.normalize)(j, h, g),
41
- required: 'once-per-file',
42
- printer: {
43
- [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
44
- [2 /* StepOutputFormat.Json */]: normalize_printer_1.normalizedAstToJson,
45
- [5 /* StepOutputFormat.RdfQuads */]: normalize_printer_1.normalizedAstToQuads,
46
- [3 /* StepOutputFormat.Mermaid */]: normalize_printer_1.printNormalizedAstToMermaid,
47
- [4 /* StepOutputFormat.MermaidUrl */]: normalize_printer_1.printNormalizedAstToMermaidUrl
48
- }
49
- },
50
- 'dataflow': {
51
- description: 'Construct the dataflow graph',
52
- processor: (r, a) => (0, dataflow_1.produceDataFlowGraph)(r, a),
53
- required: 'once-per-file',
54
- printer: {
55
- [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter,
56
- [2 /* StepOutputFormat.Json */]: dataflow_printer_1.dataflowGraphToJson,
57
- [5 /* StepOutputFormat.RdfQuads */]: dataflow_printer_1.dataflowGraphToQuads,
58
- [3 /* StepOutputFormat.Mermaid */]: dataflow_printer_1.dataflowGraphToMermaid,
59
- [4 /* StepOutputFormat.MermaidUrl */]: dataflow_printer_1.dataflowGraphToMermaidUrl
60
- }
61
- }
62
- };
63
- exports.STEPS_PER_SLICE = {
64
- 'slice': {
65
- description: 'Calculate the actual static slice from the dataflow graph and the given slicing criteria',
66
- processor: (d, a, c) => (0, slicing_1.staticSlicing)(d, a, c),
67
- required: 'once-per-slice',
68
- printer: {
69
- [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter
70
- }
71
- },
72
- 'reconstruct': {
73
- description: 'Reconstruct R code from the static slice',
74
- processor: (a, s) => (0, slicing_1.reconstructToCode)(a, s),
75
- required: 'once-per-slice',
76
- printer: {
77
- [0 /* StepOutputFormat.Internal */]: print_1.internalPrinter
78
- }
79
- }
80
- };
81
- exports.STEPS = { ...exports.STEPS_PER_FILE, ...exports.STEPS_PER_SLICE };
82
- exports.LAST_PER_FILE_STEP = 'dataflow';
83
- exports.LAST_STEP = 'reconstruct';
84
- function executeSingleSubStep(subStep, ...input) {
85
- // @ts-expect-error - this is safe, as we know that the function arguments are correct by 'satisfies', this saves an explicit cast with 'as'
86
- return exports.STEPS[subStep].processor(...input);
87
- }
88
- exports.executeSingleSubStep = executeSingleSubStep;
89
- /**
90
- * For a `step` of the given name, which returned the given `data`. Convert that data into the given `format`.
91
- * Depending on your step and the format this may require `additional` inputs.
92
- */
93
- function printStepResult(step, data, format, ...additional) {
94
- const base = exports.STEPS[step].printer;
95
- const printer = base[format];
96
- (0, assert_1.guard)(printer !== undefined, `printer for ${step} does not support ${String(format)}`);
97
- return printer(data, ...additional);
98
- }
99
- exports.printStepResult = printStepResult;
100
- //# sourceMappingURL=steps.js.map
@@ -1,7 +0,0 @@
1
- export * from './append';
2
- export * from './resolve-by-name';
3
- export * from './scoping';
4
- export * from './overwrite';
5
- export * from './environment';
6
- export * from './register';
7
- export { DataflowScopeName } from './scopes';
@@ -1,23 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./append"), exports);
18
- __exportStar(require("./resolve-by-name"), exports);
19
- __exportStar(require("./scoping"), exports);
20
- __exportStar(require("./overwrite"), exports);
21
- __exportStar(require("./environment"), exports);
22
- __exportStar(require("./register"), exports);
23
- //# sourceMappingURL=index.js.map
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.define = void 0;
4
- const environment_1 = require("./environment");
5
- const scopes_1 = require("./scopes");
6
- const assert_1 = require("../../util/assert");
7
- /**
8
- * Insert the given `definition` --- defined within the given scope --- into the passed along `environments` will take care of propagation.
9
- * Does not modify the passed along `environments` in-place! It returns the new reference.
10
- */
11
- function define(definition, withinScope, environments) {
12
- let newEnvironments = environments;
13
- (0, assert_1.guard)(withinScope === definition.scope, 'Mismatching scopes');
14
- if (withinScope === scopes_1.LocalScope) {
15
- newEnvironments = (0, environment_1.cloneEnvironments)(environments, false);
16
- newEnvironments.current.memory.set(definition.name, [definition]);
17
- }
18
- else if (withinScope === scopes_1.GlobalScope) {
19
- newEnvironments = (0, environment_1.cloneEnvironments)(environments, true);
20
- let current = newEnvironments.current;
21
- let last = undefined;
22
- let found = false;
23
- do {
24
- if (current.memory.has(definition.name)) {
25
- current.memory.set(definition.name, [definition]);
26
- found = true;
27
- break;
28
- }
29
- last = current;
30
- current = current.parent;
31
- } while (current !== undefined);
32
- if (!found) {
33
- (0, assert_1.guard)(last !== undefined, () => `Could not find global scope for ${definition.name}`);
34
- last.memory.set(definition.name, [definition]);
35
- }
36
- }
37
- return newEnvironments;
38
- }
39
- exports.define = define;
40
- //# sourceMappingURL=register.js.map
@@ -1,6 +0,0 @@
1
- export declare const GlobalScope = ".GlobalEnv";
2
- export declare const LocalScope = "local";
3
- /**
4
- * Used to represent usual R scopes
5
- */
6
- export type DataflowScopeName = /** default R global environment */ typeof GlobalScope | /** unspecified automatic local environment */ typeof LocalScope | /** named environments */ string;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LocalScope = exports.GlobalScope = void 0;
4
- exports.GlobalScope = '.GlobalEnv';
5
- exports.LocalScope = 'local';
6
- //# sourceMappingURL=scopes.js.map
@@ -1,4 +0,0 @@
1
- export * from './graph';
2
- export * from './edge';
3
- export * from './vertex';
4
- export * from './diff';
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./graph"), exports);
18
- __exportStar(require("./edge"), exports);
19
- __exportStar(require("./vertex"), exports);
20
- __exportStar(require("./diff"), exports);
21
- //# sourceMappingURL=index.js.map
@@ -1,5 +0,0 @@
1
- export declare const dataflowLogger: import("tslog").Logger<import("tslog").ILogObj>;
2
- export * from './graph';
3
- export * from './extractor';
4
- export * from './environments/environment';
5
- export * from '../util/mermaid/dfg';
package/dataflow/index.js DELETED
@@ -1,24 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.dataflowLogger = void 0;
18
- const log_1 = require("../util/log");
19
- exports.dataflowLogger = log_1.log.getSubLogger({ name: 'dataflow' });
20
- __exportStar(require("./graph"), exports);
21
- __exportStar(require("./extractor"), exports);
22
- __exportStar(require("./environments/environment"), exports);
23
- __exportStar(require("../util/mermaid/dfg"), exports);
24
- //# sourceMappingURL=index.js.map
@@ -1,21 +0,0 @@
1
- import { DataflowGraph } from '../graph';
2
- import type { REnvironmentInformation, IdentifierReference, DataflowScopeName } from '../environments';
3
- import type { DataflowProcessorInformation } from '../processor';
4
- /**
5
- * Continuously updated during the dataflow analysis to hold the current state.
6
- */
7
- export interface DataflowInformation {
8
- /** Nodes that have not been identified as read or write and will be so on higher */
9
- unknownReferences: IdentifierReference[];
10
- /** Nodes which are read */
11
- in: IdentifierReference[];
12
- /** Nodes which are written to */
13
- out: IdentifierReference[];
14
- /** The current scope during the fold */
15
- scope: DataflowScopeName;
16
- /** Current environments used for name resolution, probably updated on the next expression-list processing */
17
- environments: REnvironmentInformation;
18
- /** The current constructed dataflow graph */
19
- graph: DataflowGraph;
20
- }
21
- export declare function initializeCleanInfo<T>(data: DataflowProcessorInformation<T>): DataflowInformation;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initializeCleanInfo = void 0;
4
- const graph_1 = require("../graph");
5
- function initializeCleanInfo(data) {
6
- return {
7
- unknownReferences: [],
8
- in: [],
9
- out: [],
10
- scope: data.activeScope,
11
- environments: data.environments,
12
- graph: new graph_1.DataflowGraph()
13
- };
14
- }
15
- exports.initializeCleanInfo = initializeCleanInfo;
16
- //# sourceMappingURL=info.js.map
@@ -1,4 +0,0 @@
1
- import type { ParentInformation, RAccess } from '../../../r-bridge';
2
- import type { DataflowInformation } from '../info';
3
- import type { DataflowProcessorInformation } from '../../processor';
4
- export declare function processAccess<OtherInfo>(node: RAccess<OtherInfo & ParentInformation>, data: DataflowProcessorInformation<OtherInfo & ParentInformation>): DataflowInformation;
@@ -1,53 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.processAccess = void 0;
4
- const processor_1 = require("../../processor");
5
- const environments_1 = require("../../environments");
6
- const graph_1 = require("../../graph");
7
- function processAccess(node, data) {
8
- const processedAccessed = (0, processor_1.processDataflowFor)(node.accessed, data);
9
- const nextGraph = processedAccessed.graph;
10
- const outgoing = processedAccessed.out;
11
- const ingoing = processedAccessed.in;
12
- const environments = processedAccessed.environments;
13
- const accessedNodes = processedAccessed.unknownReferences;
14
- if (node.operator === '[' || node.operator === '[[') {
15
- for (const access of node.access) {
16
- if (access === null || access.value === undefined) {
17
- continue;
18
- }
19
- const processedAccess = (0, processor_1.processDataflowFor)(access, data);
20
- nextGraph.mergeWith(processedAccess.graph);
21
- // outgoing.push()
22
- // we link to *out* instead of *in*, as access uses arguments for parsing and the arguments are defined
23
- for (const newIn of [...processedAccess.out, ...processedAccess.unknownReferences]) {
24
- for (const accessedNode of accessedNodes) {
25
- nextGraph.addEdge(accessedNode, newIn, graph_1.EdgeType.Reads, 'always');
26
- }
27
- }
28
- ingoing.push(...processedAccess.in, ...processedAccess.unknownReferences);
29
- (0, environments_1.overwriteEnvironments)(environments, processedAccess.environments);
30
- }
31
- }
32
- return {
33
- /*
34
- * keep active nodes in case of assignments etc.
35
- * We make them maybe as a kind of hack.
36
- * This way when using
37
- * ```ts
38
- * a[[1]] <- 3
39
- * a[[2]] <- 4
40
- * a
41
- * ```
42
- * the read for a will use both accesses as potential definitions and not just the last one!
43
- */
44
- unknownReferences: (0, environments_1.makeAllMaybe)(processedAccessed.unknownReferences, nextGraph, environments),
45
- in: ingoing,
46
- out: outgoing,
47
- environments: environments,
48
- scope: data.activeScope,
49
- graph: nextGraph
50
- };
51
- }
52
- exports.processAccess = processAccess;
53
- //# sourceMappingURL=access.js.map
@@ -1,8 +0,0 @@
1
- /**
2
- * Processes a list of expressions joining their dataflow graphs accordingly.
3
- * @module
4
- */
5
- import type { DataflowInformation } from '../info';
6
- import type { ParentInformation, RExpressionList } from '../../../r-bridge';
7
- import type { DataflowProcessorInformation } from '../../processor';
8
- export declare function processExpressionList<OtherInfo>(exprList: RExpressionList<OtherInfo & ParentInformation>, data: DataflowProcessorInformation<OtherInfo & ParentInformation>): DataflowInformation;
@@ -1,144 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.processExpressionList = void 0;
4
- const info_1 = require("../info");
5
- const r_bridge_1 = require("../../../r-bridge");
6
- const processor_1 = require("../../processor");
7
- const environments_1 = require("../../environments");
8
- const linker_1 = require("../linker");
9
- const defaultmap_1 = require("../../../util/defaultmap");
10
- const graph_1 = require("../../graph");
11
- const index_1 = require("../../index");
12
- const assert_1 = require("../../../util/assert");
13
- const dotDotDotAccess = /\.\.\d+/;
14
- function linkReadNameToWriteIfPossible(read, data, environments, listEnvironments, remainingRead, nextGraph) {
15
- const readName = dotDotDotAccess.test(read.name) ? '...' : read.name;
16
- const probableTarget = (0, environments_1.resolveByName)(readName, data.activeScope, environments);
17
- // record if at least one has not been defined
18
- if (probableTarget === undefined || probableTarget.some(t => !listEnvironments.has(t.nodeId))) {
19
- if (remainingRead.has(readName)) {
20
- remainingRead.get(readName)?.push(read);
21
- }
22
- else {
23
- remainingRead.set(readName, [read]);
24
- }
25
- }
26
- // keep it, for we have no target, as read-ids are unique within same fold, this should work for same links
27
- // we keep them if they are defined outside the current parent and maybe throw them away later
28
- if (probableTarget === undefined) {
29
- return;
30
- }
31
- for (const target of probableTarget) {
32
- // we can stick with maybe even if readId.attribute is always
33
- nextGraph.addEdge(read, target, index_1.EdgeType.Reads, undefined, true);
34
- }
35
- }
36
- function processNextExpression(currentElement, data, environments, listEnvironments, remainingRead, nextGraph) {
37
- // all inputs that have not been written until know, are read!
38
- for (const read of [...currentElement.in, ...currentElement.unknownReferences]) {
39
- linkReadNameToWriteIfPossible(read, data, environments, listEnvironments, remainingRead, nextGraph);
40
- }
41
- // add same variable reads for deferred if they are read previously but not dependent
42
- for (const writeTarget of currentElement.out) {
43
- const writeName = writeTarget.name;
44
- const resolved = (0, environments_1.resolveByName)(writeName, data.activeScope, environments);
45
- if (resolved !== undefined) {
46
- // write-write
47
- for (const target of resolved) {
48
- nextGraph.addEdge(target, writeTarget, index_1.EdgeType.SameDefDef, undefined, true);
49
- }
50
- }
51
- }
52
- }
53
- function updateSideEffectsForCalledFunctions(calledEnvs, environments, nextGraph) {
54
- for (const { functionCall, called } of calledEnvs) {
55
- for (const calledFn of called) {
56
- (0, assert_1.guard)(calledFn.tag === 'function-definition', 'called function must call a function definition');
57
- // only merge the environments they have in common
58
- let environment = calledFn.environment;
59
- while (environment.level > environments.level) {
60
- environment = (0, environments_1.popLocalEnvironment)(environment);
61
- }
62
- // update alle definitions to be defined at this function call
63
- let current = environment.current;
64
- while (current !== undefined) {
65
- for (const definitions of current.memory.values()) {
66
- for (const def of definitions) {
67
- if (def.kind !== 'built-in-function') {
68
- nextGraph.addEdge(def.nodeId, functionCall, index_1.EdgeType.SideEffectOnCall, def.used);
69
- }
70
- }
71
- }
72
- current = current.parent;
73
- }
74
- // we update all definitions to be linked with teh corresponding function call
75
- environments = (0, environments_1.overwriteEnvironments)(environments, environment);
76
- }
77
- }
78
- return environments;
79
- }
80
- function processExpressionList(exprList, data) {
81
- const expressions = exprList.children;
82
- index_1.dataflowLogger.trace(`processing expression list with ${expressions.length} expressions`);
83
- if (expressions.length === 0) {
84
- return (0, info_1.initializeCleanInfo)(data);
85
- }
86
- let environments = data.environments;
87
- // used to detect if a "write" happens within the same expression list
88
- const listEnvironments = new Set();
89
- const remainingRead = new Map();
90
- const nextGraph = new graph_1.DataflowGraph();
91
- const out = [];
92
- let expressionCounter = 0;
93
- let foundNextOrBreak = false;
94
- for (const expression of expressions) {
95
- index_1.dataflowLogger.trace(`processing expression ${++expressionCounter} of ${expressions.length}`);
96
- // use the current environments for processing
97
- data = { ...data, environments };
98
- const processed = (0, processor_1.processDataflowFor)(expression, data);
99
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- seems to be a bug in eslint
100
- if (!foundNextOrBreak) {
101
- (0, r_bridge_1.visitAst)(expression, n => {
102
- if (n.type === "RNext" /* RType.Next */ || n.type === "RBreak" /* RType.Break */) {
103
- foundNextOrBreak = true;
104
- }
105
- return n.type === "RForLoop" /* RType.ForLoop */ || n.type === "RWhileLoop" /* RType.WhileLoop */ || n.type === "RRepeatLoop" /* RType.RepeatLoop */ || n.type === "RFunctionDefinition" /* RType.FunctionDefinition */;
106
- });
107
- }
108
- // if the expression contained next or break anywhere before the next loop, the overwrite should be an append because we do not know if the rest is executed
109
- // update the environments for the next iteration with the previous writes
110
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- seems to be a bug in eslint
111
- if (foundNextOrBreak) {
112
- processed.out = (0, environments_1.makeAllMaybe)(processed.out, nextGraph, processed.environments);
113
- processed.in = (0, environments_1.makeAllMaybe)(processed.in, nextGraph, processed.environments);
114
- processed.unknownReferences = (0, environments_1.makeAllMaybe)(processed.unknownReferences, nextGraph, processed.environments);
115
- }
116
- nextGraph.mergeWith(processed.graph);
117
- out.push(...processed.out);
118
- index_1.dataflowLogger.trace(`expression ${expressionCounter} of ${expressions.length} has ${processed.unknownReferences.length} unknown nodes`);
119
- processNextExpression(processed, data, environments, listEnvironments, remainingRead, nextGraph);
120
- const functionCallIds = [...processed.graph.vertices(true)]
121
- .filter(([_, info]) => info.tag === 'function-call');
122
- const calledEnvs = (0, linker_1.linkFunctionCalls)(nextGraph, data.completeAst.idMap, functionCallIds, processed.graph);
123
- environments = (0, environments_1.overwriteEnvironments)(environments, processed.environments);
124
- // if the called function has global redefinitions, we have to keep them within our environment
125
- environments = updateSideEffectsForCalledFunctions(calledEnvs, environments, nextGraph);
126
- for (const { nodeId } of processed.out) {
127
- listEnvironments.add(nodeId);
128
- }
129
- }
130
- // now, we have to link same reads
131
- (0, linker_1.linkReadVariablesInSameScopeWithNames)(nextGraph, new defaultmap_1.DefaultMap(() => [], remainingRead));
132
- index_1.dataflowLogger.trace(`expression list exits with ${remainingRead.size} remaining read names`);
133
- return {
134
- /* no active nodes remain, they are consumed within the remaining read collection */
135
- unknownReferences: [],
136
- in: [...remainingRead.values()].flat(),
137
- out,
138
- environments,
139
- scope: data.activeScope,
140
- graph: nextGraph
141
- };
142
- }
143
- exports.processExpressionList = processExpressionList;
144
- //# sourceMappingURL=expression-list.js.map
@@ -1,8 +0,0 @@
1
- import type { DataflowInformation } from '../../info';
2
- import type { DataflowProcessorInformation } from '../../../processor';
3
- import type { ParentInformation, RArgument, RNode } from '../../../../r-bridge';
4
- import { DataflowGraph } from '../../../graph';
5
- import type { IdentifierReference } from '../../../environments';
6
- export declare const UnnamedArgumentPrefix = "unnamed-argument-";
7
- export declare function linkReadsForArgument<OtherInfo>(root: RNode<OtherInfo & ParentInformation>, ingoingRefs: IdentifierReference[], graph: DataflowGraph): void;
8
- export declare function processFunctionArgument<OtherInfo>(argument: RArgument<OtherInfo & ParentInformation>, data: DataflowProcessorInformation<OtherInfo & ParentInformation>): DataflowInformation;
@@ -1,2 +0,0 @@
1
- import type { NodeId, ParentInformation, RFunctionDefinition } from '../../../../r-bridge';
2
- export declare function retrieveExitPointsOfFunctionDefinition<OtherInfo>(functionDefinition: RFunctionDefinition<OtherInfo & ParentInformation>): NodeId[];
@@ -1,121 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.retrieveExitPointsOfFunctionDefinition = void 0;
4
- const assert_1 = require("../../../../util/assert");
5
- function retrieveExitPointsOfFunctionDefinition(functionDefinition) {
6
- const exitPoints = visitExitPoints(functionDefinition.body);
7
- return exitPoints.knownIds.concat(exitPoints.potentialIds);
8
- }
9
- exports.retrieveExitPointsOfFunctionDefinition = retrieveExitPointsOfFunctionDefinition;
10
- function visitExitPoints(node) {
11
- const type = node.type;
12
- switch (type) {
13
- case "RExpressionList" /* RType.ExpressionList */:
14
- return visitExpressionList(node);
15
- case "RFunctionCall" /* RType.FunctionCall */:
16
- if (node.flavor === 'named' && node.functionName.content === 'return') {
17
- return {
18
- knownIds: [node.info.id],
19
- potentialIds: []
20
- };
21
- }
22
- break;
23
- case "RFunctionDefinition" /* RType.FunctionDefinition */:
24
- // do not further investigate
25
- break;
26
- case "RForLoop" /* RType.ForLoop */:
27
- case "RWhileLoop" /* RType.WhileLoop */:
28
- case "RRepeatLoop" /* RType.RepeatLoop */:
29
- // loops return invisible null, as we do not trace values, but they may contain return statements
30
- return visitLoops(node);
31
- case "RIfThenElse" /* RType.IfThenElse */:
32
- return visitIf(node);
33
- case "RPipe" /* RType.Pipe */:
34
- case "RBinaryOp" /* RType.BinaryOp */:
35
- // assignments return invisible rhs
36
- return knownIdsOfChildren(node.info.id, node.lhs, node.rhs);
37
- case "RUnaryOp" /* RType.UnaryOp */:
38
- return knownIdsOfChildren(node.info.id, node.operand);
39
- case "RParameter" /* RType.Parameter */:
40
- return node.defaultValue ? knownIdsOfChildren(node.info.id, node.defaultValue) : { knownIds: [], potentialIds: [] };
41
- case "RArgument" /* RType.Argument */:
42
- return node.value ? knownIdsOfChildren(node.info.id, node.value) : { knownIds: [], potentialIds: [] };
43
- case "RSymbol" /* RType.Symbol */:
44
- case "RLogical" /* RType.Logical */:
45
- case "RNumber" /* RType.Number */:
46
- case "RString" /* RType.String */:
47
- case "RAccess" /* RType.Access */:
48
- // just use this node
49
- break;
50
- // contain noting to return/return `invisible(null)`
51
- case "RComment" /* RType.Comment */:
52
- case "RLineDirective" /* RType.LineDirective */:
53
- case "RBreak" /* RType.Break */:
54
- case "RNext" /* RType.Next */:
55
- return { knownIds: [], potentialIds: [] };
56
- default:
57
- (0, assert_1.assertUnreachable)(type);
58
- }
59
- return {
60
- knownIds: [],
61
- potentialIds: [node.info.id]
62
- };
63
- }
64
- // we use keepSelfAsPotential in order to track nodes like 2 + 3, which keep themselves as potential exit points if there are no knownIds
65
- function knownIdsOfChildren(keepSelfAsPotential, ...children) {
66
- const knownIds = children.flatMap(child => visitExitPoints(child).knownIds);
67
- return {
68
- knownIds,
69
- potentialIds: knownIds.length === 0 ? [keepSelfAsPotential] : []
70
- };
71
- }
72
- function visitLoops(loop) {
73
- const result = visitExitPoints(loop.body);
74
- // conditions may contain return statements which we have to keep
75
- let otherKnownIds = [];
76
- if (loop.type === "RForLoop" /* RType.ForLoop */) {
77
- otherKnownIds = visitExitPoints(loop.variable).knownIds;
78
- otherKnownIds.push(...visitExitPoints(loop.vector).knownIds);
79
- }
80
- else if (loop.type === "RWhileLoop" /* RType.WhileLoop */) {
81
- otherKnownIds = visitExitPoints(loop.condition).knownIds;
82
- }
83
- return {
84
- knownIds: [...result.knownIds, ...otherKnownIds],
85
- potentialIds: []
86
- };
87
- }
88
- function visitExpressionList(node) {
89
- const known = [];
90
- let lastPotentialIds = [];
91
- // we only keep the potential ids of the last expression, which is no comment
92
- for (const child of node.children) {
93
- const { knownIds, potentialIds } = visitExitPoints(child);
94
- known.push(...knownIds);
95
- if (child.type !== "RComment" /* RType.Comment */) {
96
- lastPotentialIds = potentialIds;
97
- }
98
- }
99
- return {
100
- knownIds: known,
101
- potentialIds: lastPotentialIds
102
- };
103
- }
104
- function visitIf(node) {
105
- // conditions can contain return statements
106
- const known = visitExitPoints(node.condition).knownIds;
107
- const potential = [];
108
- const thenCase = visitExitPoints(node.then);
109
- known.push(...thenCase.knownIds);
110
- potential.push(...thenCase.potentialIds);
111
- if (node.otherwise !== undefined) {
112
- const otherwiseCase = visitExitPoints(node.otherwise);
113
- known.push(...otherwiseCase.knownIds);
114
- potential.push(...otherwiseCase.potentialIds);
115
- }
116
- return {
117
- knownIds: known,
118
- potentialIds: potential
119
- };
120
- }
121
- //# sourceMappingURL=exit-points.js.map
@@ -1,5 +0,0 @@
1
- import type { DataflowInformation } from '../../info';
2
- import type { DataflowProcessorInformation } from '../../../processor';
3
- import type { ParentInformation, RFunctionCall } from '../../../../r-bridge';
4
- export declare const UnnamedFunctionCallPrefix = "unnamed-function-call-";
5
- export declare function processFunctionCall<OtherInfo>(functionCall: RFunctionCall<OtherInfo & ParentInformation>, data: DataflowProcessorInformation<OtherInfo & ParentInformation>): DataflowInformation;