@eagleoutice/flowr 2.6.1 → 2.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (681) hide show
  1. package/README.md +131 -30
  2. package/abstract-interpretation/data-frame/absint-info.d.ts +1 -1
  3. package/abstract-interpretation/data-frame/absint-visitor.d.ts +2 -3
  4. package/abstract-interpretation/data-frame/absint-visitor.js +15 -10
  5. package/abstract-interpretation/data-frame/dataframe-domain.d.ts +18 -12
  6. package/abstract-interpretation/data-frame/dataframe-domain.js +25 -13
  7. package/abstract-interpretation/data-frame/mappers/access-mapper.d.ts +0 -1
  8. package/abstract-interpretation/data-frame/mappers/access-mapper.js +0 -1
  9. package/abstract-interpretation/data-frame/mappers/arguments.d.ts +1 -10
  10. package/abstract-interpretation/data-frame/mappers/arguments.js +0 -7
  11. package/abstract-interpretation/data-frame/mappers/assignment-mapper.d.ts +0 -1
  12. package/abstract-interpretation/data-frame/mappers/assignment-mapper.js +0 -1
  13. package/abstract-interpretation/data-frame/mappers/function-mapper.d.ts +4 -5
  14. package/abstract-interpretation/data-frame/mappers/function-mapper.js +3 -4
  15. package/abstract-interpretation/data-frame/mappers/replacement-mapper.d.ts +0 -1
  16. package/abstract-interpretation/data-frame/mappers/replacement-mapper.js +0 -1
  17. package/abstract-interpretation/data-frame/resolve-args.d.ts +1 -1
  18. package/abstract-interpretation/data-frame/semantics.d.ts +3 -4
  19. package/abstract-interpretation/data-frame/semantics.js +171 -162
  20. package/abstract-interpretation/data-frame/shape-inference.d.ts +1 -4
  21. package/abstract-interpretation/data-frame/shape-inference.js +7 -9
  22. package/abstract-interpretation/domains/abstract-domain.d.ts +59 -18
  23. package/abstract-interpretation/domains/abstract-domain.js +74 -1
  24. package/abstract-interpretation/domains/bounded-set-domain.d.ts +37 -24
  25. package/abstract-interpretation/domains/bounded-set-domain.js +70 -47
  26. package/abstract-interpretation/domains/interval-domain.d.ts +33 -25
  27. package/abstract-interpretation/domains/interval-domain.js +109 -50
  28. package/abstract-interpretation/domains/lattice.d.ts +19 -11
  29. package/abstract-interpretation/domains/mapped-abstract-domain.d.ts +34 -0
  30. package/abstract-interpretation/domains/mapped-abstract-domain.js +189 -0
  31. package/abstract-interpretation/domains/positive-interval-domain.d.ts +16 -12
  32. package/abstract-interpretation/domains/positive-interval-domain.js +20 -11
  33. package/abstract-interpretation/domains/product-domain.d.ts +18 -23
  34. package/abstract-interpretation/domains/product-domain.js +11 -19
  35. package/abstract-interpretation/domains/satisfiable-domain.d.ts +29 -0
  36. package/abstract-interpretation/domains/satisfiable-domain.js +24 -0
  37. package/abstract-interpretation/domains/set-upper-bound-domain.d.ts +54 -0
  38. package/abstract-interpretation/domains/set-upper-bound-domain.js +197 -0
  39. package/abstract-interpretation/domains/singleton-domain.d.ts +24 -19
  40. package/abstract-interpretation/domains/singleton-domain.js +52 -37
  41. package/abstract-interpretation/domains/state-abstract-domain.d.ts +8 -24
  42. package/abstract-interpretation/domains/state-abstract-domain.js +2 -167
  43. package/abstract-interpretation/normalized-ast-fold.d.ts +1 -7
  44. package/abstract-interpretation/normalized-ast-fold.js +0 -5
  45. package/benchmark/slicer.d.ts +3 -7
  46. package/benchmark/slicer.js +14 -19
  47. package/benchmark/stats/print.d.ts +6 -0
  48. package/benchmark/stats/print.js +6 -0
  49. package/benchmark/stats/size-of.d.ts +0 -1
  50. package/benchmark/stats/size-of.js +0 -1
  51. package/benchmark/stats/stats.d.ts +2 -2
  52. package/benchmark/stopwatch.d.ts +11 -13
  53. package/benchmark/stopwatch.js +11 -13
  54. package/benchmark/summarizer/first-phase/input.d.ts +6 -0
  55. package/benchmark/summarizer/first-phase/input.js +6 -0
  56. package/benchmark/summarizer/first-phase/process.d.ts +13 -1
  57. package/benchmark/summarizer/first-phase/process.js +12 -0
  58. package/benchmark/summarizer/second-phase/graph.d.ts +3 -0
  59. package/benchmark/summarizer/second-phase/graph.js +3 -0
  60. package/benchmark/summarizer/second-phase/process.d.ts +12 -0
  61. package/benchmark/summarizer/second-phase/process.js +12 -0
  62. package/benchmark/summarizer/summarizer.d.ts +1 -2
  63. package/cli/benchmark-app.js +0 -2
  64. package/cli/common/features.d.ts +7 -1
  65. package/cli/common/features.js +6 -0
  66. package/cli/common/script.d.ts +3 -1
  67. package/cli/common/script.js +3 -1
  68. package/cli/common/scripts-info.d.ts +3 -1
  69. package/cli/common/scripts-info.js +3 -0
  70. package/cli/flowr-main-options.d.ts +3 -0
  71. package/cli/flowr-main-options.js +3 -0
  72. package/cli/repl/commands/repl-commands.d.ts +13 -0
  73. package/cli/repl/commands/repl-commands.js +13 -2
  74. package/cli/repl/commands/repl-execute.d.ts +4 -0
  75. package/cli/repl/commands/repl-execute.js +6 -2
  76. package/cli/repl/commands/repl-main.d.ts +15 -9
  77. package/cli/repl/commands/repl-parse.js +2 -2
  78. package/cli/repl/commands/repl-query.js +16 -5
  79. package/cli/repl/core.d.ts +24 -6
  80. package/cli/repl/core.js +28 -19
  81. package/cli/repl/execute.d.ts +0 -2
  82. package/cli/repl/execute.js +0 -2
  83. package/cli/repl/parser/slice-query-parser.d.ts +14 -0
  84. package/cli/repl/parser/slice-query-parser.js +34 -0
  85. package/cli/repl/print-version.d.ts +6 -0
  86. package/cli/repl/print-version.js +6 -0
  87. package/cli/repl/server/compact.d.ts +8 -0
  88. package/cli/repl/server/compact.js +8 -0
  89. package/cli/repl/server/connection.d.ts +4 -3
  90. package/cli/repl/server/connection.js +3 -31
  91. package/cli/repl/server/messages/all-messages.d.ts +1 -3
  92. package/cli/repl/server/messages/all-messages.js +0 -1
  93. package/cli/repl/server/messages/message-analysis.d.ts +0 -2
  94. package/cli/repl/server/messages/message-query.d.ts +1 -1
  95. package/cli/repl/server/messages/message-repl.d.ts +0 -1
  96. package/cli/repl/server/send.d.ts +6 -0
  97. package/cli/repl/server/send.js +6 -0
  98. package/cli/repl/server/server.d.ts +1 -1
  99. package/cli/repl/server/validate.d.ts +10 -1
  100. package/cli/repl/server/validate.js +9 -0
  101. package/cli/run-script.d.ts +1 -2
  102. package/cli/run-script.js +0 -1
  103. package/cli/script-core/statistics-core.d.ts +3 -0
  104. package/cli/script-core/statistics-core.js +3 -0
  105. package/cli/script-core/statistics-helper-core.d.ts +4 -1
  106. package/cli/script-core/statistics-helper-core.js +3 -0
  107. package/cli/script-core/summarizer-core.d.ts +3 -0
  108. package/cli/script-core/summarizer-core.js +3 -0
  109. package/cli/summarizer-app.d.ts +2 -3
  110. package/cli/summarizer-app.js +2 -3
  111. package/config.d.ts +17 -3
  112. package/config.js +15 -0
  113. package/control-flow/basic-cfg-guided-visitor.d.ts +1 -2
  114. package/control-flow/basic-cfg-guided-visitor.js +0 -1
  115. package/control-flow/cfg-to-basic-blocks.d.ts +1 -1
  116. package/control-flow/control-flow-graph.d.ts +20 -12
  117. package/control-flow/control-flow-graph.js +16 -4
  118. package/control-flow/dfg-cfg-guided-visitor.d.ts +2 -3
  119. package/control-flow/diff-cfg.d.ts +3 -5
  120. package/control-flow/diff-cfg.js +0 -1
  121. package/control-flow/extract-cfg.d.ts +3 -6
  122. package/control-flow/extract-cfg.js +0 -3
  123. package/control-flow/happens-before.d.ts +1 -1
  124. package/control-flow/semantic-cfg-guided-visitor.d.ts +2 -31
  125. package/control-flow/semantic-cfg-guided-visitor.js +0 -28
  126. package/control-flow/simple-visitor.d.ts +1 -3
  127. package/control-flow/simple-visitor.js +0 -2
  128. package/control-flow/syntax-cfg-guided-visitor.d.ts +1 -2
  129. package/control-flow/useless-loop.d.ts +0 -3
  130. package/control-flow/useless-loop.js +2 -5
  131. package/core/pipeline-executor.d.ts +8 -16
  132. package/core/pipeline-executor.js +9 -18
  133. package/core/print/dataflow-printer.d.ts +19 -0
  134. package/core/print/dataflow-printer.js +19 -0
  135. package/core/print/normalize-printer.d.ts +21 -1
  136. package/core/print/normalize-printer.js +20 -0
  137. package/core/print/parse-printer.d.ts +6 -1
  138. package/core/print/parse-printer.js +5 -0
  139. package/core/print/print.d.ts +0 -1
  140. package/core/print/print.js +0 -1
  141. package/core/print/slice-diff-ansi.d.ts +3 -0
  142. package/core/print/slice-diff-ansi.js +3 -0
  143. package/core/steps/all/core/00-parse.d.ts +1 -1
  144. package/core/steps/all/core/01-parse-tree-sitter.d.ts +1 -11
  145. package/core/steps/all/core/10-normalize.d.ts +3 -0
  146. package/core/steps/all/core/10-normalize.js +3 -0
  147. package/core/steps/all/core/11-normalize-tree-sitter.d.ts +4 -3
  148. package/core/steps/pipeline/create-pipeline.d.ts +1 -1
  149. package/core/steps/pipeline/default-pipelines.d.ts +47 -47
  150. package/core/steps/pipeline/default-pipelines.js +0 -4
  151. package/core/steps/pipeline/pipeline.d.ts +1 -8
  152. package/core/steps/pipeline/pipeline.js +1 -3
  153. package/core/steps/pipeline-step.d.ts +0 -1
  154. package/core/steps/pipeline-step.js +0 -1
  155. package/dataflow/cluster.d.ts +3 -0
  156. package/dataflow/cluster.js +3 -0
  157. package/dataflow/environments/append.d.ts +1 -1
  158. package/dataflow/environments/built-in-config.d.ts +1 -5
  159. package/dataflow/environments/built-in-config.js +0 -1
  160. package/dataflow/environments/built-in.d.ts +10 -5
  161. package/dataflow/environments/built-in.js +6 -1
  162. package/dataflow/environments/clone.d.ts +1 -1
  163. package/dataflow/environments/default-builtin-config.d.ts +3 -0
  164. package/dataflow/environments/default-builtin-config.js +4 -1
  165. package/dataflow/environments/diff.d.ts +11 -2
  166. package/dataflow/environments/diff.js +9 -0
  167. package/dataflow/environments/environment.d.ts +3 -3
  168. package/dataflow/environments/environment.js +8 -6
  169. package/dataflow/environments/identifier.d.ts +0 -4
  170. package/dataflow/environments/identifier.js +0 -1
  171. package/dataflow/environments/overwrite.d.ts +4 -1
  172. package/dataflow/environments/overwrite.js +3 -0
  173. package/dataflow/environments/resolve-by-name.d.ts +4 -4
  174. package/dataflow/environments/resolve-by-name.js +3 -2
  175. package/dataflow/environments/scoping.d.ts +4 -1
  176. package/dataflow/environments/scoping.js +3 -0
  177. package/dataflow/eval/resolve/alias-tracking.d.ts +4 -10
  178. package/dataflow/eval/resolve/alias-tracking.js +11 -14
  179. package/dataflow/eval/resolve/resolve-argument.d.ts +1 -1
  180. package/dataflow/eval/resolve/resolve.d.ts +1 -7
  181. package/dataflow/eval/resolve/resolve.js +0 -5
  182. package/dataflow/eval/values/general.d.ts +1 -3
  183. package/dataflow/eval/values/general.js +0 -1
  184. package/dataflow/eval/values/intervals/interval-constants.d.ts +7 -1
  185. package/dataflow/eval/values/intervals/interval-constants.js +6 -0
  186. package/dataflow/eval/values/logical/logical-constants.d.ts +4 -1
  187. package/dataflow/eval/values/logical/logical-constants.js +3 -0
  188. package/dataflow/eval/values/r-value.d.ts +12 -0
  189. package/dataflow/eval/values/r-value.js +12 -0
  190. package/dataflow/eval/values/scalar/scalar-consatnts.d.ts +7 -1
  191. package/dataflow/eval/values/scalar/scalar-consatnts.js +6 -0
  192. package/dataflow/eval/values/sets/set-constants.d.ts +7 -2
  193. package/dataflow/eval/values/sets/set-constants.js +6 -0
  194. package/dataflow/eval/values/string/string-constants.d.ts +10 -1
  195. package/dataflow/eval/values/string/string-constants.js +9 -0
  196. package/dataflow/eval/values/vectors/vector-constants.d.ts +1 -1
  197. package/dataflow/extractor.d.ts +1 -1
  198. package/dataflow/graph/dataflowgraph-builder.d.ts +20 -38
  199. package/dataflow/graph/dataflowgraph-builder.js +6 -23
  200. package/dataflow/graph/diff-dataflow-graph.d.ts +16 -6
  201. package/dataflow/graph/diff-dataflow-graph.js +12 -1
  202. package/dataflow/graph/edge.d.ts +9 -0
  203. package/dataflow/graph/edge.js +9 -0
  204. package/dataflow/graph/graph.d.ts +6 -19
  205. package/dataflow/graph/graph.js +4 -15
  206. package/dataflow/graph/invert-dfg.d.ts +3 -0
  207. package/dataflow/graph/invert-dfg.js +3 -0
  208. package/dataflow/graph/quads.d.ts +1 -1
  209. package/dataflow/graph/unknown-replacement.d.ts +6 -0
  210. package/dataflow/graph/unknown-replacement.js +6 -0
  211. package/dataflow/graph/unknown-side-effect.d.ts +8 -0
  212. package/dataflow/graph/unknown-side-effect.js +8 -0
  213. package/dataflow/graph/vertex.d.ts +9 -9
  214. package/dataflow/graph/vertex.js +9 -1
  215. package/dataflow/info.d.ts +9 -10
  216. package/dataflow/info.js +6 -1
  217. package/dataflow/internal/linker.d.ts +25 -9
  218. package/dataflow/internal/linker.js +23 -7
  219. package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
  220. package/dataflow/internal/process/functions/call/argument/make-argument.js +6 -0
  221. package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +1 -1
  222. package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +4 -1
  223. package/dataflow/internal/process/functions/call/built-in/built-in-access.js +3 -1
  224. package/dataflow/internal/process/functions/call/built-in/built-in-apply.d.ts +4 -1
  225. package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +3 -0
  226. package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +2 -2
  227. package/dataflow/internal/process/functions/call/built-in/built-in-eval.d.ts +6 -3
  228. package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +3 -0
  229. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +4 -1
  230. package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +3 -0
  231. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +5 -2
  232. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +3 -0
  233. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +10 -4
  234. package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +6 -0
  235. package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +3 -0
  236. package/dataflow/internal/process/functions/call/built-in/built-in-get.js +3 -0
  237. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +5 -2
  238. package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +4 -0
  239. package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +3 -0
  240. package/dataflow/internal/process/functions/call/built-in/built-in-library.js +3 -0
  241. package/dataflow/internal/process/functions/call/built-in/built-in-list.d.ts +1 -1
  242. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +3 -0
  243. package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +3 -0
  244. package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +3 -0
  245. package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +3 -0
  246. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +5 -2
  247. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +3 -0
  248. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +6 -3
  249. package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +3 -1
  250. package/dataflow/internal/process/functions/call/built-in/built-in-rm.d.ts +4 -1
  251. package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +3 -0
  252. package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +23 -6
  253. package/dataflow/internal/process/functions/call/built-in/built-in-source.js +20 -1
  254. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +3 -0
  255. package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +3 -0
  256. package/dataflow/internal/process/functions/call/built-in/built-in-vector.d.ts +1 -1
  257. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +5 -2
  258. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +3 -0
  259. package/dataflow/internal/process/functions/call/common.d.ts +11 -5
  260. package/dataflow/internal/process/functions/call/common.js +6 -0
  261. package/dataflow/internal/process/functions/call/default-call-handling.d.ts +3 -0
  262. package/dataflow/internal/process/functions/call/default-call-handling.js +3 -0
  263. package/dataflow/internal/process/functions/call/known-call-handling.d.ts +12 -5
  264. package/dataflow/internal/process/functions/call/known-call-handling.js +7 -0
  265. package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -1
  266. package/dataflow/internal/process/functions/call/named-call-handling.js +6 -0
  267. package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +4 -1
  268. package/dataflow/internal/process/functions/call/unnamed-call-handling.js +3 -0
  269. package/dataflow/internal/process/functions/process-argument.d.ts +8 -2
  270. package/dataflow/internal/process/functions/process-argument.js +6 -0
  271. package/dataflow/internal/process/functions/process-parameter.d.ts +5 -2
  272. package/dataflow/internal/process/functions/process-parameter.js +3 -0
  273. package/dataflow/internal/process/process-symbol.d.ts +3 -0
  274. package/dataflow/internal/process/process-symbol.js +3 -0
  275. package/dataflow/internal/process/process-uninteresting-leaf.d.ts +3 -0
  276. package/dataflow/internal/process/process-uninteresting-leaf.js +3 -0
  277. package/dataflow/internal/process/process-value.d.ts +3 -0
  278. package/dataflow/internal/process/process-value.js +3 -0
  279. package/dataflow/origin/dfg-get-origin.d.ts +0 -2
  280. package/dataflow/origin/dfg-get-symbol-refs.d.ts +5 -7
  281. package/dataflow/origin/dfg-get-symbol-refs.js +6 -8
  282. package/dataflow/processor.d.ts +0 -1
  283. package/dataflow/processor.js +0 -1
  284. package/documentation/data/dfg/doc-data-dfg-util.d.ts +6 -0
  285. package/documentation/data/dfg/doc-data-dfg-util.js +6 -0
  286. package/documentation/data/faq/faqs.d.ts +5 -0
  287. package/documentation/data/faq/faqs.js +78 -0
  288. package/documentation/data/faq/wiki-faq-store.d.ts +18 -0
  289. package/documentation/data/faq/wiki-faq-store.js +75 -0
  290. package/documentation/data/server/doc-data-server-messages.d.ts +3 -0
  291. package/documentation/data/server/doc-data-server-messages.js +4 -63
  292. package/documentation/doc-util/doc-auto-gen.d.ts +6 -0
  293. package/documentation/doc-util/doc-auto-gen.js +6 -0
  294. package/documentation/doc-util/doc-benchmarks.d.ts +12 -0
  295. package/documentation/doc-util/doc-benchmarks.js +12 -0
  296. package/documentation/doc-util/doc-cfg.d.ts +7 -1
  297. package/documentation/doc-util/doc-cfg.js +9 -0
  298. package/documentation/doc-util/doc-cli-option.d.ts +9 -0
  299. package/documentation/doc-util/doc-cli-option.js +9 -0
  300. package/documentation/doc-util/doc-code.d.ts +24 -0
  301. package/documentation/doc-util/doc-code.js +24 -0
  302. package/documentation/doc-util/doc-dfg.d.ts +7 -1
  303. package/documentation/doc-util/doc-dfg.js +9 -0
  304. package/documentation/doc-util/doc-env.d.ts +3 -0
  305. package/documentation/doc-util/doc-env.js +3 -0
  306. package/documentation/doc-util/doc-escape.d.ts +0 -1
  307. package/documentation/doc-util/doc-escape.js +0 -1
  308. package/documentation/doc-util/doc-files.d.ts +11 -0
  309. package/documentation/doc-util/doc-files.js +15 -4
  310. package/documentation/doc-util/doc-general.d.ts +6 -0
  311. package/documentation/doc-util/doc-general.js +6 -0
  312. package/documentation/doc-util/doc-normalized-ast.d.ts +7 -1
  313. package/documentation/doc-util/doc-normalized-ast.js +6 -0
  314. package/documentation/doc-util/doc-query.d.ts +15 -0
  315. package/documentation/doc-util/doc-query.js +17 -2
  316. package/documentation/doc-util/doc-repl.d.ts +6 -0
  317. package/documentation/doc-util/doc-repl.js +6 -0
  318. package/documentation/doc-util/doc-search.d.ts +15 -0
  319. package/documentation/doc-util/doc-search.js +17 -2
  320. package/documentation/doc-util/doc-server-message.d.ts +13 -1
  321. package/documentation/doc-util/doc-server-message.js +13 -1
  322. package/documentation/doc-util/doc-structure.d.ts +9 -0
  323. package/documentation/doc-util/doc-structure.js +10 -1
  324. package/documentation/doc-util/doc-types.d.ts +42 -0
  325. package/documentation/doc-util/doc-types.js +42 -0
  326. package/documentation/print-analyzer-wiki.js +4 -0
  327. package/documentation/print-core-wiki.d.ts +3 -0
  328. package/documentation/print-core-wiki.js +5 -2
  329. package/documentation/print-dataflow-graph-wiki.js +5 -5
  330. package/documentation/print-faq-wiki.js +3 -75
  331. package/documentation/print-interface-wiki.js +1 -1
  332. package/documentation/print-onboarding-wiki.js +1 -1
  333. package/documentation/print-query-wiki.js +4 -34
  334. package/documentation/print-readme.js +105 -0
  335. package/engines.d.ts +1 -1
  336. package/linter/linter-executor.d.ts +6 -3
  337. package/linter/linter-executor.js +3 -0
  338. package/linter/linter-format.d.ts +8 -0
  339. package/linter/linter-format.js +8 -0
  340. package/linter/rules/absolute-path.d.ts +3 -4
  341. package/linter/rules/dataframe-access-validation.d.ts +3 -4
  342. package/linter/rules/dataframe-access-validation.js +9 -11
  343. package/linter/rules/dead-code.d.ts +1 -1
  344. package/linter/rules/deprecated-functions.d.ts +1 -1
  345. package/linter/rules/file-path-validity.d.ts +1 -2
  346. package/linter/rules/function-finder-util.d.ts +1 -2
  347. package/linter/rules/naming-convention.d.ts +13 -2
  348. package/linter/rules/naming-convention.js +13 -1
  349. package/linter/rules/network-functions.d.ts +1 -1
  350. package/linter/rules/seeded-randomness.d.ts +1 -2
  351. package/linter/rules/unused-definition.d.ts +2 -3
  352. package/linter/rules/useless-loop.d.ts +1 -2
  353. package/package.json +2 -2
  354. package/project/cache/flowr-analyzer-cache.d.ts +2 -9
  355. package/project/cache/flowr-analyzer-cache.js +0 -6
  356. package/project/context/flowr-analyzer-context.d.ts +3 -6
  357. package/project/context/flowr-analyzer-dependencies-context.d.ts +0 -1
  358. package/project/context/flowr-analyzer-files-context.d.ts +2 -4
  359. package/project/context/flowr-file.d.ts +0 -1
  360. package/project/flowr-analyzer-builder.d.ts +1 -3
  361. package/project/flowr-analyzer-builder.js +5 -6
  362. package/project/flowr-analyzer.d.ts +34 -25
  363. package/project/flowr-analyzer.js +10 -11
  364. package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +1 -1
  365. package/project/plugins/file-plugins/flowr-description-file.d.ts +1 -3
  366. package/project/plugins/file-plugins/flowr-description-file.js +0 -1
  367. package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +1 -1
  368. package/queries/base-query-format.d.ts +2 -2
  369. package/queries/catalog/call-context-query/call-context-query-executor.d.ts +3 -0
  370. package/queries/catalog/call-context-query/call-context-query-executor.js +3 -0
  371. package/queries/catalog/call-context-query/call-context-query-format.d.ts +3 -3
  372. package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +11 -2
  373. package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +9 -0
  374. package/queries/catalog/cluster-query/cluster-query-executor.d.ts +3 -0
  375. package/queries/catalog/cluster-query/cluster-query-executor.js +3 -0
  376. package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
  377. package/queries/catalog/config-query/config-query-executor.d.ts +3 -0
  378. package/queries/catalog/config-query/config-query-executor.js +3 -0
  379. package/queries/catalog/config-query/config-query-format.d.ts +5 -2
  380. package/queries/catalog/config-query/config-query-format.js +13 -16
  381. package/queries/catalog/control-flow-query/control-flow-query-executor.d.ts +3 -0
  382. package/queries/catalog/control-flow-query/control-flow-query-executor.js +3 -0
  383. package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +3 -3
  384. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.d.ts +3 -0
  385. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +3 -0
  386. package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
  387. package/queries/catalog/dataflow-query/dataflow-query-executor.d.ts +3 -0
  388. package/queries/catalog/dataflow-query/dataflow-query-executor.js +3 -0
  389. package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
  390. package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +4 -1
  391. package/queries/catalog/dependencies-query/dependencies-query-executor.js +7 -4
  392. package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +4 -1
  393. package/queries/catalog/dependencies-query/dependencies-query-format.js +4 -1
  394. package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +4 -1
  395. package/queries/catalog/df-shape-query/df-shape-query-executor.js +8 -4
  396. package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +10 -3
  397. package/queries/catalog/df-shape-query/df-shape-query-format.js +24 -5
  398. package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +3 -0
  399. package/queries/catalog/happens-before-query/happens-before-query-executor.js +3 -0
  400. package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
  401. package/queries/catalog/id-map-query/id-map-query-executor.d.ts +3 -0
  402. package/queries/catalog/id-map-query/id-map-query-executor.js +3 -0
  403. package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -1
  404. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.d.ts +3 -0
  405. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +3 -0
  406. package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +2 -2
  407. package/queries/catalog/linter-query/linter-query-executor.d.ts +4 -0
  408. package/queries/catalog/linter-query/linter-query-executor.js +4 -0
  409. package/queries/catalog/linter-query/linter-query-format.d.ts +12 -3
  410. package/queries/catalog/linter-query/linter-query-format.js +67 -0
  411. package/queries/catalog/location-map-query/location-map-query-executor.d.ts +4 -0
  412. package/queries/catalog/location-map-query/location-map-query-executor.js +5 -1
  413. package/queries/catalog/location-map-query/location-map-query-format.d.ts +7 -1
  414. package/queries/catalog/location-map-query/location-map-query-format.js +12 -0
  415. package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.d.ts +3 -0
  416. package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.js +3 -0
  417. package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
  418. package/queries/catalog/origin-query/origin-query-executor.d.ts +7 -1
  419. package/queries/catalog/origin-query/origin-query-executor.js +6 -0
  420. package/queries/catalog/origin-query/origin-query-format.d.ts +7 -1
  421. package/queries/catalog/origin-query/origin-query-format.js +17 -1
  422. package/queries/catalog/project-query/project-query-executor.d.ts +3 -0
  423. package/queries/catalog/project-query/project-query-executor.js +3 -0
  424. package/queries/catalog/project-query/project-query-format.d.ts +1 -1
  425. package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +6 -0
  426. package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +6 -0
  427. package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +7 -1
  428. package/queries/catalog/resolve-value-query/resolve-value-query-format.js +19 -1
  429. package/queries/catalog/search-query/search-query-executor.d.ts +3 -0
  430. package/queries/catalog/search-query/search-query-executor.js +3 -0
  431. package/queries/catalog/search-query/search-query-format.d.ts +1 -1
  432. package/queries/catalog/static-slice-query/static-slice-query-executor.d.ts +9 -0
  433. package/queries/catalog/static-slice-query/static-slice-query-executor.js +9 -0
  434. package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +7 -1
  435. package/queries/catalog/static-slice-query/static-slice-query-format.js +17 -0
  436. package/queries/query-print.d.ts +20 -4
  437. package/queries/query-print.js +18 -2
  438. package/queries/query.d.ts +85 -55
  439. package/queries/query.js +35 -23
  440. package/queries/virtual-query/virtual-queries.d.ts +1 -2
  441. package/r-bridge/data/get.d.ts +6 -0
  442. package/r-bridge/data/get.js +6 -0
  443. package/r-bridge/lang-4.x/ast/model/collect.d.ts +0 -1
  444. package/r-bridge/lang-4.x/ast/model/collect.js +0 -1
  445. package/r-bridge/lang-4.x/ast/model/model.d.ts +8 -11
  446. package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +0 -2
  447. package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +3 -0
  448. package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
  449. package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +3 -0
  450. package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
  451. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +3 -0
  452. package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +3 -0
  453. package/r-bridge/lang-4.x/ast/model/operators.d.ts +0 -1
  454. package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +6 -7
  455. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +6 -6
  456. package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +1 -1
  457. package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +0 -1
  458. package/r-bridge/lang-4.x/ast/model/processing/node-id.js +0 -1
  459. package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +0 -1
  460. package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +1 -2
  461. package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +0 -1
  462. package/r-bridge/lang-4.x/ast/model/processing/visitor.js +0 -1
  463. package/r-bridge/lang-4.x/ast/model/type.d.ts +4 -5
  464. package/r-bridge/lang-4.x/ast/model/type.js +4 -5
  465. package/r-bridge/lang-4.x/ast/model/versions.d.ts +0 -1
  466. package/r-bridge/lang-4.x/ast/model/versions.js +0 -1
  467. package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +4 -5
  468. package/r-bridge/lang-4.x/ast/parser/json/parser.js +0 -1
  469. package/r-bridge/lang-4.x/ast/parser/main/internal/control/normalize-if-then.d.ts +1 -1
  470. package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.d.ts +0 -1
  471. package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.js +0 -1
  472. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.d.ts +0 -2
  473. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.js +0 -2
  474. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.d.ts +1 -3
  475. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.js +0 -2
  476. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.d.ts +0 -2
  477. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.js +0 -2
  478. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.d.ts +0 -2
  479. package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.js +0 -2
  480. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.d.ts +3 -0
  481. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.js +3 -0
  482. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.d.ts +4 -1
  483. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.js +3 -0
  484. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.d.ts +3 -0
  485. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.js +3 -0
  486. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.d.ts +0 -2
  487. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.js +0 -2
  488. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.d.ts +4 -1
  489. package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.js +3 -0
  490. package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.d.ts +0 -2
  491. package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.js +0 -2
  492. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-binary.d.ts +1 -1
  493. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.d.ts +0 -2
  494. package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.js +0 -2
  495. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.d.ts +0 -1
  496. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.js +0 -1
  497. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.d.ts +0 -1
  498. package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.js +0 -1
  499. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.d.ts +3 -0
  500. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.js +3 -0
  501. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.d.ts +9 -0
  502. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.js +9 -0
  503. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.d.ts +1 -3
  504. package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.js +0 -2
  505. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.d.ts +1 -2
  506. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.js +0 -1
  507. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.d.ts +0 -1
  508. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.js +0 -1
  509. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.d.ts +0 -2
  510. package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.js +0 -2
  511. package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.d.ts +14 -5
  512. package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.js +13 -6
  513. package/r-bridge/lang-4.x/convert-values.d.ts +12 -1
  514. package/r-bridge/lang-4.x/convert-values.js +12 -1
  515. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +7 -2
  516. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +17 -0
  517. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +13 -1
  518. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +48 -19
  519. package/r-bridge/parser.d.ts +28 -7
  520. package/r-bridge/retriever.d.ts +16 -1
  521. package/r-bridge/retriever.js +15 -0
  522. package/r-bridge/shell-executor.d.ts +3 -3
  523. package/r-bridge/shell-executor.js +6 -1
  524. package/r-bridge/shell.d.ts +24 -23
  525. package/r-bridge/shell.js +37 -31
  526. package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -1
  527. package/reconstruct/auto-select/magic-comments.d.ts +1 -2
  528. package/reconstruct/auto-select/magic-comments.js +1 -2
  529. package/reconstruct/reconstruct.d.ts +1 -3
  530. package/reconstruct/reconstruct.js +0 -2
  531. package/search/flowr-search-builder.d.ts +12 -5
  532. package/search/flowr-search-builder.js +7 -2
  533. package/search/flowr-search-executor.d.ts +3 -3
  534. package/search/flowr-search-filters.d.ts +14 -1
  535. package/search/flowr-search-filters.js +13 -0
  536. package/search/flowr-search-printer.d.ts +6 -0
  537. package/search/flowr-search-printer.js +6 -0
  538. package/search/flowr-search-traverse.d.ts +1 -1
  539. package/search/flowr-search.d.ts +3 -3
  540. package/search/search-executor/search-enrichers.d.ts +9 -6
  541. package/search/search-executor/search-enrichers.js +3 -0
  542. package/search/search-executor/search-generators.d.ts +19 -10
  543. package/search/search-executor/search-generators.js +49 -2
  544. package/search/search-executor/search-mappers.d.ts +8 -5
  545. package/search/search-executor/search-mappers.js +3 -0
  546. package/search/search-executor/search-transformer.d.ts +19 -16
  547. package/search/search-executor/search-transformer.js +3 -0
  548. package/slicing/criterion/collect-all.d.ts +10 -10
  549. package/slicing/criterion/parse.d.ts +4 -2
  550. package/slicing/criterion/parse.js +4 -2
  551. package/slicing/static/fingerprint.d.ts +9 -1
  552. package/slicing/static/fingerprint.js +8 -0
  553. package/slicing/static/slice-call.d.ts +2 -2
  554. package/slicing/static/static-slicer.d.ts +8 -4
  555. package/slicing/static/static-slicer.js +5 -1
  556. package/slicing/static/visiting-queue.d.ts +1 -1
  557. package/statistics/features/common-syntax-probability.d.ts +10 -1
  558. package/statistics/features/common-syntax-probability.js +9 -0
  559. package/statistics/features/feature.d.ts +0 -4
  560. package/statistics/features/feature.js +0 -1
  561. package/statistics/features/post-processing.d.ts +6 -0
  562. package/statistics/features/post-processing.js +6 -0
  563. package/statistics/features/supported/assignments/post-process.d.ts +3 -0
  564. package/statistics/features/supported/assignments/post-process.js +3 -0
  565. package/statistics/features/supported/comments/post-process.d.ts +3 -0
  566. package/statistics/features/supported/comments/post-process.js +3 -0
  567. package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
  568. package/statistics/features/supported/control-flow/post-process.js +3 -0
  569. package/statistics/features/supported/data-access/data-access.d.ts +1 -1
  570. package/statistics/features/supported/data-access/post-process.d.ts +3 -0
  571. package/statistics/features/supported/data-access/post-process.js +3 -0
  572. package/statistics/features/supported/defined-functions/defined-functions.d.ts +1 -1
  573. package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
  574. package/statistics/features/supported/expression-list/post-process.js +3 -0
  575. package/statistics/features/supported/loops/post-process.d.ts +3 -0
  576. package/statistics/features/supported/loops/post-process.js +3 -0
  577. package/statistics/features/supported/used-functions/used-functions.d.ts +1 -1
  578. package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
  579. package/statistics/features/supported/used-packages/post-process.js +3 -0
  580. package/statistics/features/supported/values/post-process.d.ts +3 -0
  581. package/statistics/features/supported/values/post-process.js +3 -0
  582. package/statistics/features/supported/variables/post-process.d.ts +7 -1
  583. package/statistics/features/supported/variables/post-process.js +6 -0
  584. package/statistics/meta-statistics.d.ts +8 -9
  585. package/statistics/output/file-provider.d.ts +5 -6
  586. package/statistics/output/file-provider.js +5 -6
  587. package/statistics/output/print-stats.d.ts +13 -1
  588. package/statistics/output/print-stats.js +12 -0
  589. package/statistics/output/statistics-file.d.ts +1 -2
  590. package/statistics/output/statistics-file.js +0 -1
  591. package/statistics/statistics.d.ts +3 -4
  592. package/statistics/statistics.js +1 -2
  593. package/statistics/summarizer/auto-detect.d.ts +3 -0
  594. package/statistics/summarizer/auto-detect.js +3 -0
  595. package/statistics/summarizer/post-process/clusterer.d.ts +3 -4
  596. package/statistics/summarizer/post-process/clusterer.js +0 -2
  597. package/statistics/summarizer/post-process/file-based-count.d.ts +0 -1
  598. package/statistics/summarizer/post-process/file-based-count.js +0 -1
  599. package/statistics/summarizer/post-process/histogram.d.ts +0 -2
  600. package/statistics/summarizer/post-process/histogram.js +0 -2
  601. package/statistics/summarizer/post-process/post-process-output.d.ts +2 -4
  602. package/statistics/summarizer/post-process/post-process-output.js +0 -3
  603. package/statistics/summarizer/second-phase/process.d.ts +5 -3
  604. package/statistics/summarizer/second-phase/process.js +3 -1
  605. package/statistics/summarizer/summarizer.d.ts +1 -2
  606. package/util/assert.d.ts +52 -2
  607. package/util/assert.js +52 -2
  608. package/util/collections/arrays.d.ts +10 -5
  609. package/util/collections/arrays.js +10 -5
  610. package/util/collections/defaultmap.d.ts +11 -11
  611. package/util/collections/defaultmap.js +11 -11
  612. package/util/containers.d.ts +2 -7
  613. package/util/containers.js +0 -5
  614. package/util/diff-graph.d.ts +0 -1
  615. package/util/diff-graph.js +0 -1
  616. package/util/diff.d.ts +3 -1
  617. package/util/diff.js +3 -1
  618. package/util/files.d.ts +11 -11
  619. package/util/files.js +10 -10
  620. package/util/formats/adapter.d.ts +9 -0
  621. package/util/formats/adapter.js +9 -0
  622. package/util/formats/adapters/rmd-adapter.d.ts +10 -1
  623. package/util/formats/adapters/rmd-adapter.js +10 -1
  624. package/util/html-hover-over.d.ts +5 -0
  625. package/util/html-hover-over.js +5 -0
  626. package/util/json.d.ts +13 -0
  627. package/util/json.js +13 -0
  628. package/util/log.d.ts +2 -2
  629. package/util/log.js +2 -2
  630. package/util/mermaid/ast.d.ts +3 -0
  631. package/util/mermaid/ast.js +3 -0
  632. package/util/mermaid/cfg.d.ts +1 -1
  633. package/util/mermaid/dfg.d.ts +12 -4
  634. package/util/mermaid/dfg.js +9 -1
  635. package/util/mermaid/mermaid.d.ts +6 -1
  636. package/util/mermaid/mermaid.js +6 -1
  637. package/util/numbers.d.ts +7 -0
  638. package/util/numbers.js +7 -0
  639. package/util/objects.d.ts +0 -2
  640. package/util/os.d.ts +3 -0
  641. package/util/os.js +3 -0
  642. package/util/parallel.d.ts +4 -4
  643. package/util/parallel.js +4 -4
  644. package/util/prefix.d.ts +0 -1
  645. package/util/prefix.js +0 -1
  646. package/util/quads.d.ts +14 -17
  647. package/util/quads.js +3 -5
  648. package/util/r-value.d.ts +10 -1
  649. package/util/r-value.js +21 -0
  650. package/util/random.d.ts +3 -0
  651. package/util/random.js +3 -0
  652. package/util/range.d.ts +9 -3
  653. package/util/range.js +15 -2
  654. package/util/schema.d.ts +14 -1
  655. package/util/schema.js +15 -2
  656. package/util/simple-df/dfg-view.d.ts +4 -1
  657. package/util/simple-df/dfg-view.js +4 -1
  658. package/util/summarizer.d.ts +9 -1
  659. package/util/summarizer.js +9 -0
  660. package/util/text/ansi.d.ts +3 -0
  661. package/util/text/ansi.js +3 -0
  662. package/util/text/args.d.ts +2 -4
  663. package/util/text/args.js +7 -5
  664. package/util/text/text.d.ts +4 -0
  665. package/util/text/text.js +4 -0
  666. package/util/text/time.d.ts +0 -1
  667. package/util/text/time.js +0 -1
  668. package/util/version.d.ts +12 -3
  669. package/util/version.js +12 -3
  670. package/abstract-interpretation/data-frame/domain.d.ts +0 -107
  671. package/abstract-interpretation/data-frame/domain.js +0 -315
  672. package/abstract-interpretation/domains/set-bounded-set-domain.d.ts +0 -43
  673. package/abstract-interpretation/domains/set-bounded-set-domain.js +0 -164
  674. package/cli/repl/commands/repl-lineage.d.ts +0 -15
  675. package/cli/repl/commands/repl-lineage.js +0 -66
  676. package/cli/repl/server/messages/message-lineage.d.ts +0 -17
  677. package/cli/repl/server/messages/message-lineage.js +0 -25
  678. package/queries/catalog/lineage-query/lineage-query-executor.d.ts +0 -3
  679. package/queries/catalog/lineage-query/lineage-query-executor.js +0 -22
  680. package/queries/catalog/lineage-query/lineage-query-format.d.ts +0 -22
  681. package/queries/catalog/lineage-query/lineage-query-format.js +0 -31
@@ -43,6 +43,9 @@ export interface NamedArgumentId {
43
43
  readonly index: number | undefined;
44
44
  readonly lexeme: string;
45
45
  }
46
+ /**
47
+ * Type guard to check whether {@link identifier} is a {@link NamedArgumentId}.
48
+ */
46
49
  export declare function isNamedArgumentId(identifier: IndexIdentifier): identifier is NamedArgumentId;
47
50
  export type IndexIdentifier = UnnamedArgumentId | NamedArgumentId;
48
51
  /**
@@ -64,7 +67,6 @@ export interface ContainerLeafIndex {
64
67
  * A single index of a container, which is a container itself.
65
68
  *
66
69
  * This can be, e.g., a list, vector, or data frame.
67
- *
68
70
  * @see {@link ContainerLeafIndex} - for a single index of a container which is not a container itself
69
71
  * @see {@link isParentContainerIndex} - to check if an index is a parent container index
70
72
  */
@@ -74,6 +76,9 @@ export interface ContainerParentIndex extends ContainerLeafIndex {
74
76
  */
75
77
  readonly subIndices: ContainerIndices[];
76
78
  }
79
+ /**
80
+ * Type guard to check whether {@link index} is a {@link ContainerParentIndex}.
81
+ */
77
82
  export declare function isParentContainerIndex(index: ContainerIndex): index is ContainerParentIndex;
78
83
  /**
79
84
  * A single index of a container.
@@ -81,13 +86,15 @@ export declare function isParentContainerIndex(index: ContainerIndex): index is
81
86
  export type ContainerIndex = ContainerLeafIndex | ContainerParentIndex;
82
87
  /**
83
88
  * Checks whether {@link index} is accessed by {@link accessLexeme}.
84
- *
85
89
  * @param index - The {@link ContainerIndex}, which is accessed
86
90
  * @param accessLexeme - The access lexeme
87
91
  * @param isIndexBasedAccess - Whether the index of the {@link ContainerIndex} is accessed i.e. the position in the container and not e.g. the name of the index
88
92
  * @returns true, when {@link accessLexeme} accesses the {@link index}, false otherwise
89
93
  */
90
94
  export declare function isAccessed(index: ContainerIndex, accessLexeme: string, isIndexBasedAccess: boolean): boolean;
95
+ /**
96
+ * Checks whether two {@link ContainerIndex|container indices} are the same.
97
+ */
91
98
  export declare function isSameIndex(a: ContainerIndex, b: ContainerIndex): boolean;
92
99
  /**
93
100
  * List of indices of a single statement like `list(a=3, b=2)`
@@ -108,7 +115,6 @@ export interface ContainerIndices {
108
115
  export type ContainerIndicesCollection = ContainerIndices[] | undefined;
109
116
  /**
110
117
  * Arguments required to construct a vertex in the {@link DataflowGraph|dataflow graph}.
111
- *
112
118
  * @see DataflowGraphVertexUse
113
119
  * @see DataflowGraphVertexVariableDefinition
114
120
  * @see DataflowGraphVertexFunctionDefinition
@@ -153,7 +159,6 @@ export interface DataflowGraphVertexAstLink {
153
159
  *
154
160
  * If you have a {@link DataflowGraph|dataflow graph} named `graph`
155
161
  * with an {@link AstIdMap} and a value vertex object with name `value` the following Code should work:
156
- *
157
162
  * @example
158
163
  * ```ts
159
164
  * const node = graph.idMap.get(value.id)
@@ -164,7 +169,6 @@ export interface DataflowGraphVertexAstLink {
164
169
  *
165
170
  * This works similarly for {@link IdentifierReference|identifier references}
166
171
  * for which you can use the {@link IdentifierReference#nodeId|`nodeId`}.
167
- *
168
172
  * @see {@link isValueVertex} - to check if a vertex is a value vertex
169
173
  */
170
174
  export interface DataflowGraphVertexValue extends DataflowGraphVertexBase {
@@ -173,7 +177,6 @@ export interface DataflowGraphVertexValue extends DataflowGraphVertexBase {
173
177
  }
174
178
  /**
175
179
  * Arguments required to construct a vertex which represents the usage of a variable in the {@link DataflowGraph|dataflow graph}.
176
- *
177
180
  * @see {@link isUseVertex} - to check if a vertex is a use vertex
178
181
  */
179
182
  export interface DataflowGraphVertexUse extends DataflowGraphVertexBase {
@@ -185,7 +188,6 @@ export interface DataflowGraphVertexUse extends DataflowGraphVertexBase {
185
188
  * Arguments required to construct a vertex which represents the call to a function in the {@link DataflowGraph|dataflow graph}.
186
189
  * This describes all kinds of function calls, including calls to built-ins and control-flow structures such as `if` or `for` (they are
187
190
  * treated as function calls in R).
188
- *
189
191
  * @see {@link isFunctionCallVertex} - to check if a vertex is a function call vertex
190
192
  */
191
193
  export interface DataflowGraphVertexFunctionCall extends DataflowGraphVertexBase {
@@ -210,7 +212,6 @@ export interface DataflowGraphVertexFunctionCall extends DataflowGraphVertexBase
210
212
  export type FunctionOriginInformation = BuiltInMappingName | string;
211
213
  /**
212
214
  * Arguments required to construct a vertex which represents the definition of a variable in the {@link DataflowGraph|dataflow graph}.
213
- *
214
215
  * @see {@link isVariableDefinitionVertex} - to check if a vertex is a variable definition vertex
215
216
  */
216
217
  export interface DataflowGraphVertexVariableDefinition extends DataflowGraphVertexBase {
@@ -220,7 +221,6 @@ export interface DataflowGraphVertexVariableDefinition extends DataflowGraphVert
220
221
  }
221
222
  /**
222
223
  * Arguments required to construct a vertex which represents the definition of a function in the {@link DataflowGraph|dataflow graph}.
223
- *
224
224
  * @see {@link isFunctionDefinitionVertex} - to check if a vertex is a function definition vertex
225
225
  */
226
226
  export interface DataflowGraphVertexFunctionDefinition extends DataflowGraphVertexBase {
@@ -20,15 +20,20 @@ var VertexType;
20
20
  })(VertexType || (exports.VertexType = VertexType = {}));
21
21
  exports.ValidVertexTypes = new Set(Object.values(VertexType));
22
22
  exports.ValidVertexTypeReverse = Object.fromEntries(Object.entries(VertexType).map(([k, v]) => [v, k]));
23
+ /**
24
+ * Type guard to check whether {@link identifier} is a {@link NamedArgumentId}.
25
+ */
23
26
  function isNamedArgumentId(identifier) {
24
27
  return 'lexeme' in identifier;
25
28
  }
29
+ /**
30
+ * Type guard to check whether {@link index} is a {@link ContainerParentIndex}.
31
+ */
26
32
  function isParentContainerIndex(index) {
27
33
  return 'subIndices' in index;
28
34
  }
29
35
  /**
30
36
  * Checks whether {@link index} is accessed by {@link accessLexeme}.
31
- *
32
37
  * @param index - The {@link ContainerIndex}, which is accessed
33
38
  * @param accessLexeme - The access lexeme
34
39
  * @param isIndexBasedAccess - Whether the index of the {@link ContainerIndex} is accessed i.e. the position in the container and not e.g. the name of the index
@@ -43,6 +48,9 @@ function isAccessed(index, accessLexeme, isIndexBasedAccess) {
43
48
  }
44
49
  return false;
45
50
  }
51
+ /**
52
+ * Checks whether two {@link ContainerIndex|container indices} are the same.
53
+ */
46
54
  function isSameIndex(a, b) {
47
55
  if (isNamedArgumentId(a.identifier) && isNamedArgumentId(b.identifier)) {
48
56
  return a.identifier.lexeme === b.identifier.lexeme;
@@ -8,7 +8,6 @@ import type { GenericDifferenceInformation, WriteableDifferenceReport } from '..
8
8
  * A control dependency links a vertex to the control flow element which
9
9
  * may have an influence on its execution.
10
10
  * Within `if(p) a else b`, `a` and `b` have a control dependency on the `if` (which in turn decides based on `p`).
11
- *
12
11
  * @see {@link happensInEveryBranch} - to check whether a list of control dependencies is exhaustive
13
12
  */
14
13
  export interface ControlDependency {
@@ -16,10 +15,11 @@ export interface ControlDependency {
16
15
  readonly id: NodeId;
17
16
  /** when does this control dependency trigger (if the condition is true or false)? */
18
17
  readonly when?: boolean;
18
+ /** whether this control dependency was created due to iteration (e.g., a loop) */
19
+ readonly byIteration?: boolean;
19
20
  }
20
21
  /**
21
22
  * Classifies the type of exit point encountered.
22
- *
23
23
  * @see {@link ExitPoint}
24
24
  */
25
25
  export declare const enum ExitPointType {
@@ -35,7 +35,6 @@ export declare const enum ExitPointType {
35
35
  /**
36
36
  * An exit point describes the position which ends the current control flow structure.
37
37
  * This may be as innocent as the last expression or explicit with a `return`/`break`/`next`.
38
- *
39
38
  * @see {@link ExitPointType} - for the different types of exit points
40
39
  * @see {@link addNonDefaultExitPoints} - to easily modify lists of exit points
41
40
  * @see {@link alwaysExits} - to check whether a list of control dependencies always triggers an exit
@@ -49,7 +48,6 @@ export interface ExitPoint {
49
48
  /**
50
49
  * Control dependencies which influence if the exit point triggers
51
50
  * (e.g., if the `return` is contained within an `if` statement).
52
- *
53
51
  * @see {@link happensInEveryBranch} - to check whether control dependencies are exhaustive
54
52
  */
55
53
  readonly controlDependencies: ControlDependency[] | undefined;
@@ -73,7 +71,6 @@ export interface DataflowCfgInformation {
73
71
  * to produce a new state of the dataflow information.
74
72
  *
75
73
  * You may initialize a new dataflow information with {@link initializeCleanDataflowInformation}.
76
- *
77
74
  * @see {@link DataflowCfgInformation} - the control flow aspects
78
75
  */
79
76
  export interface DataflowInformation extends DataflowCfgInformation {
@@ -82,19 +79,16 @@ export interface DataflowInformation extends DataflowCfgInformation {
82
79
  *
83
80
  * For example, when we analyze the `x` vertex in `x <- 3`, we will first create an unknown reference for `x`
84
81
  * as we have not yet seen the assignment!
85
- *
86
82
  * @see {@link IdentifierReference} - a reference on a variable, parameter, function call, ...
87
83
  */
88
84
  unknownReferences: readonly IdentifierReference[];
89
85
  /**
90
86
  * References which are read within the current subtree.
91
- *
92
87
  * @see {@link IdentifierReference} - a reference on a variable, parameter, function call, ...
93
- * */
88
+ */
94
89
  in: readonly IdentifierReference[];
95
90
  /**
96
91
  * References which are written to within the current subtree
97
- *
98
92
  * @see {@link IdentifierReference} - a reference on a variable, parameter, function call, ...
99
93
  */
100
94
  out: readonly IdentifierReference[];
@@ -106,7 +100,6 @@ export interface DataflowInformation extends DataflowCfgInformation {
106
100
  /**
107
101
  * Initializes an empty {@link DataflowInformation} object with the given entry point and data.
108
102
  * This is to be used as a "starting point" when processing leaf nodes during the dataflow extraction.
109
- *
110
103
  * @see {@link DataflowInformation}
111
104
  */
112
105
  export declare function initializeCleanDataflowInformation<T>(entryPoint: NodeId, data: Pick<DataflowProcessorInformation<T>, 'environment' | 'builtInEnvironment' | 'completeAst'>): DataflowInformation;
@@ -124,5 +117,11 @@ export declare function alwaysExits(data: DataflowInformation): boolean;
124
117
  * Filters out exit points which end their cascade within a loop.
125
118
  */
126
119
  export declare function filterOutLoopExitPoints(exitPoints: readonly ExitPoint[]): readonly ExitPoint[];
120
+ /**
121
+ * Calculates the difference between two control dependencies.
122
+ */
127
123
  export declare function diffControlDependency<Report extends WriteableDifferenceReport>(a: ControlDependency | undefined, b: ControlDependency | undefined, info: GenericDifferenceInformation<Report>): void;
124
+ /**
125
+ * Calculates the difference between two lists of control dependencies.
126
+ */
128
127
  export declare function diffControlDependencies<Report extends WriteableDifferenceReport>(a: ControlDependency[] | undefined, b: ControlDependency[] | undefined, info: GenericDifferenceInformation<Report>): void;
package/dataflow/info.js CHANGED
@@ -17,7 +17,6 @@ function addNonDefaultExitPoints(existing, add) {
17
17
  /**
18
18
  * Initializes an empty {@link DataflowInformation} object with the given entry point and data.
19
19
  * This is to be used as a "starting point" when processing leaf nodes during the dataflow extraction.
20
- *
21
20
  * @see {@link DataflowInformation}
22
21
  */
23
22
  function initializeCleanDataflowInformation(entryPoint, data) {
@@ -69,6 +68,9 @@ function alwaysExits(data) {
69
68
  function filterOutLoopExitPoints(exitPoints) {
70
69
  return exitPoints.filter(({ type }) => type === 1 /* ExitPointType.Return */ || type === 0 /* ExitPointType.Default */);
71
70
  }
71
+ /**
72
+ * Calculates the difference between two control dependencies.
73
+ */
72
74
  function diffControlDependency(a, b, info) {
73
75
  if (a === undefined || b === undefined) {
74
76
  if (a !== b) {
@@ -83,6 +85,9 @@ function diffControlDependency(a, b, info) {
83
85
  info.report.addComment(`${info.position}Different control dependency when. ${info.leftname}: ${a.when} vs. ${info.rightname}: ${b.when}`);
84
86
  }
85
87
  }
88
+ /**
89
+ * Calculates the difference between two lists of control dependencies.
90
+ */
86
91
  function diffControlDependencies(a, b, info) {
87
92
  if (a === undefined || b === undefined) {
88
93
  if (a !== b) {
@@ -1,22 +1,33 @@
1
1
  import { DefaultMap } from '../../util/collections/defaultmap';
2
- import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
3
- import type { IdentifierReference } from '../environments/identifier';
4
- import type { DataflowGraph, FunctionArgument } from '../graph/graph';
2
+ import { type NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
3
+ import { type IdentifierReference } from '../environments/identifier';
4
+ import { type DataflowGraph, type FunctionArgument } from '../graph/graph';
5
5
  import type { RParameter } from '../../r-bridge/lang-4.x/ast/model/nodes/r-parameter';
6
6
  import type { AstIdMap, ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
7
- import type { DataflowGraphVertexFunctionCall, DataflowGraphVertexFunctionDefinition, DataflowGraphVertexInfo } from '../graph/vertex';
8
- import type { BuiltIn } from '../environments/built-in';
7
+ import { type DataflowGraphVertexFunctionCall, type DataflowGraphVertexFunctionDefinition, type DataflowGraphVertexInfo } from '../graph/vertex';
8
+ import { type BuiltIn } from '../environments/built-in';
9
9
  import type { REnvironmentInformation } from '../environments/environment';
10
10
  import type { ExitPoint } from '../info';
11
11
  export type NameIdMap = DefaultMap<string, IdentifierReference[]>;
12
+ /**
13
+ * Find all reads within the graph that do not reference a local definition in the graph.
14
+ */
12
15
  export declare function findNonLocalReads(graph: DataflowGraph, ignore: readonly IdentifierReference[]): IdentifierReference[];
16
+ /**
17
+ * Produces a map from names to all identifier references sharing that name.
18
+ */
13
19
  export declare function produceNameSharedIdMap(references: IdentifierReference[]): NameIdMap;
20
+ /**
21
+ * Links the given arguments to the given parameters within the given graph.
22
+ */
14
23
  export declare function linkArgumentsOnCall(args: FunctionArgument[], params: RParameter<ParentInformation>[], graph: DataflowGraph): void;
24
+ /**
25
+ * Links a function call with a single target function definition.
26
+ */
15
27
  export declare function linkFunctionCallWithSingleTarget(graph: DataflowGraph, def: DataflowGraphVertexFunctionDefinition, info: DataflowGraphVertexFunctionCall, idMap: AstIdMap): void;
16
28
  /**
17
29
  * Returns the called functions within the current graph, which can be used to merge the environments with the call.
18
30
  * Furthermore, it links the corresponding arguments.
19
- *
20
31
  * @param graph - The graph to use for search and resolution traversals (ideally a superset of the `thisGraph`)
21
32
  * @param idMap - The map to resolve ids to names
22
33
  * @param thisGraph - The graph to search for function calls in
@@ -29,20 +40,22 @@ export declare function linkFunctionCalls(graph: DataflowGraph, idMap: AstIdMap,
29
40
  * convenience function returning all known call targets, as well as the name source which defines them
30
41
  */
31
42
  export declare function getAllFunctionCallTargets(call: NodeId, graph: DataflowGraph, environment?: REnvironmentInformation): NodeId[];
43
+ /**
44
+ * Finds all linked function definitions starting from the given set of read ids.
45
+ */
32
46
  export declare function getAllLinkedFunctionDefinitions(functionDefinitionReadIds: ReadonlySet<NodeId>, dataflowGraph: DataflowGraph): [Set<DataflowGraphVertexInfo>, Set<BuiltIn>];
33
47
  /**
34
48
  * This method links a set of read variables to definitions in an environment.
35
- *
36
49
  * @param referencesToLinkAgainstEnvironment - The set of references to link against the environment
37
50
  * @param environmentInformation - The environment information to link against
38
51
  * @param givenInputs - The existing list of inputs that might be extended
39
52
  * @param graph - The graph to enter the found links
40
53
  * @param maybeForRemaining - Each input that can not be linked, will be added to `givenInputs`. If this flag is `true`, it will be marked as `maybe`.
41
- *
42
54
  * @returns the given inputs, possibly extended with the remaining inputs (those of `referencesToLinkAgainstEnvironment` that could not be linked against the environment)
43
55
  */
44
56
  export declare function linkInputs(referencesToLinkAgainstEnvironment: readonly IdentifierReference[], environmentInformation: REnvironmentInformation, givenInputs: IdentifierReference[], graph: DataflowGraph, maybeForRemaining: boolean): IdentifierReference[];
45
- /** all loops variables which are open read (not already bound by a redefinition within the loop) get a maybe read marker to their last definition within the loop
57
+ /**
58
+ * all loops variables which are open read (not already bound by a redefinition within the loop) get a maybe read marker to their last definition within the loop
46
59
  * e.g. with:
47
60
  * ```R
48
61
  * for(i in 1:10) {
@@ -52,4 +65,7 @@ export declare function linkInputs(referencesToLinkAgainstEnvironment: readonly
52
65
  * `x_2` must get a read marker to `x_1` as `x_1` is the active redefinition in the second loop iteration.
53
66
  */
54
67
  export declare function linkCircularRedefinitionsWithinALoop(graph: DataflowGraph, openIns: NameIdMap, outgoing: readonly IdentifierReference[]): void;
68
+ /**
69
+ * Reapplies the loop exit points' control dependencies to the given identifier references.
70
+ */
55
71
  export declare function reapplyLoopExitPoints(exits: readonly ExitPoint[], references: readonly IdentifierReference[]): void;
@@ -24,6 +24,9 @@ const vertex_1 = require("../graph/vertex");
24
24
  const resolve_by_name_1 = require("../environments/resolve-by-name");
25
25
  const built_in_1 = require("../environments/built-in");
26
26
  const prefix_1 = require("../../util/prefix");
27
+ /**
28
+ * Find all reads within the graph that do not reference a local definition in the graph.
29
+ */
27
30
  function findNonLocalReads(graph, ignore) {
28
31
  const ignores = new Set(ignore.map(i => i.nodeId));
29
32
  const ids = new Set(graph.vertices(true)
@@ -64,6 +67,9 @@ function findNonLocalReads(graph, ignore) {
64
67
  }
65
68
  return nonLocalReads;
66
69
  }
70
+ /**
71
+ * Produces a map from names to all identifier references sharing that name.
72
+ */
67
73
  function produceNameSharedIdMap(references) {
68
74
  const nameIdShares = new defaultmap_1.DefaultMap(() => []);
69
75
  for (const reference of references) {
@@ -73,6 +79,9 @@ function produceNameSharedIdMap(references) {
73
79
  }
74
80
  return nameIdShares;
75
81
  }
82
+ /**
83
+ * Links the given arguments to the given parameters within the given graph.
84
+ */
76
85
  function linkArgumentsOnCall(args, params, graph) {
77
86
  const nameArgMap = new Map(args.filter(graph_1.isNamedArgument).map(a => [a.name, a]));
78
87
  const nameParamMap = new Map(params.filter(p => p?.name?.content !== undefined).map(p => [p.name.content, p]));
@@ -136,6 +145,9 @@ function linkFunctionCallArguments(targetId, idMap, functionCallName, functionRo
136
145
  (0, log_1.expensiveTrace)(logger_1.dataflowLogger, () => `linking arguments for ${functionCallName} (${functionRootId}) to ${JSON.stringify(linkedFunction.location)}`);
137
146
  linkArgumentsOnCall(callArgs, linkedFunction.parameters, finalGraph);
138
147
  }
148
+ /**
149
+ * Links a function call with a single target function definition.
150
+ */
139
151
  function linkFunctionCallWithSingleTarget(graph, def, info, idMap) {
140
152
  const id = info.id;
141
153
  if (info.environment !== undefined) {
@@ -184,7 +196,6 @@ function linkFunctionCall(graph, id, info, idMap, thisGraph, calledFunctionDefin
184
196
  /**
185
197
  * Returns the called functions within the current graph, which can be used to merge the environments with the call.
186
198
  * Furthermore, it links the corresponding arguments.
187
- *
188
199
  * @param graph - The graph to use for search and resolution traversals (ideally a superset of the `thisGraph`)
189
200
  * @param idMap - The map to resolve ids to names
190
201
  * @param thisGraph - The graph to search for function calls in
@@ -226,6 +237,9 @@ function getAllFunctionCallTargets(call, graph, environment) {
226
237
  }
227
238
  return found;
228
239
  }
240
+ /**
241
+ * Finds all linked function definitions starting from the given set of read ids.
242
+ */
229
243
  function getAllLinkedFunctionDefinitions(functionDefinitionReadIds, dataflowGraph) {
230
244
  let potential = [...functionDefinitionReadIds];
231
245
  const visited = new Set();
@@ -247,7 +261,7 @@ function getAllLinkedFunctionDefinitions(functionDefinitionReadIds, dataflowGrap
247
261
  const returnEdges = outgoingEdges.filter(([_, e]) => (0, edge_1.edgeIncludesType)(e.types, edge_1.EdgeType.Returns));
248
262
  if (returnEdges.length > 0) {
249
263
  // only traverse return edges and do not follow `calls` etc. as this indicates that we have a function call which returns a result, and not the function calls itself
250
- potential = potential.concat(...returnEdges.map(([target]) => target).filter(id => !visited.has(id)));
264
+ potential = potential.concat(returnEdges.map(([target]) => target).filter(id => !visited.has(id)));
251
265
  continue;
252
266
  }
253
267
  const followBits = edge_1.EdgeType.Reads | edge_1.EdgeType.DefinedBy | edge_1.EdgeType.DefinedByOnCall;
@@ -262,13 +276,11 @@ function getAllLinkedFunctionDefinitions(functionDefinitionReadIds, dataflowGrap
262
276
  }
263
277
  /**
264
278
  * This method links a set of read variables to definitions in an environment.
265
- *
266
279
  * @param referencesToLinkAgainstEnvironment - The set of references to link against the environment
267
280
  * @param environmentInformation - The environment information to link against
268
281
  * @param givenInputs - The existing list of inputs that might be extended
269
282
  * @param graph - The graph to enter the found links
270
283
  * @param maybeForRemaining - Each input that can not be linked, will be added to `givenInputs`. If this flag is `true`, it will be marked as `maybe`.
271
- *
272
284
  * @returns the given inputs, possibly extended with the remaining inputs (those of `referencesToLinkAgainstEnvironment` that could not be linked against the environment)
273
285
  */
274
286
  function linkInputs(referencesToLinkAgainstEnvironment, environmentInformation, givenInputs, graph, maybeForRemaining) {
@@ -298,7 +310,8 @@ function linkInputs(referencesToLinkAgainstEnvironment, environmentInformation,
298
310
  // data.graph.get(node.id).definedAtPosition = false
299
311
  return givenInputs;
300
312
  }
301
- /** all loops variables which are open read (not already bound by a redefinition within the loop) get a maybe read marker to their last definition within the loop
313
+ /**
314
+ * all loops variables which are open read (not already bound by a redefinition within the loop) get a maybe read marker to their last definition within the loop
302
315
  * e.g. with:
303
316
  * ```R
304
317
  * for(i in 1:10) {
@@ -326,6 +339,9 @@ function linkCircularRedefinitionsWithinALoop(graph, openIns, outgoing) {
326
339
  }
327
340
  }
328
341
  }
342
+ /**
343
+ * Reapplies the loop exit points' control dependencies to the given identifier references.
344
+ */
329
345
  function reapplyLoopExitPoints(exits, references) {
330
346
  // just apply the cds of all exit points not already present
331
347
  const exitCds = new Set(exits.flatMap(e => e.controlDependencies).filter(assert_1.isNotUndefined));
@@ -333,11 +349,11 @@ function reapplyLoopExitPoints(exits, references) {
333
349
  for (const cd of exitCds) {
334
350
  if (ref.controlDependencies) {
335
351
  if (!ref.controlDependencies?.find(c => c.id === cd.id && c.when === cd.when)) {
336
- ref.controlDependencies.push(cd);
352
+ ref.controlDependencies.push({ ...cd, byIteration: true });
337
353
  }
338
354
  }
339
355
  else {
340
- ref.controlDependencies = [cd];
356
+ ref.controlDependencies = [{ ...cd, byIteration: true }];
341
357
  }
342
358
  }
343
359
  }
@@ -2,5 +2,11 @@ import type { RNode } from '../../../../../../r-bridge/lang-4.x/ast/model/model'
2
2
  import type { AstIdMap, ParentInformation } from '../../../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
3
3
  import { EmptyArgument } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
4
4
  import type { RUnnamedArgument } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-argument';
5
+ /**
6
+ *
7
+ */
5
8
  export declare function toUnnamedArgument<OtherInfo>(node: RNode<OtherInfo & ParentInformation> | undefined, idMap: AstIdMap<OtherInfo>): RUnnamedArgument<OtherInfo & ParentInformation> | typeof EmptyArgument;
9
+ /**
10
+ *
11
+ */
6
12
  export declare function wrapArgumentsUnnamed<OtherInfo>(nodes: readonly (RNode<OtherInfo & ParentInformation> | typeof EmptyArgument | undefined)[], idMap: AstIdMap<OtherInfo>): ("<>" | import("../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-argument").RArgument<OtherInfo & ParentInformation>)[];
@@ -6,6 +6,9 @@ const range_1 = require("../../../../../../util/range");
6
6
  const r_function_call_1 = require("../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-function-call");
7
7
  const type_1 = require("../../../../../../r-bridge/lang-4.x/ast/model/type");
8
8
  const voidRange = (0, range_1.rangeFrom)(-1, -1, -1, -1);
9
+ /**
10
+ *
11
+ */
9
12
  function toUnnamedArgument(node, idMap) {
10
13
  if (node === undefined) {
11
14
  return r_function_call_1.EmptyArgument;
@@ -25,6 +28,9 @@ function toUnnamedArgument(node, idMap) {
25
28
  idMap.set(arg.info.id, node);
26
29
  return arg;
27
30
  }
31
+ /**
32
+ *
33
+ */
28
34
  function wrapArgumentsUnnamed(nodes, idMap) {
29
35
  return nodes.map(n => n === r_function_call_1.EmptyArgument || n?.type === type_1.RType.Argument ? n : toUnnamedArgument(n, idMap));
30
36
  }
@@ -1,4 +1,4 @@
1
- import type { RFunctionArgument } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
1
+ import { type RFunctionArgument } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
2
2
  import type { RNode } from '../../../../../../r-bridge/lang-4.x/ast/model/model';
3
3
  /**
4
4
  * Retrieve the value from an argument, if it is not empty.
@@ -1,7 +1,7 @@
1
1
  import type { DataflowProcessorInformation } from '../../../../../processor';
2
2
  import type { DataflowInformation } from '../../../../../info';
3
3
  import type { ParentInformation } from '../../../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
4
- import type { RFunctionArgument } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
4
+ import { type RFunctionArgument } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
5
5
  import type { RSymbol } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-symbol';
6
6
  import type { NodeId } from '../../../../../../r-bridge/lang-4.x/ast/model/processing/node-id';
7
7
  import type { ForceArguments } from '../common';
@@ -19,4 +19,7 @@ import type { ForceArguments } from '../common';
19
19
  export declare function processAccess<OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>, config: {
20
20
  treatIndicesAsString: boolean;
21
21
  } & ForceArguments): DataflowInformation;
22
+ /**
23
+ *
24
+ */
22
25
  export declare function symbolArgumentsToStrings<OtherInfo>(args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], firstIndexInclusive?: number, lastIndexInclusive?: number): RFunctionArgument<OtherInfo & ParentInformation>[];
@@ -119,6 +119,9 @@ function processNumberBasedAccess(data, name, args, rootId, config, head) {
119
119
  }
120
120
  return fnCall;
121
121
  }
122
+ /**
123
+ *
124
+ */
122
125
  function symbolArgumentsToStrings(args, firstIndexInclusive = 1, lastIndexInclusive = args.length - 1) {
123
126
  const newArgs = [...args];
124
127
  // if the argument is a symbol, we convert it to a string for this perspective
@@ -201,7 +204,6 @@ function referenceAccessedIndices(newArgs, data, fnCall, rootId, isIndexBasedAcc
201
204
  /**
202
205
  * Creates edges of type {@link EdgeType.Reads} to the accessed Indices and their sub-indices starting from
203
206
  * the node with {@link parentNodeId}.
204
- *
205
207
  * @param accessedIndicesCollection - All indices that were accessed by the access operation
206
208
  * @param fnCall - The {@link ProcessKnownFunctionCallResult} of the access operation
207
209
  * @param parentNodeId - {@link NodeId} of the parent from which the edge starts
@@ -1,6 +1,6 @@
1
1
  import type { DataflowProcessorInformation } from '../../../../../processor';
2
2
  import type { DataflowInformation } from '../../../../../info';
3
- import type { RFunctionArgument } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
3
+ import { type RFunctionArgument } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
4
4
  import type { ParentInformation } from '../../../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
5
5
  import type { RSymbol } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-symbol';
6
6
  import type { NodeId } from '../../../../../../r-bridge/lang-4.x/ast/model/processing/node-id';
@@ -17,4 +17,7 @@ export interface BuiltInApplyConfiguration extends MergeableRecord {
17
17
  /** Should the value of the function be resolved? */
18
18
  readonly resolveValue?: boolean;
19
19
  }
20
+ /**
21
+ *
22
+ */
20
23
  export declare function processApply<OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>, config: BuiltInApplyConfiguration): DataflowInformation;
@@ -14,6 +14,9 @@ const general_1 = require("../../../../../eval/values/general");
14
14
  const r_value_1 = require("../../../../../eval/values/r-value");
15
15
  const log_1 = require("../../../../../../util/log");
16
16
  const alias_tracking_1 = require("../../../../../eval/resolve/alias-tracking");
17
+ /**
18
+ *
19
+ */
17
20
  function processApply(name, args, rootId, data, config) {
18
21
  const { indexOfFunction = 1, nameOfFunctionArgument, unquoteFunction, resolveInEnvironment, resolveValue } = config;
19
22
  /* as the length is one-based and the argument filter mapping is zero-based, we do not have to subtract 1 */
@@ -5,8 +5,8 @@ import type { RNode } from '../../../../../../r-bridge/lang-4.x/ast/model/model'
5
5
  import type { RSymbol } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-symbol';
6
6
  import type { RFunctionArgument } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
7
7
  import { type NodeId } from '../../../../../../r-bridge/lang-4.x/ast/model/processing/node-id';
8
- import type { InGraphIdentifierDefinition } from '../../../../../environments/identifier';
9
- import type { ContainerIndicesCollection } from '../../../../../graph/vertex';
8
+ import { type InGraphIdentifierDefinition } from '../../../../../environments/identifier';
9
+ import { type ContainerIndicesCollection } from '../../../../../graph/vertex';
10
10
  import type { ForceArguments } from '../common';
11
11
  import type { REnvironmentInformation } from '../../../../../environments/environment';
12
12
  import type { DataflowGraph } from '../../../../../graph/graph';
@@ -1,9 +1,12 @@
1
1
  import { type DataflowProcessorInformation } from '../../../../../processor';
2
- import type { DataflowInformation } from '../../../../../info';
3
- import type { ParentInformation } from '../../../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
4
- import type { RFunctionArgument } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
2
+ import { type DataflowInformation } from '../../../../../info';
3
+ import { type ParentInformation } from '../../../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
4
+ import { type RFunctionArgument } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
5
5
  import type { RSymbol } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-symbol';
6
6
  import type { NodeId } from '../../../../../../r-bridge/lang-4.x/ast/model/processing/node-id';
7
+ /**
8
+ *
9
+ */
7
10
  export declare function processEvalCall<OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>, config: {
8
11
  /** should this produce an explicit source function call in the graph? */
9
12
  includeFunctionCall?: boolean;
@@ -18,6 +18,9 @@ const string_constants_1 = require("../../../../../eval/values/string/string-con
18
18
  const unknown_side_effect_1 = require("../../../../../graph/unknown-side-effect");
19
19
  const alias_tracking_1 = require("../../../../../eval/resolve/alias-tracking");
20
20
  const arrays_1 = require("../../../../../../util/collections/arrays");
21
+ /**
22
+ *
23
+ */
21
24
  function processEvalCall(name, args, rootId, data, config) {
22
25
  if (args.length !== 1 || args[0] === r_function_call_1.EmptyArgument || !args[0].value) {
23
26
  logger_1.dataflowLogger.warn(`Expected exactly one argument for eval currently, but got ${args.length} instead, skipping`);
@@ -3,9 +3,12 @@
3
3
  * @module
4
4
  */
5
5
  import type { DataflowInformation } from '../../../../../info';
6
- import type { DataflowProcessorInformation } from '../../../../../processor';
6
+ import { type DataflowProcessorInformation } from '../../../../../processor';
7
7
  import type { NodeId } from '../../../../../../r-bridge/lang-4.x/ast/model/processing/node-id';
8
8
  import type { ParentInformation } from '../../../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
9
9
  import type { RFunctionArgument } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
10
10
  import type { RSymbol } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-symbol';
11
+ /**
12
+ *
13
+ */
11
14
  export declare function processExpressionList<OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>): DataflowInformation;
@@ -93,6 +93,9 @@ function updateSideEffectsForCalledFunctions(calledEnvs, inputEnvironment, nextG
93
93
  }
94
94
  return inputEnvironment;
95
95
  }
96
+ /**
97
+ *
98
+ */
96
99
  function processExpressionList(name, args, rootId, data) {
97
100
  const expressions = args.map(e => (0, unpack_argument_1.unpackArgument)(e));
98
101
  (0, log_1.expensiveTrace)(logger_1.dataflowLogger, () => `[expr list] with ${expressions.length} expressions`);
@@ -1,7 +1,10 @@
1
- import type { DataflowProcessorInformation } from '../../../../../processor';
2
- import type { DataflowInformation } from '../../../../../info';
1
+ import { type DataflowProcessorInformation } from '../../../../../processor';
2
+ import { type DataflowInformation } from '../../../../../info';
3
3
  import type { ParentInformation } from '../../../../../../r-bridge/lang-4.x/ast/model/processing/decorate';
4
4
  import type { RFunctionArgument } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
5
5
  import type { NodeId } from '../../../../../../r-bridge/lang-4.x/ast/model/processing/node-id';
6
6
  import type { RSymbol } from '../../../../../../r-bridge/lang-4.x/ast/model/nodes/r-symbol';
7
+ /**
8
+ *
9
+ */
7
10
  export declare function processForLoop<OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>): DataflowInformation;
@@ -15,6 +15,9 @@ const append_1 = require("../../../../../environments/append");
15
15
  const environment_1 = require("../../../../../environments/environment");
16
16
  const edge_1 = require("../../../../../graph/edge");
17
17
  const identifier_1 = require("../../../../../environments/identifier");
18
+ /**
19
+ *
20
+ */
18
21
  function processForLoop(name, args, rootId, data) {
19
22
  if (args.length !== 3) {
20
23
  logger_1.dataflowLogger.warn(`For-Loop ${name.content} does not have three arguments, skipping`);