@eagleoutice/flowr 1.5.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +52 -47
  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
@@ -1,43 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cloneEnvironments = exports.diffEnvironments = exports.diffEnvironment = exports.initializeCleanEnvironments = exports.DefaultEnvironmentMemory = exports.Environment = exports.makeAllMaybe = exports.diffIdentifierReferences = exports.BuiltIn = void 0;
3
+ exports.initializeCleanEnvironments = exports.GLOBAL_ENV_NAME = exports.BuiltInEnvironment = exports.Environment = exports.makeAllMaybe = exports.makeReferenceMaybe = void 0;
4
+ const built_in_1 = require("./built-in");
4
5
  const resolve_by_name_1 = require("./resolve-by-name");
5
- const scopes_1 = require("./scopes");
6
- const diff_1 = require("../../util/diff");
7
- const json_1 = require("../../util/json");
8
- exports.BuiltIn = 'built-in';
9
- function diffIdentifierReferences(a, b, info) {
10
- if (a.name !== b.name) {
11
- info.report.addComment(`${info.position}Different identifier names: ${a.name} vs. ${b.name}`);
12
- }
13
- if (a.scope !== b.scope) {
14
- info.report.addComment(`${info.position}Different scopes: ${a.scope} vs. ${b.scope}`);
15
- }
16
- if (a.nodeId !== b.nodeId) {
17
- info.report.addComment(`${info.position}Different nodeIds: ${a.nodeId} vs. ${b.nodeId}`);
6
+ function makeReferenceMaybe(ref, graph, environments, includeDefs, defaultCd = undefined) {
7
+ const node = graph.get(ref.nodeId, true);
8
+ if (includeDefs) {
9
+ const definitions = ref.name ? (0, resolve_by_name_1.resolveByName)(ref.name, environments) : undefined;
10
+ for (const definition of definitions ?? []) {
11
+ if (definition.kind !== 'built-in-function' && definition.kind !== 'built-in-value') {
12
+ if (definition.controlDependencies && defaultCd && !definition.controlDependencies.includes(defaultCd)) {
13
+ definition.controlDependencies.push(defaultCd);
14
+ }
15
+ else {
16
+ definition.controlDependencies = defaultCd ? [defaultCd] : [];
17
+ }
18
+ }
19
+ }
18
20
  }
19
- if (a.used !== b.used) {
20
- info.report.addComment(`${info.position}Different used: ${a.used} vs. ${b.used}`);
21
+ if (node) {
22
+ if (node[0].controlDependencies && defaultCd && !node[0].controlDependencies.includes(defaultCd)) {
23
+ node[0].controlDependencies.push(defaultCd);
24
+ }
25
+ else {
26
+ node[0].controlDependencies = defaultCd ? [defaultCd] : [];
27
+ }
21
28
  }
29
+ return { ...ref, controlDependencies: [...ref.controlDependencies ?? [], ...(defaultCd ? [defaultCd] : [])] };
22
30
  }
23
- exports.diffIdentifierReferences = diffIdentifierReferences;
24
- function makeAllMaybe(references, graph, environments) {
31
+ exports.makeReferenceMaybe = makeReferenceMaybe;
32
+ function makeAllMaybe(references, graph, environments, includeDefs, defaultCd = undefined) {
25
33
  if (references === undefined) {
26
34
  return [];
27
35
  }
28
- return references.map(ref => {
29
- const node = graph.get(ref.nodeId, true);
30
- const definitions = (0, resolve_by_name_1.resolveByName)(ref.name, scopes_1.LocalScope, environments);
31
- for (const definition of definitions ?? []) {
32
- if (definition.kind !== 'built-in-function') {
33
- definition.used = 'maybe';
34
- }
35
- }
36
- if (node) {
37
- node[0].when = 'maybe';
38
- }
39
- return { ...ref, used: 'maybe' };
40
- });
36
+ return references.map(ref => makeReferenceMaybe(ref, graph, environments, includeDefs, defaultCd));
41
37
  }
42
38
  exports.makeAllMaybe = makeAllMaybe;
43
39
  let environmentIdCounter = 0;
@@ -53,117 +49,15 @@ class Environment {
53
49
  }
54
50
  }
55
51
  exports.Environment = Environment;
56
- exports.DefaultEnvironmentMemory = new Map([
57
- ['return', [{
58
- kind: 'built-in-function',
59
- scope: scopes_1.GlobalScope,
60
- used: 'always',
61
- definedAt: exports.BuiltIn,
62
- name: 'return',
63
- nodeId: exports.BuiltIn
64
- }]],
65
- ['cat', [{
66
- kind: 'built-in-function',
67
- scope: scopes_1.GlobalScope,
68
- used: 'always',
69
- definedAt: exports.BuiltIn,
70
- name: 'cat',
71
- nodeId: exports.BuiltIn
72
- }]],
73
- ['print', [{
74
- kind: 'built-in-function',
75
- scope: scopes_1.GlobalScope,
76
- used: 'always',
77
- definedAt: exports.BuiltIn,
78
- name: 'print',
79
- nodeId: exports.BuiltIn
80
- }]],
81
- ['source', [{
82
- kind: 'built-in-function',
83
- scope: scopes_1.GlobalScope,
84
- used: 'always',
85
- definedAt: exports.BuiltIn,
86
- name: 'source',
87
- nodeId: exports.BuiltIn
88
- }]]
89
- ]);
52
+ /* the built-in environment is the root of all environments */
53
+ exports.BuiltInEnvironment = new Environment('built-in', undefined);
54
+ exports.BuiltInEnvironment.memory = built_in_1.BuiltInMemory;
55
+ exports.GLOBAL_ENV_NAME = 'global';
90
56
  function initializeCleanEnvironments() {
91
- const global = new Environment(scopes_1.GlobalScope);
92
- // use a copy
93
- global.memory = new Map(exports.DefaultEnvironmentMemory);
94
57
  return {
95
- current: global,
58
+ current: new Environment(exports.GLOBAL_ENV_NAME, exports.BuiltInEnvironment),
96
59
  level: 0
97
60
  };
98
61
  }
99
62
  exports.initializeCleanEnvironments = initializeCleanEnvironments;
100
- function diffEnvironment(a, b, info) {
101
- if (a === undefined || b === undefined) {
102
- if (a !== b) {
103
- info.report.addComment(`${info.position}Different environments. ${info.leftname}: ${JSON.stringify(a, json_1.jsonReplacer)} vs. ${info.rightname}: ${JSON.stringify(b, json_1.jsonReplacer)}`);
104
- }
105
- return;
106
- }
107
- if (a.name !== b.name) {
108
- info.report.addComment(`${info.position}Different environment names. ${info.leftname}: ${JSON.stringify(a, json_1.jsonReplacer)} vs. ${info.rightname}: ${JSON.stringify(b, json_1.jsonReplacer)}`);
109
- }
110
- if (a.memory.size !== b.memory.size) {
111
- info.report.addComment(`${info.position}Different environment sizes. ${info.leftname}: ${JSON.stringify(a, json_1.jsonReplacer)} vs. ${info.rightname}: ${JSON.stringify(b, json_1.jsonReplacer)}`);
112
- (0, diff_1.setDifference)(new Set([...a.memory.keys()]), new Set([...b.memory.keys()]), { ...info, position: `${info.position}Key comparison. ` });
113
- }
114
- for (const [key, value] of a.memory) {
115
- const value2 = b.memory.get(key);
116
- if (value2 === undefined || value.length !== value2.length) {
117
- info.report.addComment(`${info.position}Different definitions for ${key}. ${info.leftname}: ${JSON.stringify(value, json_1.jsonReplacer)} vs. ${info.rightname}: ${JSON.stringify(value2, json_1.jsonReplacer)}`);
118
- continue;
119
- }
120
- for (let i = 0; i < value.length; ++i) {
121
- const aVal = value[i];
122
- const bVal = value2[i];
123
- if (aVal.name !== bVal.name) {
124
- info.report.addComment(`${info.position}Different names for ${key}. ${info.leftname}: ${aVal.name} vs. ${info.rightname}: ${bVal.name}`);
125
- }
126
- if (aVal.nodeId !== bVal.nodeId) {
127
- info.report.addComment(`${info.position}Different ids for ${key}. ${info.leftname}: ${aVal.nodeId} vs. ${info.rightname}: ${bVal.nodeId}`);
128
- }
129
- if (aVal.scope !== bVal.scope) {
130
- info.report.addComment(`${info.position}Different scopes for ${key}. ${info.leftname}: ${aVal.scope} vs. ${info.rightname}: ${bVal.scope}`);
131
- }
132
- if (aVal.used !== bVal.used) {
133
- info.report.addComment(`${info.position}Different used for ${key}. ${info.leftname}: ${aVal.used} vs. ${info.rightname}: ${bVal.used}`);
134
- }
135
- if (aVal.definedAt !== bVal.definedAt) {
136
- info.report.addComment(`${info.position}Different definition ids (definedAt) for ${key}. ${info.leftname}: ${aVal.definedAt} vs. ${info.rightname}: ${bVal.definedAt}`);
137
- }
138
- if (aVal.kind !== bVal.kind) {
139
- info.report.addComment(`${info.position}Different kinds for ${key}. ${info.leftname}: ${aVal.kind} vs. ${info.rightname}: ${bVal.kind}`);
140
- }
141
- }
142
- }
143
- diffEnvironment(a.parent, b.parent, { ...info, position: `${info.position}Parents of ${a.id} & ${b.id}. ` });
144
- }
145
- exports.diffEnvironment = diffEnvironment;
146
- function diffEnvironments(a, b, info) {
147
- if (a === undefined || b === undefined) {
148
- info.report.addComment(`${info.position}Different environments: ${JSON.stringify(a, json_1.jsonReplacer)} vs. ${JSON.stringify(b, json_1.jsonReplacer)}`);
149
- return;
150
- }
151
- diffEnvironment(a.current, b.current, info);
152
- }
153
- exports.diffEnvironments = diffEnvironments;
154
- function cloneEnvironment(environment, recurseParents) {
155
- if (environment === undefined) {
156
- return undefined;
157
- }
158
- const clone = new Environment(environment.name, recurseParents ? cloneEnvironment(environment.parent, recurseParents) : environment.parent);
159
- clone.memory = new Map(JSON.parse(JSON.stringify([...environment.memory])));
160
- return clone;
161
- }
162
- function cloneEnvironments(environment, recurseParents = true) {
163
- return {
164
- current: cloneEnvironment(environment.current, recurseParents),
165
- level: environment.level
166
- };
167
- }
168
- exports.cloneEnvironments = cloneEnvironments;
169
63
  //# sourceMappingURL=environment.js.map
@@ -0,0 +1,31 @@
1
+ import type { BuiltInIdentifierConstant, BuiltInIdentifierDefinition } from './built-in';
2
+ import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
3
+ export type Identifier = string & {
4
+ __brand?: 'identifier';
5
+ };
6
+ interface InGraphIdentifierDefinition extends IdentifierReference {
7
+ kind: 'function' | 'variable' | 'parameter' | 'argument';
8
+ /** The assignment (or whatever, like `assign` function call) node which ultimately defined this identifier */
9
+ definedAt: NodeId;
10
+ }
11
+ /**
12
+ * Stores the definition of an identifier within an {@link IEnvironment}
13
+ */
14
+ export type IdentifierDefinition = InGraphIdentifierDefinition | BuiltInIdentifierDefinition | BuiltInIdentifierConstant;
15
+ /**
16
+ * Something like `a` in `b <- a`.
17
+ * Without any surrounding information, `a` will produce the identifier reference `a`.
18
+ * Similarly, `b` will create a reference.
19
+ */
20
+ export interface IdentifierReference {
21
+ /** Node which represents the reference in the AST */
22
+ readonly nodeId: NodeId;
23
+ /** Name the reference is identified by (e.g., the name of the variable), undefined if the reference is "artificial" (e.g., anonymous) */
24
+ readonly name: Identifier | undefined;
25
+ /**
26
+ * If the reference is only effective if, e.g. an if-then-else condition is true, this references the root of the `if`.
27
+ * As a hackey intermediate solution (until we have pointer-analysis), an empty array may indicate a `maybe` which is due to pointer access (e.g., in `a[x] <- 3`).
28
+ */
29
+ controlDependencies: NodeId[] | undefined;
30
+ }
31
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=identifier.js.map
@@ -1,6 +1,6 @@
1
1
  import type { REnvironmentInformation, IEnvironment } from './environment';
2
2
  export declare function overwriteIEnvironmentWith(base: IEnvironment | undefined, next: IEnvironment | undefined, includeParent?: boolean): IEnvironment;
3
- export declare function overwriteEnvironments(base: REnvironmentInformation, next: REnvironmentInformation | undefined): REnvironmentInformation;
4
- export declare function overwriteEnvironments(base: REnvironmentInformation | undefined, next: REnvironmentInformation): REnvironmentInformation;
5
- export declare function overwriteEnvironments(base: undefined, next: undefined): undefined;
6
- export declare function overwriteEnvironments(base: REnvironmentInformation | undefined, next: REnvironmentInformation | undefined): REnvironmentInformation | undefined;
3
+ export declare function overwriteEnvironment(base: REnvironmentInformation, next: REnvironmentInformation | undefined): REnvironmentInformation;
4
+ export declare function overwriteEnvironment(base: REnvironmentInformation | undefined, next: REnvironmentInformation): REnvironmentInformation;
5
+ export declare function overwriteEnvironment(base: undefined, next: undefined): undefined;
6
+ export declare function overwriteEnvironment(base: REnvironmentInformation | undefined, next: REnvironmentInformation | undefined): REnvironmentInformation | undefined;
@@ -1,29 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.overwriteEnvironments = exports.overwriteIEnvironmentWith = void 0;
3
+ exports.overwriteEnvironment = exports.overwriteIEnvironmentWith = void 0;
4
4
  const assert_1 = require("../../util/assert");
5
5
  const environment_1 = require("./environment");
6
- function anyIsMaybeGuardingSame(values) {
6
+ function anyIsMaybeOrEmpty(values) {
7
7
  if (values.length === 0) {
8
8
  return true;
9
9
  }
10
- const attr = values[0].used;
11
- if (attr === 'maybe') {
12
- return true;
13
- }
14
- let same = true;
15
- for (let i = 1; i < values.length; i++) {
16
- const used = values[i].used;
17
- if (used === 'maybe') {
10
+ for (const val of values) {
11
+ if (val.controlDependencies !== undefined) {
18
12
  return true;
19
13
  }
20
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- in case we want to add more attributes in the future
21
- if (used !== attr) {
22
- same = false;
23
- }
24
- }
25
- if (!same) {
26
- throw new Error('all values must have either a maybe or are all the same');
27
14
  }
28
15
  return false;
29
16
  }
@@ -32,7 +19,7 @@ function overwriteIEnvironmentWith(base, next, includeParent = true) {
32
19
  (0, assert_1.guard)(base.name === next.name, 'cannot overwrite environments with different names');
33
20
  const map = new Map(base.memory);
34
21
  for (const [key, values] of next.memory) {
35
- const hasMaybe = anyIsMaybeGuardingSame(values);
22
+ const hasMaybe = anyIsMaybeOrEmpty(values);
36
23
  if (hasMaybe) {
37
24
  const old = map.get(key);
38
25
  // we need to make a copy to avoid side effects for old reference in other environments
@@ -51,7 +38,7 @@ function overwriteIEnvironmentWith(base, next, includeParent = true) {
51
38
  }
52
39
  let parent;
53
40
  if (includeParent) {
54
- parent = base.parent === undefined ? undefined : overwriteIEnvironmentWith(base.parent, next.parent);
41
+ parent = base.parent.id === environment_1.BuiltInEnvironment.id ? environment_1.BuiltInEnvironment : overwriteIEnvironmentWith(base.parent, next.parent);
55
42
  }
56
43
  else {
57
44
  parent = base.parent;
@@ -63,9 +50,9 @@ function overwriteIEnvironmentWith(base, next, includeParent = true) {
63
50
  exports.overwriteIEnvironmentWith = overwriteIEnvironmentWith;
64
51
  /**
65
52
  * Assumes, that all definitions within next replace those within base (given the same name).
66
- * <b>But</b> if all definitions within next are maybe, then they are appended to the base definitions (updating them to be `maybe` from now on as well), similar to {@link appendEnvironments}.
53
+ * <b>But</b> if all definitions within next are maybe, then they are appended to the base definitions (updating them to be `maybe` from now on as well), similar to {@link appendEnvironment}.
67
54
  */
68
- function overwriteEnvironments(base, next) {
55
+ function overwriteEnvironment(base, next) {
69
56
  if (base === undefined) {
70
57
  return next;
71
58
  }
@@ -78,5 +65,5 @@ function overwriteEnvironments(base, next) {
78
65
  level: base.level
79
66
  };
80
67
  }
81
- exports.overwriteEnvironments = overwriteEnvironments;
68
+ exports.overwriteEnvironment = overwriteEnvironment;
82
69
  //# sourceMappingURL=overwrite.js.map
@@ -1,12 +1,13 @@
1
- import type { Identifier, IdentifierDefinition, REnvironmentInformation } from './environment';
2
- import type { DataflowScopeName } from './scopes';
1
+ import type { REnvironmentInformation } from './environment';
2
+ import type { Ternary } from '../../util/logic';
3
+ import type { Identifier, IdentifierDefinition } from './identifier';
3
4
  /**
4
5
  * Resolves a given identifier name to a list of its possible definition location using R scoping and resolving rules.
5
6
  *
6
- * @param name - The name of the identifier to resolve
7
- * @param withinScope - The scope in which the identifier is used
8
- * @param environments - The current environments used for name resolution
7
+ * @param name - The name of the identifier to resolve
8
+ * @param environment - The current environment used for name resolution
9
9
  *
10
10
  * @returns A list of possible definitions of the identifier (one if the definition location is exactly and always known), or `undefined` if the identifier is undefined in the current scope/with the current environment information.
11
11
  */
12
- export declare function resolveByName(name: Identifier, withinScope: DataflowScopeName, environments: REnvironmentInformation): IdentifierDefinition[] | undefined;
12
+ export declare function resolveByName(name: Identifier, environment: REnvironmentInformation): IdentifierDefinition[] | undefined;
13
+ export declare function resolvesToBuiltInConstant(name: Identifier | undefined, environment: REnvironmentInformation, wantedValue: unknown): Ternary;
@@ -1,35 +1,51 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveByName = void 0;
4
- const index_1 = require("../index");
5
- const scopes_1 = require("./scopes");
3
+ exports.resolvesToBuiltInConstant = exports.resolveByName = void 0;
4
+ const environment_1 = require("./environment");
6
5
  /**
7
6
  * Resolves a given identifier name to a list of its possible definition location using R scoping and resolving rules.
8
7
  *
9
- * @param name - The name of the identifier to resolve
10
- * @param withinScope - The scope in which the identifier is used
11
- * @param environments - The current environments used for name resolution
8
+ * @param name - The name of the identifier to resolve
9
+ * @param environment - The current environment used for name resolution
12
10
  *
13
11
  * @returns A list of possible definitions of the identifier (one if the definition location is exactly and always known), or `undefined` if the identifier is undefined in the current scope/with the current environment information.
14
12
  */
15
- function resolveByName(name, withinScope, environments) {
16
- if (withinScope !== scopes_1.LocalScope) {
17
- throw new Error('Non-local scoping is not yet supported');
18
- }
19
- return resolve(name, withinScope, environments);
20
- }
21
- exports.resolveByName = resolveByName;
22
- function resolve(name, withinScope, environments) {
23
- index_1.dataflowLogger.trace(`Resolving local identifier ${name} (scope name: ${withinScope}, local stack size: ${environments.level})`);
24
- let current = environments.current;
13
+ function resolveByName(name, environment) {
14
+ let current = environment.current;
25
15
  do {
26
16
  const definition = current.memory.get(name);
27
17
  if (definition !== undefined) {
28
18
  return definition;
29
19
  }
30
20
  current = current.parent;
31
- } while (current !== undefined);
32
- index_1.dataflowLogger.trace(`Unable to find identifier ${name} in stack`);
33
- return undefined;
21
+ } while (current.id !== environment_1.BuiltInEnvironment.id);
22
+ return current.memory.get(name);
23
+ }
24
+ exports.resolveByName = resolveByName;
25
+ function resolvesToBuiltInConstant(name, environment, wantedValue) {
26
+ if (name === undefined) {
27
+ return 'never';
28
+ }
29
+ const definition = resolveByName(name, environment);
30
+ if (definition === undefined) {
31
+ return 'never';
32
+ }
33
+ let all = true;
34
+ let some = false;
35
+ for (const def of definition) {
36
+ if (def.kind === 'built-in-value' && def.value === wantedValue) {
37
+ some = true;
38
+ }
39
+ else {
40
+ all = false;
41
+ }
42
+ }
43
+ if (all) {
44
+ return 'always';
45
+ }
46
+ else {
47
+ return some ? 'maybe' : 'never';
48
+ }
34
49
  }
50
+ exports.resolvesToBuiltInConstant = resolvesToBuiltInConstant;
35
51
  //# sourceMappingURL=resolve-by-name.js.map
@@ -3,13 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.popLocalEnvironment = exports.pushLocalEnvironment = void 0;
4
4
  const environment_1 = require("./environment");
5
5
  const assert_1 = require("../../util/assert");
6
- const scopes_1 = require("./scopes");
7
6
  /** Add a new local environment scope to the stack, returns the modified variant - sharing the original environments in the stack (no deep-clone) */
8
7
  function pushLocalEnvironment(base) {
9
- const local = new environment_1.Environment(scopes_1.LocalScope);
10
- local.parent = base.current;
11
8
  return {
12
- current: local,
9
+ current: new environment_1.Environment('local', base.current),
13
10
  level: base.level + 1
14
11
  };
15
12
  }
@@ -1,6 +1,6 @@
1
- import type { NormalizedAst, ParentInformation, RBinaryOp, RParseRequest } from '../r-bridge';
2
- import type { DataflowInformation } from './internal/info';
3
- import type { DataflowProcessorInformation } from './processor';
4
- import type { DataflowScopeName } from './environments';
5
- export declare function produceDataFlowGraph<OtherInfo>(request: RParseRequest, ast: NormalizedAst<OtherInfo & ParentInformation>, initialScope?: DataflowScopeName): DataflowInformation;
6
- export declare function processBinaryOp<OtherInfo>(node: RBinaryOp<OtherInfo & ParentInformation>, data: DataflowProcessorInformation<OtherInfo & ParentInformation>): DataflowInformation;
1
+ import type { DataflowInformation } from './info';
2
+ import type { DataflowProcessors } from './processor';
3
+ import type { NormalizedAst, ParentInformation } from '../r-bridge/lang-4.x/ast/model/processing/decorate';
4
+ import type { RParseRequest } from '../r-bridge/retriever';
5
+ export declare const processors: DataflowProcessors<ParentInformation>;
6
+ export declare function produceDataFlowGraph<OtherInfo>(request: RParseRequest, ast: NormalizedAst<OtherInfo & ParentInformation>): DataflowInformation;
@@ -1,68 +1,58 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.processBinaryOp = exports.produceDataFlowGraph = void 0;
4
- const r_bridge_1 = require("../r-bridge");
3
+ exports.produceDataFlowGraph = exports.processors = void 0;
5
4
  const processor_1 = require("./processor");
6
- const uninteresting_leaf_1 = require("./internal/process/uninteresting-leaf");
7
- const symbol_1 = require("./internal/process/symbol");
8
- const non_assignment_binary_op_1 = require("./internal/process/operators/non-assignment-binary-op");
9
- const unary_op_1 = require("./internal/process/operators/unary-op");
10
- const expression_list_1 = require("./internal/process/expression-list");
11
- const repeat_loop_1 = require("./internal/process/loops/repeat-loop");
12
- const for_loop_1 = require("./internal/process/loops/for-loop");
13
- const while_loop_1 = require("./internal/process/loops/while-loop");
14
- const if_then_else_1 = require("./internal/process/if-then-else");
15
- const function_call_1 = require("./internal/process/functions/function-call");
16
- const function_definition_1 = require("./internal/process/functions/function-definition");
17
- const parameter_1 = require("./internal/process/functions/parameter");
18
- const environments_1 = require("./environments");
19
- const argument_1 = require("./internal/process/functions/argument");
20
- const assignment_1 = require("./internal/process/operators/assignment");
21
- const access_1 = require("./internal/process/access");
22
- const pipe_1 = require("./internal/process/operators/pipe");
23
- const scopes_1 = require("./environments/scopes");
24
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- allows type adaption without re-creation
25
- const processors = {
26
- ["RNumber" /* RType.Number */]: uninteresting_leaf_1.processUninterestingLeaf,
27
- ["RString" /* RType.String */]: uninteresting_leaf_1.processUninterestingLeaf,
28
- ["RLogical" /* RType.Logical */]: uninteresting_leaf_1.processUninterestingLeaf,
29
- ["RAccess" /* RType.Access */]: access_1.processAccess,
30
- ["RSymbol" /* RType.Symbol */]: symbol_1.processSymbol,
31
- ["RBinaryOp" /* RType.BinaryOp */]: processBinaryOp,
32
- ["RPipe" /* RType.Pipe */]: pipe_1.processPipeOperation,
33
- ["RUnaryOp" /* RType.UnaryOp */]: unary_op_1.processUnaryOp,
34
- ["RForLoop" /* RType.ForLoop */]: for_loop_1.processForLoop,
35
- ["RWhileLoop" /* RType.WhileLoop */]: while_loop_1.processWhileLoop,
36
- ["RRepeatLoop" /* RType.RepeatLoop */]: repeat_loop_1.processRepeatLoop,
37
- ["RIfThenElse" /* RType.IfThenElse */]: if_then_else_1.processIfThenElse,
38
- ["RBreak" /* RType.Break */]: uninteresting_leaf_1.processUninterestingLeaf,
39
- ["RNext" /* RType.Next */]: uninteresting_leaf_1.processUninterestingLeaf,
40
- ["RComment" /* RType.Comment */]: uninteresting_leaf_1.processUninterestingLeaf,
41
- ["RLineDirective" /* RType.LineDirective */]: uninteresting_leaf_1.processUninterestingLeaf,
42
- ["RFunctionCall" /* RType.FunctionCall */]: function_call_1.processFunctionCall,
43
- ["RFunctionDefinition" /* RType.FunctionDefinition */]: function_definition_1.processFunctionDefinition,
44
- ["RParameter" /* RType.Parameter */]: parameter_1.processFunctionParameter,
45
- ["RArgument" /* RType.Argument */]: argument_1.processFunctionArgument,
46
- ["RExpressionList" /* RType.ExpressionList */]: expression_list_1.processExpressionList,
5
+ const process_uninteresting_leaf_1 = require("./internal/process/process-uninteresting-leaf");
6
+ const process_symbol_1 = require("./internal/process/process-symbol");
7
+ const default_call_handling_1 = require("./internal/process/functions/call/default-call-handling");
8
+ const process_parameter_1 = require("./internal/process/functions/process-parameter");
9
+ const process_argument_1 = require("./internal/process/functions/process-argument");
10
+ const process_named_call_1 = require("./internal/process/process-named-call");
11
+ const process_value_1 = require("./internal/process/process-value");
12
+ const named_call_handling_1 = require("./internal/process/functions/call/named-call-handling");
13
+ const make_argument_1 = require("./internal/process/functions/call/argument/make-argument");
14
+ const range_1 = require("../util/range");
15
+ const retriever_1 = require("../r-bridge/retriever");
16
+ const environment_1 = require("./environments/environment");
17
+ exports.processors = {
18
+ ["RNumber" /* RType.Number */]: process_value_1.processValue,
19
+ ["RString" /* RType.String */]: process_value_1.processValue,
20
+ ["RLogical" /* RType.Logical */]: process_value_1.processValue,
21
+ ["RComment" /* RType.Comment */]: process_uninteresting_leaf_1.processUninterestingLeaf,
22
+ ["RLineDirective" /* RType.LineDirective */]: process_uninteresting_leaf_1.processUninterestingLeaf,
23
+ ["RSymbol" /* RType.Symbol */]: process_symbol_1.processSymbol,
24
+ ["RAccess" /* RType.Access */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.operator, [n.accessed, ...n.access]),
25
+ ["RBinaryOp" /* RType.BinaryOp */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.operator, [n.lhs, n.rhs]),
26
+ ["RPipe" /* RType.Pipe */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, [n.lhs, n.rhs]),
27
+ ["RUnaryOp" /* RType.UnaryOp */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.operator, [n.operand]),
28
+ ["RForLoop" /* RType.ForLoop */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, [n.variable, n.vector, n.body]),
29
+ ["RWhileLoop" /* RType.WhileLoop */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, [n.condition, n.body]),
30
+ ["RRepeatLoop" /* RType.RepeatLoop */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, [n.body]),
31
+ ["RIfThenElse" /* RType.IfThenElse */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, [n.condition, n.then, n.otherwise]),
32
+ ["RBreak" /* RType.Break */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, []),
33
+ ["RNext" /* RType.Next */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, []),
34
+ ["RFunctionCall" /* RType.FunctionCall */]: default_call_handling_1.processFunctionCall,
35
+ ["RFunctionDefinition" /* RType.FunctionDefinition */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, [...n.parameters, n.body]),
36
+ ["RParameter" /* RType.Parameter */]: process_parameter_1.processFunctionParameter,
37
+ ["RArgument" /* RType.Argument */]: process_argument_1.processFunctionArgument,
38
+ ["RExpressionList" /* RType.ExpressionList */]: (n, d) => (0, named_call_handling_1.processNamedCall)({
39
+ type: "RSymbol" /* RType.Symbol */,
40
+ info: n.info,
41
+ content: n.grouping?.[0].content ?? '{',
42
+ lexeme: n.grouping?.[0].lexeme ?? '{',
43
+ location: n.location ?? (0, range_1.rangeFrom)(-1, -1, -1, -1),
44
+ namespace: n.grouping?.[0].content ? undefined : 'base'
45
+ }, (0, make_argument_1.wrapArgumentsUnnamed)(n.children, d.completeAst.idMap), n.info.id, d)
47
46
  };
48
- function produceDataFlowGraph(request, ast, initialScope = scopes_1.LocalScope) {
47
+ function produceDataFlowGraph(request, ast) {
49
48
  return (0, processor_1.processDataflowFor)(ast.ast, {
50
49
  completeAst: ast,
51
- activeScope: initialScope,
52
- environments: (0, environments_1.initializeCleanEnvironments)(),
53
- processors: processors,
50
+ environment: (0, environment_1.initializeCleanEnvironments)(),
51
+ processors: exports.processors,
54
52
  currentRequest: request,
55
- referenceChain: [(0, r_bridge_1.requestFingerprint)(request)]
53
+ controlDependencies: undefined,
54
+ referenceChain: [(0, retriever_1.requestFingerprint)(request)]
56
55
  });
57
56
  }
58
57
  exports.produceDataFlowGraph = produceDataFlowGraph;
59
- function processBinaryOp(node, data) {
60
- if (node.flavor === 'assignment') {
61
- return (0, assignment_1.processAssignment)(node, data);
62
- }
63
- else {
64
- return (0, non_assignment_binary_op_1.processNonAssignmentBinaryOp)(node, data);
65
- }
66
- }
67
- exports.processBinaryOp = processBinaryOp;
68
58
  //# sourceMappingURL=extractor.js.map
@@ -1,18 +1,35 @@
1
- import type { NodeId } from '../../r-bridge';
2
1
  import type { DataflowGraph, FunctionArgument, OutgoingEdges } from './graph';
3
- import type { GenericDifferenceInformation, DifferenceReport } from '../../util/diff';
2
+ import type { GenericDifferenceInformation, WriteableDifferenceReport } from '../../util/diff';
3
+ import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
4
+ interface ProblematicVertex {
5
+ tag: 'vertex';
6
+ id: NodeId;
7
+ }
8
+ interface ProblematicEdge {
9
+ tag: 'edge';
10
+ from: NodeId;
11
+ to: NodeId;
12
+ }
13
+ export type ProblematicDiffInfo = ProblematicVertex | ProblematicEdge;
14
+ export declare class DataflowDifferenceReport implements WriteableDifferenceReport {
15
+ _comments: string[] | undefined;
16
+ _problematic: ProblematicDiffInfo[] | undefined;
17
+ addComment(comment: string, ...related: ProblematicDiffInfo[]): void;
18
+ comments(): readonly string[] | undefined;
19
+ problematic(): readonly ProblematicDiffInfo[] | undefined;
20
+ isEqual(): boolean;
21
+ }
4
22
  export interface NamedGraph {
5
23
  name: string;
6
24
  graph: DataflowGraph;
7
25
  }
8
- interface DataflowDiffContext extends GenericDifferenceInformation {
26
+ interface DataflowDiffContext extends GenericDifferenceInformation<DataflowDifferenceReport> {
9
27
  left: DataflowGraph;
10
28
  right: DataflowGraph;
11
29
  }
12
- export declare function diffOfDataflowGraphs(left: NamedGraph, right: NamedGraph): DifferenceReport;
13
- export declare function equalExitPoints(a: NodeId[] | undefined, b: NodeId[] | undefined): boolean;
14
- export declare function equalFunctionArguments(a: false | FunctionArgument[], b: false | FunctionArgument[]): boolean;
15
- export declare function diffFunctionArguments(a: false | FunctionArgument[], b: false | FunctionArgument[], ctx: GenericDifferenceInformation): void;
30
+ export declare function diffOfDataflowGraphs(left: NamedGraph, right: NamedGraph): DataflowDifferenceReport;
31
+ export declare function equalFunctionArguments(fn: NodeId, a: false | readonly FunctionArgument[], b: false | readonly FunctionArgument[]): boolean;
32
+ export declare function diffFunctionArguments(fn: NodeId, a: false | readonly FunctionArgument[], b: false | readonly FunctionArgument[], ctx: GenericDifferenceInformation<DataflowDifferenceReport>): void;
16
33
  export declare function diffVertices(ctx: DataflowDiffContext): void;
17
34
  export declare function diffEdges(ctx: DataflowDiffContext, id: NodeId, lEdges: OutgoingEdges | undefined, rEdges: OutgoingEdges | undefined): void;
18
35
  export {};