@eagleoutice/flowr 2.9.9 → 2.9.10

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 (55) hide show
  1. package/README.md +34 -29
  2. package/abstract-interpretation/absint-visitor.d.ts +16 -14
  3. package/abstract-interpretation/absint-visitor.js +91 -46
  4. package/abstract-interpretation/data-frame/shape-inference.d.ts +2 -5
  5. package/abstract-interpretation/data-frame/shape-inference.js +4 -5
  6. package/abstract-interpretation/domains/abstract-domain.d.ts +4 -4
  7. package/abstract-interpretation/domains/abstract-domain.js +8 -8
  8. package/abstract-interpretation/domains/mapped-abstract-domain.d.ts +12 -5
  9. package/abstract-interpretation/domains/mapped-abstract-domain.js +47 -23
  10. package/abstract-interpretation/domains/state-abstract-domain.d.ts +30 -1
  11. package/abstract-interpretation/domains/state-abstract-domain.js +130 -4
  12. package/control-flow/cfg-simplification.d.ts +1 -0
  13. package/control-flow/cfg-simplification.js +1 -0
  14. package/control-flow/extract-cfg.js +33 -15
  15. package/control-flow/semantic-cfg-guided-visitor.js +1 -0
  16. package/dataflow/environments/built-in.d.ts +4 -0
  17. package/dataflow/environments/built-in.js +17 -5
  18. package/dataflow/environments/default-builtin-config.d.ts +4 -8
  19. package/dataflow/environments/default-builtin-config.js +8 -5
  20. package/dataflow/environments/reference-to-maybe.d.ts +8 -0
  21. package/dataflow/environments/reference-to-maybe.js +46 -3
  22. package/dataflow/eval/resolve/alias-tracking.d.ts +1 -1
  23. package/dataflow/eval/resolve/alias-tracking.js +4 -5
  24. package/dataflow/eval/resolve/resolve.js +8 -7
  25. package/dataflow/graph/graph.d.ts +1 -1
  26. package/dataflow/graph/graph.js +9 -10
  27. package/dataflow/graph/unknown-side-effect.js +3 -1
  28. package/dataflow/info.d.ts +4 -0
  29. package/dataflow/info.js +2 -2
  30. package/dataflow/internal/linker.d.ts +2 -2
  31. package/dataflow/internal/linker.js +52 -27
  32. package/dataflow/internal/process/functions/call/argument/make-argument.js +2 -1
  33. package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +15 -6
  34. package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +2 -2
  35. package/dataflow/internal/process/functions/call/built-in/built-in-s-seven-new-generic.js +4 -4
  36. package/dataflow/internal/process/functions/call/built-in/built-in-source.js +22 -11
  37. package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +22 -19
  38. package/dataflow/internal/process/functions/call/known-call-handling.js +0 -2
  39. package/documentation/wiki-absint.js +7 -8
  40. package/linter/rules/dead-code.js +1 -1
  41. package/linter/rules/seeded-randomness.js +1 -1
  42. package/linter/rules/unused-definition.js +1 -1
  43. package/package.json +7 -7
  44. package/project/plugins/file-plugins/files/flowr-description-file.d.ts +4 -0
  45. package/project/plugins/file-plugins/files/flowr-description-file.js +4 -0
  46. package/queries/catalog/call-context-query/call-context-query-executor.js +1 -1
  47. package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +1 -1
  48. package/queries/catalog/df-shape-query/df-shape-query-format.js +3 -3
  49. package/r-bridge/lang-4.x/ast/model/processing/decorate.js +23 -17
  50. package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +18 -17
  51. package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +31 -13
  52. package/statistics/features/supported/data-access/data-access.js +2 -2
  53. package/util/mermaid/ast.js +1 -1
  54. package/util/mermaid/dfg.js +6 -5
  55. package/util/version.js +1 -1
@@ -31,7 +31,7 @@ function normalizedAstToMermaid(ast, { prefix = 'flowchart TD\n', markStyle = in
31
31
  }
32
32
  if (n.info.parent !== undefined && (!includeOnlyIds || includeOnlyIds.has(n.info.parent))) {
33
33
  const context = n.info;
34
- const roleSuffix = context.role === "expr-list-child" /* RoleInParent.ExpressionListChild */ || context.role === "call-arg" /* RoleInParent.FunctionCallArgument */ || context.role === "param" /* RoleInParent.FunctionDefinitionParameter */ ? `-${context.index}` : '';
34
+ const roleSuffix = context.role === "el-c" /* RoleInParent.ExpressionListChild */ || context.role === "call-arg" /* RoleInParent.FunctionCallArgument */ || context.role === "param" /* RoleInParent.FunctionDefinitionParameter */ ? `-${context.index}` : '';
35
35
  output += ` n${n.info.parent} -->|"${context.role}${roleSuffix}"| n${n.info.id}\n`;
36
36
  }
37
37
  if (n.type === type_1.RType.ExpressionList && n.grouping !== undefined) {
@@ -134,6 +134,7 @@ function printEnvironmentToLines(env) {
134
134
  function vertexToMermaid(info, mermaid, id, idPrefix, mark, includeOnlyIds) {
135
135
  const fCall = info.tag === vertex_1.VertexType.FunctionCall;
136
136
  const { open, close } = mermaidNodeBrackets(info.tag);
137
+ const origId = id;
137
138
  id = (0, mermaid_1.escapeId)(id);
138
139
  if (info.environment && mermaid.includeEnvironments) {
139
140
  if (info.environment.level > 0 || info.environment.current.memory.size !== 0) {
@@ -157,17 +158,17 @@ function vertexToMermaid(info, mermaid, id, idPrefix, mark, includeOnlyIds) {
157
158
  if (mark?.has(id)) {
158
159
  mermaid.nodeLines.push(` style ${idPrefix}${id} ${mermaid.markStyle.vertex} `);
159
160
  }
160
- if ([...mermaid.rootGraph.unknownSideEffects].some(l => (0, node_id_1.normalizeIdToNumberIfPossible)(l) === (0, node_id_1.normalizeIdToNumberIfPossible)(id))) {
161
+ if (mermaid.rootGraph.unknownSideEffects.values().some(l => (0, node_id_1.normalizeIdToNumberIfPossible)(l) === (0, node_id_1.normalizeIdToNumberIfPossible)(origId))) {
161
162
  mermaid.nodeLines.push(` style ${idPrefix}${id} stroke:red,stroke-width:5px; `);
162
163
  }
163
- const edges = mermaid.rootGraph.get((0, node_id_1.normalizeIdToNumberIfPossible)(id), true);
164
+ const edges = mermaid.rootGraph.outgoingEdges((0, node_id_1.normalizeIdToNumberIfPossible)(origId));
164
165
  if (edges === undefined) {
165
166
  mermaid.nodeLines.push(' %% No edges found for ' + id);
166
167
  return;
167
168
  }
168
- const artificialCdEdges = (info.cds ?? []).map(x => [x.id, { types: new Set([x.when ? 'CD-True' : 'CD-False']) }]);
169
+ const artificialCdEdges = (info.cds ?? []).map(x => [x.id, { types: new Set([x.when ? 'CD-True' : 'CD-False']), file: x.file }]);
169
170
  // eslint-disable-next-line prefer-const
170
- for (let [target, edge] of [...edges[1], ...artificialCdEdges]) {
171
+ for (let [target, edge] of [...edges, ...artificialCdEdges]) {
171
172
  if (includeOnlyIds && !includeOnlyIds.has(target)) {
172
173
  continue;
173
174
  }
@@ -178,7 +179,7 @@ function vertexToMermaid(info, mermaid, id, idPrefix, mark, includeOnlyIds) {
178
179
  if (!mermaid.presentEdges.has(edgeId)) {
179
180
  mermaid.presentEdges.add(edgeId);
180
181
  const style = (0, built_in_1.isBuiltIn)(target) ? '-.->' : '-->';
181
- mermaid.edgeLines.push(` ${idPrefix}${id} ${style}|"${[...edgeTypes].map(e => typeof e === 'number' ? edge_1.DfEdge.typeToName(e) : e).join(', ')}"| ${idPrefix}${target}`);
182
+ mermaid.edgeLines.push(` ${idPrefix}${id} ${style}|"${[...edgeTypes].map(e => typeof e === 'number' ? edge_1.DfEdge.typeToName(e) : e).join(', ')}${'file' in edge && edge.file ? `, from: ${edge.file}` : ''}"| ${idPrefix}${target}`);
182
183
  if (mermaid.mark?.has(id + '->' + target)) {
183
184
  // who invented this syntax?!
184
185
  mermaid.edgeLines.push(` linkStyle ${mermaid.presentEdges.size - 1} ${mermaid.markStyle.edge}`);
package/util/version.js CHANGED
@@ -6,7 +6,7 @@ exports.printVersionInformation = printVersionInformation;
6
6
  const semver_1 = require("semver");
7
7
  const assert_1 = require("./assert");
8
8
  // this is automatically replaced with the current version by release-it
9
- const version = '2.9.9';
9
+ const version = '2.9.10';
10
10
  /**
11
11
  * Retrieves the current flowR version as a new {@link SemVer} object.
12
12
  */