@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.
- package/README.md +131 -30
- package/abstract-interpretation/data-frame/absint-info.d.ts +1 -1
- package/abstract-interpretation/data-frame/absint-visitor.d.ts +2 -3
- package/abstract-interpretation/data-frame/absint-visitor.js +15 -10
- package/abstract-interpretation/data-frame/dataframe-domain.d.ts +18 -12
- package/abstract-interpretation/data-frame/dataframe-domain.js +25 -13
- package/abstract-interpretation/data-frame/mappers/access-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/access-mapper.js +0 -1
- package/abstract-interpretation/data-frame/mappers/arguments.d.ts +1 -10
- package/abstract-interpretation/data-frame/mappers/arguments.js +0 -7
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.js +0 -1
- package/abstract-interpretation/data-frame/mappers/function-mapper.d.ts +4 -5
- package/abstract-interpretation/data-frame/mappers/function-mapper.js +3 -4
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.js +0 -1
- package/abstract-interpretation/data-frame/resolve-args.d.ts +1 -1
- package/abstract-interpretation/data-frame/semantics.d.ts +3 -4
- package/abstract-interpretation/data-frame/semantics.js +171 -162
- package/abstract-interpretation/data-frame/shape-inference.d.ts +1 -4
- package/abstract-interpretation/data-frame/shape-inference.js +7 -9
- package/abstract-interpretation/domains/abstract-domain.d.ts +59 -18
- package/abstract-interpretation/domains/abstract-domain.js +74 -1
- package/abstract-interpretation/domains/bounded-set-domain.d.ts +37 -24
- package/abstract-interpretation/domains/bounded-set-domain.js +70 -47
- package/abstract-interpretation/domains/interval-domain.d.ts +33 -25
- package/abstract-interpretation/domains/interval-domain.js +109 -50
- package/abstract-interpretation/domains/lattice.d.ts +19 -11
- package/abstract-interpretation/domains/mapped-abstract-domain.d.ts +34 -0
- package/abstract-interpretation/domains/mapped-abstract-domain.js +189 -0
- package/abstract-interpretation/domains/positive-interval-domain.d.ts +16 -12
- package/abstract-interpretation/domains/positive-interval-domain.js +20 -11
- package/abstract-interpretation/domains/product-domain.d.ts +18 -23
- package/abstract-interpretation/domains/product-domain.js +11 -19
- package/abstract-interpretation/domains/satisfiable-domain.d.ts +29 -0
- package/abstract-interpretation/domains/satisfiable-domain.js +24 -0
- package/abstract-interpretation/domains/set-upper-bound-domain.d.ts +54 -0
- package/abstract-interpretation/domains/set-upper-bound-domain.js +197 -0
- package/abstract-interpretation/domains/singleton-domain.d.ts +24 -19
- package/abstract-interpretation/domains/singleton-domain.js +52 -37
- package/abstract-interpretation/domains/state-abstract-domain.d.ts +8 -24
- package/abstract-interpretation/domains/state-abstract-domain.js +2 -167
- package/abstract-interpretation/normalized-ast-fold.d.ts +1 -7
- package/abstract-interpretation/normalized-ast-fold.js +0 -5
- package/benchmark/slicer.d.ts +3 -7
- package/benchmark/slicer.js +14 -19
- package/benchmark/stats/print.d.ts +6 -0
- package/benchmark/stats/print.js +6 -0
- package/benchmark/stats/size-of.d.ts +0 -1
- package/benchmark/stats/size-of.js +0 -1
- package/benchmark/stats/stats.d.ts +2 -2
- package/benchmark/stopwatch.d.ts +11 -13
- package/benchmark/stopwatch.js +11 -13
- package/benchmark/summarizer/first-phase/input.d.ts +6 -0
- package/benchmark/summarizer/first-phase/input.js +6 -0
- package/benchmark/summarizer/first-phase/process.d.ts +13 -1
- package/benchmark/summarizer/first-phase/process.js +12 -0
- package/benchmark/summarizer/second-phase/graph.d.ts +3 -0
- package/benchmark/summarizer/second-phase/graph.js +3 -0
- package/benchmark/summarizer/second-phase/process.d.ts +12 -0
- package/benchmark/summarizer/second-phase/process.js +12 -0
- package/benchmark/summarizer/summarizer.d.ts +1 -2
- package/cli/benchmark-app.js +0 -2
- package/cli/common/features.d.ts +7 -1
- package/cli/common/features.js +6 -0
- package/cli/common/script.d.ts +3 -1
- package/cli/common/script.js +3 -1
- package/cli/common/scripts-info.d.ts +3 -1
- package/cli/common/scripts-info.js +3 -0
- package/cli/flowr-main-options.d.ts +3 -0
- package/cli/flowr-main-options.js +3 -0
- package/cli/repl/commands/repl-commands.d.ts +13 -0
- package/cli/repl/commands/repl-commands.js +13 -2
- package/cli/repl/commands/repl-execute.d.ts +4 -0
- package/cli/repl/commands/repl-execute.js +6 -2
- package/cli/repl/commands/repl-main.d.ts +15 -9
- package/cli/repl/commands/repl-parse.js +2 -2
- package/cli/repl/commands/repl-query.js +16 -5
- package/cli/repl/core.d.ts +24 -6
- package/cli/repl/core.js +28 -19
- package/cli/repl/execute.d.ts +0 -2
- package/cli/repl/execute.js +0 -2
- package/cli/repl/parser/slice-query-parser.d.ts +14 -0
- package/cli/repl/parser/slice-query-parser.js +34 -0
- package/cli/repl/print-version.d.ts +6 -0
- package/cli/repl/print-version.js +6 -0
- package/cli/repl/server/compact.d.ts +8 -0
- package/cli/repl/server/compact.js +8 -0
- package/cli/repl/server/connection.d.ts +4 -3
- package/cli/repl/server/connection.js +3 -31
- package/cli/repl/server/messages/all-messages.d.ts +1 -3
- package/cli/repl/server/messages/all-messages.js +0 -1
- package/cli/repl/server/messages/message-analysis.d.ts +0 -2
- package/cli/repl/server/messages/message-query.d.ts +1 -1
- package/cli/repl/server/messages/message-repl.d.ts +0 -1
- package/cli/repl/server/send.d.ts +6 -0
- package/cli/repl/server/send.js +6 -0
- package/cli/repl/server/server.d.ts +1 -1
- package/cli/repl/server/validate.d.ts +10 -1
- package/cli/repl/server/validate.js +9 -0
- package/cli/run-script.d.ts +1 -2
- package/cli/run-script.js +0 -1
- package/cli/script-core/statistics-core.d.ts +3 -0
- package/cli/script-core/statistics-core.js +3 -0
- package/cli/script-core/statistics-helper-core.d.ts +4 -1
- package/cli/script-core/statistics-helper-core.js +3 -0
- package/cli/script-core/summarizer-core.d.ts +3 -0
- package/cli/script-core/summarizer-core.js +3 -0
- package/cli/summarizer-app.d.ts +2 -3
- package/cli/summarizer-app.js +2 -3
- package/config.d.ts +17 -3
- package/config.js +15 -0
- package/control-flow/basic-cfg-guided-visitor.d.ts +1 -2
- package/control-flow/basic-cfg-guided-visitor.js +0 -1
- package/control-flow/cfg-to-basic-blocks.d.ts +1 -1
- package/control-flow/control-flow-graph.d.ts +20 -12
- package/control-flow/control-flow-graph.js +16 -4
- package/control-flow/dfg-cfg-guided-visitor.d.ts +2 -3
- package/control-flow/diff-cfg.d.ts +3 -5
- package/control-flow/diff-cfg.js +0 -1
- package/control-flow/extract-cfg.d.ts +3 -6
- package/control-flow/extract-cfg.js +0 -3
- package/control-flow/happens-before.d.ts +1 -1
- package/control-flow/semantic-cfg-guided-visitor.d.ts +2 -31
- package/control-flow/semantic-cfg-guided-visitor.js +0 -28
- package/control-flow/simple-visitor.d.ts +1 -3
- package/control-flow/simple-visitor.js +0 -2
- package/control-flow/syntax-cfg-guided-visitor.d.ts +1 -2
- package/control-flow/useless-loop.d.ts +0 -3
- package/control-flow/useless-loop.js +2 -5
- package/core/pipeline-executor.d.ts +8 -16
- package/core/pipeline-executor.js +9 -18
- package/core/print/dataflow-printer.d.ts +19 -0
- package/core/print/dataflow-printer.js +19 -0
- package/core/print/normalize-printer.d.ts +21 -1
- package/core/print/normalize-printer.js +20 -0
- package/core/print/parse-printer.d.ts +6 -1
- package/core/print/parse-printer.js +5 -0
- package/core/print/print.d.ts +0 -1
- package/core/print/print.js +0 -1
- package/core/print/slice-diff-ansi.d.ts +3 -0
- package/core/print/slice-diff-ansi.js +3 -0
- package/core/steps/all/core/00-parse.d.ts +1 -1
- package/core/steps/all/core/01-parse-tree-sitter.d.ts +1 -11
- package/core/steps/all/core/10-normalize.d.ts +3 -0
- package/core/steps/all/core/10-normalize.js +3 -0
- package/core/steps/all/core/11-normalize-tree-sitter.d.ts +4 -3
- package/core/steps/pipeline/create-pipeline.d.ts +1 -1
- package/core/steps/pipeline/default-pipelines.d.ts +47 -47
- package/core/steps/pipeline/default-pipelines.js +0 -4
- package/core/steps/pipeline/pipeline.d.ts +1 -8
- package/core/steps/pipeline/pipeline.js +1 -3
- package/core/steps/pipeline-step.d.ts +0 -1
- package/core/steps/pipeline-step.js +0 -1
- package/dataflow/cluster.d.ts +3 -0
- package/dataflow/cluster.js +3 -0
- package/dataflow/environments/append.d.ts +1 -1
- package/dataflow/environments/built-in-config.d.ts +1 -5
- package/dataflow/environments/built-in-config.js +0 -1
- package/dataflow/environments/built-in.d.ts +10 -5
- package/dataflow/environments/built-in.js +6 -1
- package/dataflow/environments/clone.d.ts +1 -1
- package/dataflow/environments/default-builtin-config.d.ts +3 -0
- package/dataflow/environments/default-builtin-config.js +4 -1
- package/dataflow/environments/diff.d.ts +11 -2
- package/dataflow/environments/diff.js +9 -0
- package/dataflow/environments/environment.d.ts +3 -3
- package/dataflow/environments/environment.js +8 -6
- package/dataflow/environments/identifier.d.ts +0 -4
- package/dataflow/environments/identifier.js +0 -1
- package/dataflow/environments/overwrite.d.ts +4 -1
- package/dataflow/environments/overwrite.js +3 -0
- package/dataflow/environments/resolve-by-name.d.ts +4 -4
- package/dataflow/environments/resolve-by-name.js +3 -2
- package/dataflow/environments/scoping.d.ts +4 -1
- package/dataflow/environments/scoping.js +3 -0
- package/dataflow/eval/resolve/alias-tracking.d.ts +4 -10
- package/dataflow/eval/resolve/alias-tracking.js +11 -14
- package/dataflow/eval/resolve/resolve-argument.d.ts +1 -1
- package/dataflow/eval/resolve/resolve.d.ts +1 -7
- package/dataflow/eval/resolve/resolve.js +0 -5
- package/dataflow/eval/values/general.d.ts +1 -3
- package/dataflow/eval/values/general.js +0 -1
- package/dataflow/eval/values/intervals/interval-constants.d.ts +7 -1
- package/dataflow/eval/values/intervals/interval-constants.js +6 -0
- package/dataflow/eval/values/logical/logical-constants.d.ts +4 -1
- package/dataflow/eval/values/logical/logical-constants.js +3 -0
- package/dataflow/eval/values/r-value.d.ts +12 -0
- package/dataflow/eval/values/r-value.js +12 -0
- package/dataflow/eval/values/scalar/scalar-consatnts.d.ts +7 -1
- package/dataflow/eval/values/scalar/scalar-consatnts.js +6 -0
- package/dataflow/eval/values/sets/set-constants.d.ts +7 -2
- package/dataflow/eval/values/sets/set-constants.js +6 -0
- package/dataflow/eval/values/string/string-constants.d.ts +10 -1
- package/dataflow/eval/values/string/string-constants.js +9 -0
- package/dataflow/eval/values/vectors/vector-constants.d.ts +1 -1
- package/dataflow/extractor.d.ts +1 -1
- package/dataflow/graph/dataflowgraph-builder.d.ts +20 -38
- package/dataflow/graph/dataflowgraph-builder.js +6 -23
- package/dataflow/graph/diff-dataflow-graph.d.ts +16 -6
- package/dataflow/graph/diff-dataflow-graph.js +12 -1
- package/dataflow/graph/edge.d.ts +9 -0
- package/dataflow/graph/edge.js +9 -0
- package/dataflow/graph/graph.d.ts +6 -19
- package/dataflow/graph/graph.js +4 -15
- package/dataflow/graph/invert-dfg.d.ts +3 -0
- package/dataflow/graph/invert-dfg.js +3 -0
- package/dataflow/graph/quads.d.ts +1 -1
- package/dataflow/graph/unknown-replacement.d.ts +6 -0
- package/dataflow/graph/unknown-replacement.js +6 -0
- package/dataflow/graph/unknown-side-effect.d.ts +8 -0
- package/dataflow/graph/unknown-side-effect.js +8 -0
- package/dataflow/graph/vertex.d.ts +9 -9
- package/dataflow/graph/vertex.js +9 -1
- package/dataflow/info.d.ts +9 -10
- package/dataflow/info.js +6 -1
- package/dataflow/internal/linker.d.ts +25 -9
- package/dataflow/internal/linker.js +23 -7
- package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
- package/dataflow/internal/process/functions/call/argument/make-argument.js +6 -0
- package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-access.js +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +2 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-eval.d.ts +6 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +10 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +6 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +4 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-list.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +6 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-rm.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +23 -6
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +20 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-vector.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +3 -0
- package/dataflow/internal/process/functions/call/common.d.ts +11 -5
- package/dataflow/internal/process/functions/call/common.js +6 -0
- package/dataflow/internal/process/functions/call/default-call-handling.d.ts +3 -0
- package/dataflow/internal/process/functions/call/default-call-handling.js +3 -0
- package/dataflow/internal/process/functions/call/known-call-handling.d.ts +12 -5
- package/dataflow/internal/process/functions/call/known-call-handling.js +7 -0
- package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -1
- package/dataflow/internal/process/functions/call/named-call-handling.js +6 -0
- package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +4 -1
- package/dataflow/internal/process/functions/call/unnamed-call-handling.js +3 -0
- package/dataflow/internal/process/functions/process-argument.d.ts +8 -2
- package/dataflow/internal/process/functions/process-argument.js +6 -0
- package/dataflow/internal/process/functions/process-parameter.d.ts +5 -2
- package/dataflow/internal/process/functions/process-parameter.js +3 -0
- package/dataflow/internal/process/process-symbol.d.ts +3 -0
- package/dataflow/internal/process/process-symbol.js +3 -0
- package/dataflow/internal/process/process-uninteresting-leaf.d.ts +3 -0
- package/dataflow/internal/process/process-uninteresting-leaf.js +3 -0
- package/dataflow/internal/process/process-value.d.ts +3 -0
- package/dataflow/internal/process/process-value.js +3 -0
- package/dataflow/origin/dfg-get-origin.d.ts +0 -2
- package/dataflow/origin/dfg-get-symbol-refs.d.ts +5 -7
- package/dataflow/origin/dfg-get-symbol-refs.js +6 -8
- package/dataflow/processor.d.ts +0 -1
- package/dataflow/processor.js +0 -1
- package/documentation/data/dfg/doc-data-dfg-util.d.ts +6 -0
- package/documentation/data/dfg/doc-data-dfg-util.js +6 -0
- package/documentation/data/faq/faqs.d.ts +5 -0
- package/documentation/data/faq/faqs.js +78 -0
- package/documentation/data/faq/wiki-faq-store.d.ts +18 -0
- package/documentation/data/faq/wiki-faq-store.js +75 -0
- package/documentation/data/server/doc-data-server-messages.d.ts +3 -0
- package/documentation/data/server/doc-data-server-messages.js +4 -63
- package/documentation/doc-util/doc-auto-gen.d.ts +6 -0
- package/documentation/doc-util/doc-auto-gen.js +6 -0
- package/documentation/doc-util/doc-benchmarks.d.ts +12 -0
- package/documentation/doc-util/doc-benchmarks.js +12 -0
- package/documentation/doc-util/doc-cfg.d.ts +7 -1
- package/documentation/doc-util/doc-cfg.js +9 -0
- package/documentation/doc-util/doc-cli-option.d.ts +9 -0
- package/documentation/doc-util/doc-cli-option.js +9 -0
- package/documentation/doc-util/doc-code.d.ts +24 -0
- package/documentation/doc-util/doc-code.js +24 -0
- package/documentation/doc-util/doc-dfg.d.ts +7 -1
- package/documentation/doc-util/doc-dfg.js +9 -0
- package/documentation/doc-util/doc-env.d.ts +3 -0
- package/documentation/doc-util/doc-env.js +3 -0
- package/documentation/doc-util/doc-escape.d.ts +0 -1
- package/documentation/doc-util/doc-escape.js +0 -1
- package/documentation/doc-util/doc-files.d.ts +11 -0
- package/documentation/doc-util/doc-files.js +15 -4
- package/documentation/doc-util/doc-general.d.ts +6 -0
- package/documentation/doc-util/doc-general.js +6 -0
- package/documentation/doc-util/doc-normalized-ast.d.ts +7 -1
- package/documentation/doc-util/doc-normalized-ast.js +6 -0
- package/documentation/doc-util/doc-query.d.ts +15 -0
- package/documentation/doc-util/doc-query.js +17 -2
- package/documentation/doc-util/doc-repl.d.ts +6 -0
- package/documentation/doc-util/doc-repl.js +6 -0
- package/documentation/doc-util/doc-search.d.ts +15 -0
- package/documentation/doc-util/doc-search.js +17 -2
- package/documentation/doc-util/doc-server-message.d.ts +13 -1
- package/documentation/doc-util/doc-server-message.js +13 -1
- package/documentation/doc-util/doc-structure.d.ts +9 -0
- package/documentation/doc-util/doc-structure.js +10 -1
- package/documentation/doc-util/doc-types.d.ts +42 -0
- package/documentation/doc-util/doc-types.js +42 -0
- package/documentation/print-analyzer-wiki.js +4 -0
- package/documentation/print-core-wiki.d.ts +3 -0
- package/documentation/print-core-wiki.js +5 -2
- package/documentation/print-dataflow-graph-wiki.js +5 -5
- package/documentation/print-faq-wiki.js +3 -75
- package/documentation/print-interface-wiki.js +1 -1
- package/documentation/print-onboarding-wiki.js +1 -1
- package/documentation/print-query-wiki.js +4 -34
- package/documentation/print-readme.js +105 -0
- package/engines.d.ts +1 -1
- package/linter/linter-executor.d.ts +6 -3
- package/linter/linter-executor.js +3 -0
- package/linter/linter-format.d.ts +8 -0
- package/linter/linter-format.js +8 -0
- package/linter/rules/absolute-path.d.ts +3 -4
- package/linter/rules/dataframe-access-validation.d.ts +3 -4
- package/linter/rules/dataframe-access-validation.js +9 -11
- package/linter/rules/dead-code.d.ts +1 -1
- package/linter/rules/deprecated-functions.d.ts +1 -1
- package/linter/rules/file-path-validity.d.ts +1 -2
- package/linter/rules/function-finder-util.d.ts +1 -2
- package/linter/rules/naming-convention.d.ts +13 -2
- package/linter/rules/naming-convention.js +13 -1
- package/linter/rules/network-functions.d.ts +1 -1
- package/linter/rules/seeded-randomness.d.ts +1 -2
- package/linter/rules/unused-definition.d.ts +2 -3
- package/linter/rules/useless-loop.d.ts +1 -2
- package/package.json +2 -2
- package/project/cache/flowr-analyzer-cache.d.ts +2 -9
- package/project/cache/flowr-analyzer-cache.js +0 -6
- package/project/context/flowr-analyzer-context.d.ts +3 -6
- package/project/context/flowr-analyzer-dependencies-context.d.ts +0 -1
- package/project/context/flowr-analyzer-files-context.d.ts +2 -4
- package/project/context/flowr-file.d.ts +0 -1
- package/project/flowr-analyzer-builder.d.ts +1 -3
- package/project/flowr-analyzer-builder.js +5 -6
- package/project/flowr-analyzer.d.ts +34 -25
- package/project/flowr-analyzer.js +10 -11
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +1 -1
- package/project/plugins/file-plugins/flowr-description-file.d.ts +1 -3
- package/project/plugins/file-plugins/flowr-description-file.js +0 -1
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +1 -1
- package/queries/base-query-format.d.ts +2 -2
- package/queries/catalog/call-context-query/call-context-query-executor.d.ts +3 -0
- package/queries/catalog/call-context-query/call-context-query-executor.js +3 -0
- package/queries/catalog/call-context-query/call-context-query-format.d.ts +3 -3
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +11 -2
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +9 -0
- package/queries/catalog/cluster-query/cluster-query-executor.d.ts +3 -0
- package/queries/catalog/cluster-query/cluster-query-executor.js +3 -0
- package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
- package/queries/catalog/config-query/config-query-executor.d.ts +3 -0
- package/queries/catalog/config-query/config-query-executor.js +3 -0
- package/queries/catalog/config-query/config-query-format.d.ts +5 -2
- package/queries/catalog/config-query/config-query-format.js +13 -16
- package/queries/catalog/control-flow-query/control-flow-query-executor.d.ts +3 -0
- package/queries/catalog/control-flow-query/control-flow-query-executor.js +3 -0
- package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +3 -3
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.d.ts +3 -0
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +3 -0
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
- package/queries/catalog/dataflow-query/dataflow-query-executor.d.ts +3 -0
- package/queries/catalog/dataflow-query/dataflow-query-executor.js +3 -0
- package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +4 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.js +7 -4
- package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +4 -1
- package/queries/catalog/dependencies-query/dependencies-query-format.js +4 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +4 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.js +8 -4
- package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +10 -3
- package/queries/catalog/df-shape-query/df-shape-query-format.js +24 -5
- package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +3 -0
- package/queries/catalog/happens-before-query/happens-before-query-executor.js +3 -0
- package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
- package/queries/catalog/id-map-query/id-map-query-executor.d.ts +3 -0
- package/queries/catalog/id-map-query/id-map-query-executor.js +3 -0
- package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -1
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.d.ts +3 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +3 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +2 -2
- package/queries/catalog/linter-query/linter-query-executor.d.ts +4 -0
- package/queries/catalog/linter-query/linter-query-executor.js +4 -0
- package/queries/catalog/linter-query/linter-query-format.d.ts +12 -3
- package/queries/catalog/linter-query/linter-query-format.js +67 -0
- package/queries/catalog/location-map-query/location-map-query-executor.d.ts +4 -0
- package/queries/catalog/location-map-query/location-map-query-executor.js +5 -1
- package/queries/catalog/location-map-query/location-map-query-format.d.ts +7 -1
- package/queries/catalog/location-map-query/location-map-query-format.js +12 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.d.ts +3 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.js +3 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
- package/queries/catalog/origin-query/origin-query-executor.d.ts +7 -1
- package/queries/catalog/origin-query/origin-query-executor.js +6 -0
- package/queries/catalog/origin-query/origin-query-format.d.ts +7 -1
- package/queries/catalog/origin-query/origin-query-format.js +17 -1
- package/queries/catalog/project-query/project-query-executor.d.ts +3 -0
- package/queries/catalog/project-query/project-query-executor.js +3 -0
- package/queries/catalog/project-query/project-query-format.d.ts +1 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +6 -0
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +6 -0
- package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +7 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-format.js +19 -1
- package/queries/catalog/search-query/search-query-executor.d.ts +3 -0
- package/queries/catalog/search-query/search-query-executor.js +3 -0
- package/queries/catalog/search-query/search-query-format.d.ts +1 -1
- package/queries/catalog/static-slice-query/static-slice-query-executor.d.ts +9 -0
- package/queries/catalog/static-slice-query/static-slice-query-executor.js +9 -0
- package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +7 -1
- package/queries/catalog/static-slice-query/static-slice-query-format.js +17 -0
- package/queries/query-print.d.ts +20 -4
- package/queries/query-print.js +18 -2
- package/queries/query.d.ts +85 -55
- package/queries/query.js +35 -23
- package/queries/virtual-query/virtual-queries.d.ts +1 -2
- package/r-bridge/data/get.d.ts +6 -0
- package/r-bridge/data/get.js +6 -0
- package/r-bridge/lang-4.x/ast/model/collect.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/collect.js +0 -1
- package/r-bridge/lang-4.x/ast/model/model.d.ts +8 -11
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +3 -0
- package/r-bridge/lang-4.x/ast/model/operators.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +6 -7
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +6 -6
- package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/node-id.js +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +1 -2
- package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/visitor.js +0 -1
- package/r-bridge/lang-4.x/ast/model/type.d.ts +4 -5
- package/r-bridge/lang-4.x/ast/model/type.js +4 -5
- package/r-bridge/lang-4.x/ast/model/versions.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/versions.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +4 -5
- package/r-bridge/lang-4.x/ast/parser/json/parser.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/control/normalize-if-then.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.d.ts +1 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-binary.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.js +9 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.d.ts +1 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.d.ts +1 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.d.ts +14 -5
- package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.js +13 -6
- package/r-bridge/lang-4.x/convert-values.d.ts +12 -1
- package/r-bridge/lang-4.x/convert-values.js +12 -1
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +7 -2
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +17 -0
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +13 -1
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +48 -19
- package/r-bridge/parser.d.ts +28 -7
- package/r-bridge/retriever.d.ts +16 -1
- package/r-bridge/retriever.js +15 -0
- package/r-bridge/shell-executor.d.ts +3 -3
- package/r-bridge/shell-executor.js +6 -1
- package/r-bridge/shell.d.ts +24 -23
- package/r-bridge/shell.js +37 -31
- package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -1
- package/reconstruct/auto-select/magic-comments.d.ts +1 -2
- package/reconstruct/auto-select/magic-comments.js +1 -2
- package/reconstruct/reconstruct.d.ts +1 -3
- package/reconstruct/reconstruct.js +0 -2
- package/search/flowr-search-builder.d.ts +12 -5
- package/search/flowr-search-builder.js +7 -2
- package/search/flowr-search-executor.d.ts +3 -3
- package/search/flowr-search-filters.d.ts +14 -1
- package/search/flowr-search-filters.js +13 -0
- package/search/flowr-search-printer.d.ts +6 -0
- package/search/flowr-search-printer.js +6 -0
- package/search/flowr-search-traverse.d.ts +1 -1
- package/search/flowr-search.d.ts +3 -3
- package/search/search-executor/search-enrichers.d.ts +9 -6
- package/search/search-executor/search-enrichers.js +3 -0
- package/search/search-executor/search-generators.d.ts +19 -10
- package/search/search-executor/search-generators.js +49 -2
- package/search/search-executor/search-mappers.d.ts +8 -5
- package/search/search-executor/search-mappers.js +3 -0
- package/search/search-executor/search-transformer.d.ts +19 -16
- package/search/search-executor/search-transformer.js +3 -0
- package/slicing/criterion/collect-all.d.ts +10 -10
- package/slicing/criterion/parse.d.ts +4 -2
- package/slicing/criterion/parse.js +4 -2
- package/slicing/static/fingerprint.d.ts +9 -1
- package/slicing/static/fingerprint.js +8 -0
- package/slicing/static/slice-call.d.ts +2 -2
- package/slicing/static/static-slicer.d.ts +8 -4
- package/slicing/static/static-slicer.js +5 -1
- package/slicing/static/visiting-queue.d.ts +1 -1
- package/statistics/features/common-syntax-probability.d.ts +10 -1
- package/statistics/features/common-syntax-probability.js +9 -0
- package/statistics/features/feature.d.ts +0 -4
- package/statistics/features/feature.js +0 -1
- package/statistics/features/post-processing.d.ts +6 -0
- package/statistics/features/post-processing.js +6 -0
- package/statistics/features/supported/assignments/post-process.d.ts +3 -0
- package/statistics/features/supported/assignments/post-process.js +3 -0
- package/statistics/features/supported/comments/post-process.d.ts +3 -0
- package/statistics/features/supported/comments/post-process.js +3 -0
- package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
- package/statistics/features/supported/control-flow/post-process.js +3 -0
- package/statistics/features/supported/data-access/data-access.d.ts +1 -1
- package/statistics/features/supported/data-access/post-process.d.ts +3 -0
- package/statistics/features/supported/data-access/post-process.js +3 -0
- package/statistics/features/supported/defined-functions/defined-functions.d.ts +1 -1
- package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
- package/statistics/features/supported/expression-list/post-process.js +3 -0
- package/statistics/features/supported/loops/post-process.d.ts +3 -0
- package/statistics/features/supported/loops/post-process.js +3 -0
- package/statistics/features/supported/used-functions/used-functions.d.ts +1 -1
- package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
- package/statistics/features/supported/used-packages/post-process.js +3 -0
- package/statistics/features/supported/values/post-process.d.ts +3 -0
- package/statistics/features/supported/values/post-process.js +3 -0
- package/statistics/features/supported/variables/post-process.d.ts +7 -1
- package/statistics/features/supported/variables/post-process.js +6 -0
- package/statistics/meta-statistics.d.ts +8 -9
- package/statistics/output/file-provider.d.ts +5 -6
- package/statistics/output/file-provider.js +5 -6
- package/statistics/output/print-stats.d.ts +13 -1
- package/statistics/output/print-stats.js +12 -0
- package/statistics/output/statistics-file.d.ts +1 -2
- package/statistics/output/statistics-file.js +0 -1
- package/statistics/statistics.d.ts +3 -4
- package/statistics/statistics.js +1 -2
- package/statistics/summarizer/auto-detect.d.ts +3 -0
- package/statistics/summarizer/auto-detect.js +3 -0
- package/statistics/summarizer/post-process/clusterer.d.ts +3 -4
- package/statistics/summarizer/post-process/clusterer.js +0 -2
- package/statistics/summarizer/post-process/file-based-count.d.ts +0 -1
- package/statistics/summarizer/post-process/file-based-count.js +0 -1
- package/statistics/summarizer/post-process/histogram.d.ts +0 -2
- package/statistics/summarizer/post-process/histogram.js +0 -2
- package/statistics/summarizer/post-process/post-process-output.d.ts +2 -4
- package/statistics/summarizer/post-process/post-process-output.js +0 -3
- package/statistics/summarizer/second-phase/process.d.ts +5 -3
- package/statistics/summarizer/second-phase/process.js +3 -1
- package/statistics/summarizer/summarizer.d.ts +1 -2
- package/util/assert.d.ts +52 -2
- package/util/assert.js +52 -2
- package/util/collections/arrays.d.ts +10 -5
- package/util/collections/arrays.js +10 -5
- package/util/collections/defaultmap.d.ts +11 -11
- package/util/collections/defaultmap.js +11 -11
- package/util/containers.d.ts +2 -7
- package/util/containers.js +0 -5
- package/util/diff-graph.d.ts +0 -1
- package/util/diff-graph.js +0 -1
- package/util/diff.d.ts +3 -1
- package/util/diff.js +3 -1
- package/util/files.d.ts +11 -11
- package/util/files.js +10 -10
- package/util/formats/adapter.d.ts +9 -0
- package/util/formats/adapter.js +9 -0
- package/util/formats/adapters/rmd-adapter.d.ts +10 -1
- package/util/formats/adapters/rmd-adapter.js +10 -1
- package/util/html-hover-over.d.ts +5 -0
- package/util/html-hover-over.js +5 -0
- package/util/json.d.ts +13 -0
- package/util/json.js +13 -0
- package/util/log.d.ts +2 -2
- package/util/log.js +2 -2
- package/util/mermaid/ast.d.ts +3 -0
- package/util/mermaid/ast.js +3 -0
- package/util/mermaid/cfg.d.ts +1 -1
- package/util/mermaid/dfg.d.ts +12 -4
- package/util/mermaid/dfg.js +9 -1
- package/util/mermaid/mermaid.d.ts +6 -1
- package/util/mermaid/mermaid.js +6 -1
- package/util/numbers.d.ts +7 -0
- package/util/numbers.js +7 -0
- package/util/objects.d.ts +0 -2
- package/util/os.d.ts +3 -0
- package/util/os.js +3 -0
- package/util/parallel.d.ts +4 -4
- package/util/parallel.js +4 -4
- package/util/prefix.d.ts +0 -1
- package/util/prefix.js +0 -1
- package/util/quads.d.ts +14 -17
- package/util/quads.js +3 -5
- package/util/r-value.d.ts +10 -1
- package/util/r-value.js +21 -0
- package/util/random.d.ts +3 -0
- package/util/random.js +3 -0
- package/util/range.d.ts +9 -3
- package/util/range.js +15 -2
- package/util/schema.d.ts +14 -1
- package/util/schema.js +15 -2
- package/util/simple-df/dfg-view.d.ts +4 -1
- package/util/simple-df/dfg-view.js +4 -1
- package/util/summarizer.d.ts +9 -1
- package/util/summarizer.js +9 -0
- package/util/text/ansi.d.ts +3 -0
- package/util/text/ansi.js +3 -0
- package/util/text/args.d.ts +2 -4
- package/util/text/args.js +7 -5
- package/util/text/text.d.ts +4 -0
- package/util/text/text.js +4 -0
- package/util/text/time.d.ts +0 -1
- package/util/text/time.js +0 -1
- package/util/version.d.ts +12 -3
- package/util/version.js +12 -3
- package/abstract-interpretation/data-frame/domain.d.ts +0 -107
- package/abstract-interpretation/data-frame/domain.js +0 -315
- package/abstract-interpretation/domains/set-bounded-set-domain.d.ts +0 -43
- package/abstract-interpretation/domains/set-bounded-set-domain.js +0 -164
- package/cli/repl/commands/repl-lineage.d.ts +0 -15
- package/cli/repl/commands/repl-lineage.js +0 -66
- package/cli/repl/server/messages/message-lineage.d.ts +0 -17
- package/cli/repl/server/messages/message-lineage.js +0 -25
- package/queries/catalog/lineage-query/lineage-query-executor.d.ts +0 -3
- package/queries/catalog/lineage-query/lineage-query-executor.js +0 -22
- package/queries/catalog/lineage-query/lineage-query-format.d.ts +0 -22
- package/queries/catalog/lineage-query/lineage-query-format.js +0 -31
|
@@ -14,6 +14,9 @@ const edge_1 = require("./edge");
|
|
|
14
14
|
const default_builtin_config_1 = require("../environments/default-builtin-config");
|
|
15
15
|
const flowr_search_executor_1 = require("../../search/flowr-search-executor");
|
|
16
16
|
const assert_1 = require("../../util/assert");
|
|
17
|
+
/**
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
17
20
|
function emptyGraph(idMap) {
|
|
18
21
|
return new DataflowGraphBuilder(idMap);
|
|
19
22
|
}
|
|
@@ -25,7 +28,6 @@ function emptyGraph(idMap) {
|
|
|
25
28
|
class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
26
29
|
/**
|
|
27
30
|
* Adds a **vertex** for a **function definition** (V1).
|
|
28
|
-
*
|
|
29
31
|
* @param id - AST node ID
|
|
30
32
|
* @param subflow - Subflow data graph for the defined function.
|
|
31
33
|
* @param exitPoints - Node IDs for exit point vertices.
|
|
@@ -52,7 +54,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
52
54
|
}
|
|
53
55
|
/**
|
|
54
56
|
* Adds a **vertex** for a **function call** (V2).
|
|
55
|
-
*
|
|
56
57
|
* @param id - AST node ID
|
|
57
58
|
* @param name - Function name
|
|
58
59
|
* @param args - Function arguments; may be empty
|
|
@@ -107,7 +108,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
107
108
|
}
|
|
108
109
|
/**
|
|
109
110
|
* Adds a **vertex** for a **variable definition** (V4).
|
|
110
|
-
*
|
|
111
111
|
* @param id - AST node ID
|
|
112
112
|
* @param name - Variable name
|
|
113
113
|
* @param info - Additional/optional properties.
|
|
@@ -130,7 +130,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
130
130
|
}
|
|
131
131
|
/**
|
|
132
132
|
* Adds a **vertex** for **variable use** (V5). Intended for creating dataflow graphs as part of function tests.
|
|
133
|
-
*
|
|
134
133
|
* @param id - AST node id
|
|
135
134
|
* @param name - Variable name
|
|
136
135
|
* @param info - Additional/optional properties; i.e., scope, when, or environment.
|
|
@@ -151,7 +150,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
151
150
|
}
|
|
152
151
|
/**
|
|
153
152
|
* Adds a **vertex** for a **constant value** (V6).
|
|
154
|
-
*
|
|
155
153
|
* @param id - AST node ID
|
|
156
154
|
* @param options - Additional/optional properties;
|
|
157
155
|
* @param asRoot - should the vertex be part of the root vertex set of the graph
|
|
@@ -196,7 +194,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
196
194
|
}
|
|
197
195
|
/**
|
|
198
196
|
* Adds a **read edge**.
|
|
199
|
-
*
|
|
200
197
|
* @param from - NodeId of the source vertex
|
|
201
198
|
* @param to - Either a single or multiple target ids.
|
|
202
199
|
* If you pass multiple this will construct a single edge for each of them.
|
|
@@ -206,7 +203,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
206
203
|
}
|
|
207
204
|
/**
|
|
208
205
|
* Adds a **read edge** with a query for the from and/or to vertices.
|
|
209
|
-
*
|
|
210
206
|
* @param from - Either a node id or a query to find the node id.
|
|
211
207
|
* @param to - Either a node id or a query to find the node id.
|
|
212
208
|
* @param input - The input to search in i.e. the dataflow graph.
|
|
@@ -217,7 +213,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
217
213
|
/**
|
|
218
214
|
* Adds a **defined-by edge** with from as defined variable, and to
|
|
219
215
|
* as a variable/function contributing to its definition.
|
|
220
|
-
*
|
|
221
216
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
222
217
|
*/
|
|
223
218
|
definedBy(from, to) {
|
|
@@ -225,7 +220,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
225
220
|
}
|
|
226
221
|
/**
|
|
227
222
|
* Adds a **defined-by edge** with a query for the from and/or to vertices.
|
|
228
|
-
*
|
|
229
223
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
230
224
|
*/
|
|
231
225
|
definedByQuery(from, to, data) {
|
|
@@ -233,7 +227,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
233
227
|
}
|
|
234
228
|
/**
|
|
235
229
|
* Adds a **call edge** with from as caller, and to as callee.
|
|
236
|
-
*
|
|
237
230
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
238
231
|
*/
|
|
239
232
|
calls(from, to) {
|
|
@@ -241,7 +234,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
241
234
|
}
|
|
242
235
|
/**
|
|
243
236
|
* Adds a **call edge** with a query for the from and/or to vertices.
|
|
244
|
-
*
|
|
245
237
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
246
238
|
*/
|
|
247
239
|
callsQuery(from, to, data) {
|
|
@@ -249,7 +241,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
249
241
|
}
|
|
250
242
|
/**
|
|
251
243
|
* Adds a **return edge** with from as function, and to as exit point.
|
|
252
|
-
*
|
|
253
244
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
254
245
|
*/
|
|
255
246
|
returns(from, to) {
|
|
@@ -257,7 +248,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
257
248
|
}
|
|
258
249
|
/**
|
|
259
250
|
* Adds a **return edge** with a query for the from and/or to vertices.
|
|
260
|
-
*
|
|
261
251
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
262
252
|
*/
|
|
263
253
|
returnsQuery(from, to, data) {
|
|
@@ -265,7 +255,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
265
255
|
}
|
|
266
256
|
/**
|
|
267
257
|
* Adds a **defines-on-call edge** with from as variable, and to as its definition
|
|
268
|
-
*
|
|
269
258
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
270
259
|
*/
|
|
271
260
|
definesOnCall(from, to) {
|
|
@@ -273,7 +262,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
273
262
|
}
|
|
274
263
|
/**
|
|
275
264
|
* Adds a **defines-on-call edge** with a query for the from and/or to vertices.
|
|
276
|
-
*
|
|
277
265
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
278
266
|
*/
|
|
279
267
|
definesOnCallQuery(from, to, data) {
|
|
@@ -281,7 +269,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
281
269
|
}
|
|
282
270
|
/**
|
|
283
271
|
* Adds a **defined-by-on-call edge** with from as definition, and to as variable.
|
|
284
|
-
*
|
|
285
272
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
286
273
|
*/
|
|
287
274
|
definedByOnCall(from, to) {
|
|
@@ -289,7 +276,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
289
276
|
}
|
|
290
277
|
/**
|
|
291
278
|
* Adds a **defined-by-on-call edge** with a query for the from and/or to vertices.
|
|
292
|
-
*
|
|
293
279
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
294
280
|
*/
|
|
295
281
|
definedByOnCallQuery(from, to, data) {
|
|
@@ -297,7 +283,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
297
283
|
}
|
|
298
284
|
/**
|
|
299
285
|
* Adds an **argument edge** with from as function call, and to as argument.
|
|
300
|
-
*
|
|
301
286
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
302
287
|
*/
|
|
303
288
|
argument(from, to) {
|
|
@@ -305,7 +290,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
305
290
|
}
|
|
306
291
|
/**
|
|
307
292
|
* Adds a **argument edge** with a query for the from and/or to vertices.
|
|
308
|
-
*
|
|
309
293
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
310
294
|
*/
|
|
311
295
|
argumentQuery(from, to, data) {
|
|
@@ -313,7 +297,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
313
297
|
}
|
|
314
298
|
/**
|
|
315
299
|
* Adds a **non-standard evaluation edge** with from as vertex, and to as vertex.
|
|
316
|
-
*
|
|
317
300
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
318
301
|
*/
|
|
319
302
|
nse(from, to) {
|
|
@@ -321,7 +304,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
321
304
|
}
|
|
322
305
|
/**
|
|
323
306
|
* Adds a **non-standard evaluation edge** with a query for the from and/or to vertices.
|
|
324
|
-
*
|
|
325
307
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
326
308
|
*/
|
|
327
309
|
nseQuery(from, to, data) {
|
|
@@ -329,7 +311,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
329
311
|
}
|
|
330
312
|
/**
|
|
331
313
|
* Adds a **side-effect-on-call edge** with from as vertex, and to as vertex.
|
|
332
|
-
*
|
|
333
314
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
334
315
|
*/
|
|
335
316
|
sideEffectOnCall(from, to) {
|
|
@@ -337,7 +318,6 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
337
318
|
}
|
|
338
319
|
/**
|
|
339
320
|
* Adds a **side-effect-on-call edge** with a query for the from and/or to vertices.
|
|
340
|
-
*
|
|
341
321
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
342
322
|
*/
|
|
343
323
|
sideEffectOnCallQuery(from, to, data) {
|
|
@@ -353,6 +333,9 @@ class DataflowGraphBuilder extends graph_1.DataflowGraph {
|
|
|
353
333
|
}
|
|
354
334
|
}
|
|
355
335
|
exports.DataflowGraphBuilder = DataflowGraphBuilder;
|
|
336
|
+
/**
|
|
337
|
+
*
|
|
338
|
+
*/
|
|
356
339
|
function getBuiltInSideEffect(name) {
|
|
357
340
|
const got = default_builtin_config_1.DefaultBuiltinConfig.find(e => e.names.includes(name));
|
|
358
341
|
if (got?.type !== 'function') {
|
|
@@ -1,16 +1,26 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type
|
|
3
|
-
import type
|
|
4
|
-
import type
|
|
5
|
-
import { GraphDifferenceReport } from '../../util/diff-graph';
|
|
1
|
+
import { type FunctionArgument, type OutgoingEdges } from './graph';
|
|
2
|
+
import { type GenericDiffConfiguration, type GenericDifferenceInformation } from '../../util/diff';
|
|
3
|
+
import { type NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
4
|
+
import { type GraphDiffContext, type NamedGraph, GraphDifferenceReport } from '../../util/diff-graph';
|
|
6
5
|
/**
|
|
7
6
|
* Compare two dataflow graphs and return a report on the differences.
|
|
8
7
|
* If you simply want to check whether they equal, use {@link GraphDifferenceReport#isEqual|`<result>.isEqual()`}.
|
|
9
|
-
*
|
|
10
8
|
* @see {@link diffOfControlFlowGraphs} - for control flow graphs
|
|
11
9
|
*/
|
|
12
10
|
export declare function diffOfDataflowGraphs(left: NamedGraph, right: NamedGraph, config?: Partial<GenericDiffConfiguration>): GraphDifferenceReport;
|
|
11
|
+
/**
|
|
12
|
+
* Checks whether two function argument lists are equal.
|
|
13
|
+
*/
|
|
13
14
|
export declare function equalFunctionArguments(fn: NodeId, a: false | readonly FunctionArgument[], b: false | readonly FunctionArgument[]): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Compares two function argument lists and reports differences.
|
|
17
|
+
*/
|
|
14
18
|
export declare function diffFunctionArguments(fn: NodeId, a: false | readonly FunctionArgument[], b: false | readonly FunctionArgument[], ctx: GenericDifferenceInformation<GraphDifferenceReport>): void;
|
|
19
|
+
/**
|
|
20
|
+
* Compares the vertices of two dataflow graphs and reports differences.
|
|
21
|
+
*/
|
|
15
22
|
export declare function diffVertices(ctx: GraphDiffContext): void;
|
|
23
|
+
/**
|
|
24
|
+
* Compares two sets of outgoing edges and reports differences.
|
|
25
|
+
*/
|
|
16
26
|
export declare function diffEdges(ctx: GraphDiffContext, id: NodeId, lEdges: OutgoingEdges | undefined, rEdges: OutgoingEdges | undefined): void;
|
|
@@ -19,7 +19,6 @@ const diff_graph_1 = require("../../util/diff-graph");
|
|
|
19
19
|
/**
|
|
20
20
|
* Compare two dataflow graphs and return a report on the differences.
|
|
21
21
|
* If you simply want to check whether they equal, use {@link GraphDifferenceReport#isEqual|`<result>.isEqual()`}.
|
|
22
|
-
*
|
|
23
22
|
* @see {@link diffOfControlFlowGraphs} - for control flow graphs
|
|
24
23
|
*/
|
|
25
24
|
function diffOfDataflowGraphs(left, right, config) {
|
|
@@ -80,6 +79,9 @@ function diffFunctionArgumentsReferences(fn, a, b, ctx) {
|
|
|
80
79
|
}
|
|
81
80
|
(0, diff_2.diffIdentifierReferences)(a, b, ctx);
|
|
82
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Checks whether two function argument lists are equal.
|
|
84
|
+
*/
|
|
83
85
|
function equalFunctionArguments(fn, a, b) {
|
|
84
86
|
const ctx = {
|
|
85
87
|
report: new diff_graph_1.GraphDifferenceReport(),
|
|
@@ -91,6 +93,9 @@ function equalFunctionArguments(fn, a, b) {
|
|
|
91
93
|
diffFunctionArguments(fn, a, b, ctx);
|
|
92
94
|
return ctx.report.isEqual();
|
|
93
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Compares two function argument lists and reports differences.
|
|
98
|
+
*/
|
|
94
99
|
function diffFunctionArguments(fn, a, b, ctx) {
|
|
95
100
|
if (a === false || b === false) {
|
|
96
101
|
if (a !== b) {
|
|
@@ -129,6 +134,9 @@ function diffFunctionArguments(fn, a, b, ctx) {
|
|
|
129
134
|
}
|
|
130
135
|
}
|
|
131
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* Compares the vertices of two dataflow graphs and reports differences.
|
|
139
|
+
*/
|
|
132
140
|
function diffVertices(ctx) {
|
|
133
141
|
// collect vertices from both sides
|
|
134
142
|
const lVert = ctx.left.vertices(true).map(([id, info]) => [id, info]).toArray();
|
|
@@ -232,6 +240,9 @@ function diffEdge(edge, otherEdge, ctx, id, target) {
|
|
|
232
240
|
ctx.report.addComment(`Target of ${id}->${target} in ${ctx.leftname} differs in edge types: ${JSON.stringify([...(0, edge_1.edgeTypesToNames)(edge.types)])} vs ${JSON.stringify([...(0, edge_1.edgeTypesToNames)(otherEdge.types)])}`, { tag: 'edge', from: id, to: target });
|
|
233
241
|
}
|
|
234
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Compares two sets of outgoing edges and reports differences.
|
|
245
|
+
*/
|
|
235
246
|
function diffEdges(ctx, id, lEdges, rEdges) {
|
|
236
247
|
if (lEdges === undefined || rEdges === undefined) {
|
|
237
248
|
if ((lEdges === undefined && !ctx.config.leftIsSubgraph)
|
package/dataflow/graph/edge.d.ts
CHANGED
|
@@ -56,7 +56,13 @@ export type EdgeTypeBits = number;
|
|
|
56
56
|
* Otherwise, use {@link edgeTypesToNames} which handles these cases.
|
|
57
57
|
*/
|
|
58
58
|
export declare function edgeTypeToName(type: EdgeType): string;
|
|
59
|
+
/**
|
|
60
|
+
* Takes joint edge types and splits them into their individual components.
|
|
61
|
+
*/
|
|
59
62
|
export declare function splitEdgeTypes(types: EdgeTypeBits): EdgeType[];
|
|
63
|
+
/**
|
|
64
|
+
* Takes joint edge types and returns their human-readable names.
|
|
65
|
+
*/
|
|
60
66
|
export declare function edgeTypesToNames(bits: EdgeTypeBits): Set<EdgeTypeName>;
|
|
61
67
|
export declare const enum TraverseEdge {
|
|
62
68
|
/** Do not traverse this edge */
|
|
@@ -84,4 +90,7 @@ export declare function edgeIncludesType(type: EdgeTypeBits, typesToInclude: Edg
|
|
|
84
90
|
* Counterpart of {@link edgeIncludesType}.
|
|
85
91
|
*/
|
|
86
92
|
export declare function edgeDoesNotIncludeType(type: EdgeTypeBits, types: EdgeTypeBits): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Determines whether an edge should be traversed during dataflow analysis.
|
|
95
|
+
*/
|
|
87
96
|
export declare function shouldTraverseEdge(types: EdgeTypeBits): TraverseEdge;
|
package/dataflow/graph/edge.js
CHANGED
|
@@ -57,6 +57,9 @@ const edgeTypeToHumanReadableName = new Map([
|
|
|
57
57
|
function edgeTypeToName(type) {
|
|
58
58
|
return edgeTypeToHumanReadableName.get(type);
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Takes joint edge types and splits them into their individual components.
|
|
62
|
+
*/
|
|
60
63
|
function splitEdgeTypes(types) {
|
|
61
64
|
const split = [];
|
|
62
65
|
for (const bit of edgeTypeToHumanReadableName.keys()) {
|
|
@@ -66,6 +69,9 @@ function splitEdgeTypes(types) {
|
|
|
66
69
|
}
|
|
67
70
|
return split;
|
|
68
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Takes joint edge types and returns their human-readable names.
|
|
74
|
+
*/
|
|
69
75
|
function edgeTypesToNames(bits) {
|
|
70
76
|
const types = new Set();
|
|
71
77
|
for (const [bit, name] of edgeTypeToHumanReadableName.entries()) {
|
|
@@ -97,6 +103,9 @@ function edgeDoesNotIncludeType(type, types) {
|
|
|
97
103
|
}
|
|
98
104
|
const alwaysTraverseEdgeTypes = EdgeType.Reads | EdgeType.DefinedBy | EdgeType.Argument | EdgeType.Calls;
|
|
99
105
|
const definedByOnCallTypes = EdgeType.DefinesOnCall | EdgeType.DefinedByOnCall;
|
|
106
|
+
/**
|
|
107
|
+
* Determines whether an edge should be traversed during dataflow analysis.
|
|
108
|
+
*/
|
|
100
109
|
function shouldTraverseEdge(types) {
|
|
101
110
|
if (edgeIncludesType(types, EdgeType.NonStandardEvaluation)) {
|
|
102
111
|
return 0 /* TraverseEdge.Never */;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { DataflowGraphEdge, EdgeType } from './edge';
|
|
2
2
|
import type { DataflowInformation } from '../info';
|
|
3
|
-
import type
|
|
3
|
+
import { type DataflowGraphVertexArgument, type DataflowGraphVertexFunctionCall, type DataflowGraphVertexInfo } from './vertex';
|
|
4
4
|
import { EmptyArgument } from '../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
|
|
5
5
|
import type { Identifier, IdentifierDefinition, IdentifierReference } from '../environments/identifier';
|
|
6
|
-
import type
|
|
6
|
+
import { type NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
7
7
|
import type { AstIdMap } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
8
8
|
import type { LinkTo } from '../../queries/catalog/call-context-query/call-context-query-format';
|
|
9
9
|
/**
|
|
@@ -19,7 +19,6 @@ export type DataflowFunctionFlowInformation = Omit<DataflowInformation, 'graph'
|
|
|
19
19
|
* ```r
|
|
20
20
|
* foo(a = 3, b = 2)
|
|
21
21
|
* ```
|
|
22
|
-
*
|
|
23
22
|
* @see #isNamedArgument
|
|
24
23
|
* @see PositionalFunctionArgument
|
|
25
24
|
*/
|
|
@@ -32,7 +31,6 @@ export interface NamedFunctionArgument extends IdentifierReference {
|
|
|
32
31
|
* ```r
|
|
33
32
|
* foo(3, 2)
|
|
34
33
|
* ```
|
|
35
|
-
*
|
|
36
34
|
* @see #isPositionalArgument
|
|
37
35
|
* @see NamedFunctionArgument
|
|
38
36
|
*/
|
|
@@ -95,7 +93,6 @@ export type UnknownSidEffect = NodeId | {
|
|
|
95
93
|
* However, this does not have to hold during the construction as edges may point from or to vertices which are yet to be constructed.
|
|
96
94
|
*
|
|
97
95
|
* All methods return the modified graph to allow for chaining.
|
|
98
|
-
*
|
|
99
96
|
* @see {@link DataflowGraph#addEdge|`addEdge`} - to add an edge to the graph
|
|
100
97
|
* @see {@link DataflowGraph#addVertex|`addVertex`} - to add a vertex to the graph
|
|
101
98
|
* @see {@link DataflowGraph#fromJson|`fromJson`} - to construct a dataflow graph object from a deserialized JSON object.
|
|
@@ -116,21 +113,17 @@ export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = Data
|
|
|
116
113
|
private edgeInformation;
|
|
117
114
|
/**
|
|
118
115
|
* Get the {@link DataflowGraphVertexInfo} attached to a node as well as all outgoing edges.
|
|
119
|
-
*
|
|
120
116
|
* @param id - The id of the node to get
|
|
121
117
|
* @param includeDefinedFunctions - If true this will search function definitions as well and not just the toplevel
|
|
122
118
|
* @returns the node info for the given id (if it exists)
|
|
123
|
-
*
|
|
124
119
|
* @see #getVertex
|
|
125
120
|
*/
|
|
126
121
|
get(id: NodeId, includeDefinedFunctions?: boolean): [Vertex, OutgoingEdges] | undefined;
|
|
127
122
|
/**
|
|
128
123
|
* Get the {@link DataflowGraphVertexInfo} attached to a vertex.
|
|
129
|
-
*
|
|
130
124
|
* @param id - The id of the node to get
|
|
131
125
|
* @param includeDefinedFunctions - If true this will search function definitions as well and not just the toplevel
|
|
132
126
|
* @returns the node info for the given id (if it exists)
|
|
133
|
-
*
|
|
134
127
|
* @see #get
|
|
135
128
|
*/
|
|
136
129
|
getVertex(id: NodeId, includeDefinedFunctions?: boolean): Vertex | undefined;
|
|
@@ -138,9 +131,9 @@ export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = Data
|
|
|
138
131
|
ingoingEdges(id: NodeId): IngoingEdges | undefined;
|
|
139
132
|
/**
|
|
140
133
|
* Given a node in the normalized AST this either:
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
134
|
+
* returns the id if the node directly exists in the DFG
|
|
135
|
+
* returns the ids of all vertices in the DFG that are linked to this
|
|
136
|
+
* returns undefined if the node is not part of the DFG and not linked to any node
|
|
144
137
|
*/
|
|
145
138
|
getLinked(nodeId: NodeId): NodeId[] | undefined;
|
|
146
139
|
/** Retrieves the id-map to the normalized AST attached to the dataflow graph */
|
|
@@ -157,19 +150,16 @@ export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = Data
|
|
|
157
150
|
/**
|
|
158
151
|
* @param includeDefinedFunctions - If true this will iterate over function definitions as well and not just the toplevel
|
|
159
152
|
* @returns the ids of all toplevel vertices in the graph together with their vertex information
|
|
160
|
-
*
|
|
161
153
|
* @see #edges
|
|
162
154
|
*/
|
|
163
155
|
vertices(includeDefinedFunctions: boolean): MapIterator<[NodeId, Vertex]>;
|
|
164
156
|
/**
|
|
165
157
|
* @returns the ids of all edges in the graph together with their edge information
|
|
166
|
-
*
|
|
167
158
|
* @see #vertices
|
|
168
159
|
*/
|
|
169
160
|
edges(): MapIterator<[NodeId, OutgoingEdges]>;
|
|
170
161
|
/**
|
|
171
162
|
* Returns true if the graph contains a node with the given id.
|
|
172
|
-
*
|
|
173
163
|
* @param id - The id to check for
|
|
174
164
|
* @param includeDefinedFunctions - If true this will check function definitions as well and not just the toplevel
|
|
175
165
|
*/
|
|
@@ -181,12 +171,10 @@ export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = Data
|
|
|
181
171
|
rootIds(): ReadonlySet<NodeId>;
|
|
182
172
|
/**
|
|
183
173
|
* Adds a new vertex to the graph, for ease of use, some arguments are optional and filled automatically.
|
|
184
|
-
*
|
|
185
174
|
* @param vertex - The vertex to add
|
|
186
175
|
* @param asRoot - If false, this will only add the vertex but do not add it to the {@link rootIds|root vertices} of the graph.
|
|
187
176
|
* This is probably only of use, when you construct dataflow graphs for tests.
|
|
188
177
|
* @param overwrite - If true, this will overwrite the vertex if it already exists in the graph (based on the id).
|
|
189
|
-
*
|
|
190
178
|
* @see DataflowGraphVertexInfo
|
|
191
179
|
* @see DataflowGraphVertexArgument
|
|
192
180
|
*/
|
|
@@ -199,10 +187,9 @@ export declare class DataflowGraph<Vertex extends DataflowGraphVertexInfo = Data
|
|
|
199
187
|
addEdge(from: NodeId | ReferenceForEdge, to: NodeId | ReferenceForEdge, type: EdgeType | number): this;
|
|
200
188
|
/**
|
|
201
189
|
* Merges the other graph into *this* one (in-place). The return value is only for convenience.
|
|
202
|
-
*
|
|
203
190
|
* @param otherGraph - The graph to merge into this one
|
|
204
191
|
* @param mergeRootVertices - If false, this will only merge the vertices and edges but exclude the root vertices this is probably only of use
|
|
205
|
-
*
|
|
192
|
+
* in the context of function definitions
|
|
206
193
|
*/
|
|
207
194
|
mergeWith(otherGraph: DataflowGraph<Vertex, Edge> | undefined, mergeRootVertices?: boolean): this;
|
|
208
195
|
private mergeEdges;
|
package/dataflow/graph/graph.js
CHANGED
|
@@ -45,7 +45,6 @@ function getReferenceOfArgument(arg) {
|
|
|
45
45
|
* However, this does not have to hold during the construction as edges may point from or to vertices which are yet to be constructed.
|
|
46
46
|
*
|
|
47
47
|
* All methods return the modified graph to allow for chaining.
|
|
48
|
-
*
|
|
49
48
|
* @see {@link DataflowGraph#addEdge|`addEdge`} - to add an edge to the graph
|
|
50
49
|
* @see {@link DataflowGraph#addVertex|`addVertex`} - to add a vertex to the graph
|
|
51
50
|
* @see {@link DataflowGraph#fromJson|`fromJson`} - to construct a dataflow graph object from a deserialized JSON object.
|
|
@@ -74,11 +73,9 @@ class DataflowGraph {
|
|
|
74
73
|
edgeInformation = new Map();
|
|
75
74
|
/**
|
|
76
75
|
* Get the {@link DataflowGraphVertexInfo} attached to a node as well as all outgoing edges.
|
|
77
|
-
*
|
|
78
76
|
* @param id - The id of the node to get
|
|
79
77
|
* @param includeDefinedFunctions - If true this will search function definitions as well and not just the toplevel
|
|
80
78
|
* @returns the node info for the given id (if it exists)
|
|
81
|
-
*
|
|
82
79
|
* @see #getVertex
|
|
83
80
|
*/
|
|
84
81
|
get(id, includeDefinedFunctions = true) {
|
|
@@ -88,11 +85,9 @@ class DataflowGraph {
|
|
|
88
85
|
}
|
|
89
86
|
/**
|
|
90
87
|
* Get the {@link DataflowGraphVertexInfo} attached to a vertex.
|
|
91
|
-
*
|
|
92
88
|
* @param id - The id of the node to get
|
|
93
89
|
* @param includeDefinedFunctions - If true this will search function definitions as well and not just the toplevel
|
|
94
90
|
* @returns the node info for the given id (if it exists)
|
|
95
|
-
*
|
|
96
91
|
* @see #get
|
|
97
92
|
*/
|
|
98
93
|
getVertex(id, includeDefinedFunctions = true) {
|
|
@@ -112,9 +107,9 @@ class DataflowGraph {
|
|
|
112
107
|
}
|
|
113
108
|
/**
|
|
114
109
|
* Given a node in the normalized AST this either:
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
110
|
+
* returns the id if the node directly exists in the DFG
|
|
111
|
+
* returns the ids of all vertices in the DFG that are linked to this
|
|
112
|
+
* returns undefined if the node is not part of the DFG and not linked to any node
|
|
118
113
|
*/
|
|
119
114
|
getLinked(nodeId) {
|
|
120
115
|
if (this.vertexInformation.has(nodeId)) {
|
|
@@ -152,7 +147,6 @@ class DataflowGraph {
|
|
|
152
147
|
/**
|
|
153
148
|
* @param includeDefinedFunctions - If true this will iterate over function definitions as well and not just the toplevel
|
|
154
149
|
* @returns the ids of all toplevel vertices in the graph together with their vertex information
|
|
155
|
-
*
|
|
156
150
|
* @see #edges
|
|
157
151
|
*/
|
|
158
152
|
*vertices(includeDefinedFunctions) {
|
|
@@ -167,7 +161,6 @@ class DataflowGraph {
|
|
|
167
161
|
}
|
|
168
162
|
/**
|
|
169
163
|
* @returns the ids of all edges in the graph together with their edge information
|
|
170
|
-
*
|
|
171
164
|
* @see #vertices
|
|
172
165
|
*/
|
|
173
166
|
*edges() {
|
|
@@ -175,7 +168,6 @@ class DataflowGraph {
|
|
|
175
168
|
}
|
|
176
169
|
/**
|
|
177
170
|
* Returns true if the graph contains a node with the given id.
|
|
178
|
-
*
|
|
179
171
|
* @param id - The id to check for
|
|
180
172
|
* @param includeDefinedFunctions - If true this will check function definitions as well and not just the toplevel
|
|
181
173
|
*/
|
|
@@ -193,12 +185,10 @@ class DataflowGraph {
|
|
|
193
185
|
}
|
|
194
186
|
/**
|
|
195
187
|
* Adds a new vertex to the graph, for ease of use, some arguments are optional and filled automatically.
|
|
196
|
-
*
|
|
197
188
|
* @param vertex - The vertex to add
|
|
198
189
|
* @param asRoot - If false, this will only add the vertex but do not add it to the {@link rootIds|root vertices} of the graph.
|
|
199
190
|
* This is probably only of use, when you construct dataflow graphs for tests.
|
|
200
191
|
* @param overwrite - If true, this will overwrite the vertex if it already exists in the graph (based on the id).
|
|
201
|
-
*
|
|
202
192
|
* @see DataflowGraphVertexInfo
|
|
203
193
|
* @see DataflowGraphVertexArgument
|
|
204
194
|
*/
|
|
@@ -244,10 +234,9 @@ class DataflowGraph {
|
|
|
244
234
|
}
|
|
245
235
|
/**
|
|
246
236
|
* Merges the other graph into *this* one (in-place). The return value is only for convenience.
|
|
247
|
-
*
|
|
248
237
|
* @param otherGraph - The graph to merge into this one
|
|
249
238
|
* @param mergeRootVertices - If false, this will only merge the vertices and edges but exclude the root vertices this is probably only of use
|
|
250
|
-
*
|
|
239
|
+
* in the context of function definitions
|
|
251
240
|
*/
|
|
252
241
|
mergeWith(otherGraph, mergeRootVertices = true) {
|
|
253
242
|
if (otherGraph === undefined) {
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.invertDfg = invertDfg;
|
|
4
4
|
const graph_1 = require("./graph");
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
5
8
|
function invertDfg(graph) {
|
|
6
9
|
const invertedGraph = new graph_1.DataflowGraph(graph.idMap);
|
|
7
10
|
for (const [, v] of graph.vertices(true)) {
|
|
@@ -7,5 +7,11 @@ export type ReplacementOperatorHandlerArgs = {
|
|
|
7
7
|
id: NodeId;
|
|
8
8
|
};
|
|
9
9
|
export type ReplacementOperatorHandler = (args: ReplacementOperatorHandlerArgs) => void;
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
10
13
|
export declare function onReplacementOperator(handler: ReplacementOperatorHandler): void;
|
|
14
|
+
/**
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
11
17
|
export declare function handleReplacementOperator(args: ReplacementOperatorHandlerArgs): void;
|
|
@@ -3,9 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.onReplacementOperator = onReplacementOperator;
|
|
4
4
|
exports.handleReplacementOperator = handleReplacementOperator;
|
|
5
5
|
const handlers = [];
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
6
9
|
function onReplacementOperator(handler) {
|
|
7
10
|
handlers.push(handler);
|
|
8
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
*/
|
|
9
15
|
function handleReplacementOperator(args) {
|
|
10
16
|
handlers.forEach(handler => handler(args));
|
|
11
17
|
}
|
|
@@ -3,5 +3,13 @@ import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-i
|
|
|
3
3
|
import type { REnvironmentInformation } from '../environments/environment';
|
|
4
4
|
import type { DataflowGraph } from './graph';
|
|
5
5
|
export type UnknownSideEffectHandler = (graph: DataflowGraph, env: REnvironmentInformation, id: NodeId, target?: LinkTo<RegExp | string>) => void;
|
|
6
|
+
/**
|
|
7
|
+
* Globally registers a handler for unknown side effects.
|
|
8
|
+
* @see {@link handleUnknownSideEffect} for triggering the handlers.
|
|
9
|
+
*/
|
|
6
10
|
export declare function onUnknownSideEffect(handler: UnknownSideEffectHandler): void;
|
|
11
|
+
/**
|
|
12
|
+
* Handles an unknown side effect occurring at the given node in the dataflow graph.
|
|
13
|
+
* @see {@link onUnknownSideEffect} for registering handlers.
|
|
14
|
+
*/
|
|
7
15
|
export declare function handleUnknownSideEffect(graph: DataflowGraph, env: REnvironmentInformation, id: NodeId, target?: LinkTo<RegExp | string>): void;
|
|
@@ -3,9 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.onUnknownSideEffect = onUnknownSideEffect;
|
|
4
4
|
exports.handleUnknownSideEffect = handleUnknownSideEffect;
|
|
5
5
|
const handlers = [];
|
|
6
|
+
/**
|
|
7
|
+
* Globally registers a handler for unknown side effects.
|
|
8
|
+
* @see {@link handleUnknownSideEffect} for triggering the handlers.
|
|
9
|
+
*/
|
|
6
10
|
function onUnknownSideEffect(handler) {
|
|
7
11
|
handlers.push(handler);
|
|
8
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Handles an unknown side effect occurring at the given node in the dataflow graph.
|
|
15
|
+
* @see {@link onUnknownSideEffect} for registering handlers.
|
|
16
|
+
*/
|
|
9
17
|
function handleUnknownSideEffect(graph, env, id, target) {
|
|
10
18
|
graph.markIdForUnknownSideEffects(id, target);
|
|
11
19
|
handlers.forEach(handler => handler(graph, env, id, target));
|