@eagleoutice/flowr 2.6.0 → 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 +142 -45
- package/abstract-interpretation/data-frame/absint-info.d.ts +1 -1
- package/abstract-interpretation/data-frame/absint-visitor.d.ts +3 -4
- package/abstract-interpretation/data-frame/absint-visitor.js +16 -11
- 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/flowr.js +8 -4
- package/cli/repl/commands/repl-cfg.js +4 -4
- package/cli/repl/commands/repl-commands.d.ts +13 -0
- package/cli/repl/commands/repl-commands.js +15 -4
- package/cli/repl/commands/repl-dataflow.js +4 -4
- package/cli/repl/commands/repl-execute.d.ts +5 -1
- package/cli/repl/commands/repl-execute.js +12 -8
- package/cli/repl/commands/repl-main.d.ts +17 -14
- package/cli/repl/commands/repl-normalize.js +2 -2
- package/cli/repl/commands/repl-parse.js +4 -3
- package/cli/repl/commands/repl-query.js +18 -7
- package/cli/repl/commands/repl-quit.js +1 -1
- package/cli/repl/commands/repl-version.d.ts +1 -16
- package/cli/repl/commands/repl-version.js +2 -19
- package/cli/repl/core.d.ts +32 -14
- package/cli/repl/core.js +38 -35
- 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 +8 -2
- 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 +9 -33
- 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-hello.d.ts +1 -1
- 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/server.js +2 -2
- 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/all/core/20-dataflow.d.ts +3 -1
- package/core/steps/pipeline/create-pipeline.d.ts +1 -1
- package/core/steps/pipeline/default-pipelines.d.ts +29 -13
- 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 +12 -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 +13 -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 +3 -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 +16 -1
- package/dataflow/eval/values/r-value.js +14 -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 +5 -2
- package/dataflow/extractor.js +7 -5
- package/dataflow/fn/higher-order-function.d.ts +9 -0
- package/dataflow/fn/higher-order-function.js +75 -0
- 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 +11 -2
- 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 +7 -7
- 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 +24 -34
- package/documentation/print-readme.js +106 -1
- 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 +8 -14
- package/project/cache/flowr-analyzer-cache.js +21 -19
- package/project/cfg-kind.d.ts +17 -0
- package/project/cfg-kind.js +22 -0
- package/project/context/abstract-flowr-analyzer-context.d.ts +4 -0
- package/project/context/flowr-analyzer-context.d.ts +9 -6
- package/project/context/flowr-analyzer-context.js +11 -0
- package/project/context/flowr-analyzer-dependencies-context.d.ts +1 -1
- package/project/context/flowr-analyzer-dependencies-context.js +4 -0
- package/project/context/flowr-analyzer-files-context.d.ts +3 -4
- package/project/context/flowr-analyzer-files-context.js +4 -0
- package/project/context/flowr-analyzer-loading-order-context.d.ts +1 -0
- package/project/context/flowr-analyzer-loading-order-context.js +6 -0
- 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 +42 -32
- package/project/flowr-analyzer.js +14 -8
- 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 +5 -1
- 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 +6 -3
- 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 +5 -1
- 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 +6 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +48 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +22 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.js +32 -0
- 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 +91 -53
- package/queries/query.js +37 -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 +30 -2
- 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 +5 -1
- 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 +11 -2
- package/util/r-value.js +23 -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 +26 -0
- package/util/version.js +37 -1
- 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 -67
- 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
|
@@ -10,6 +10,9 @@ function flattenSetElements(s) {
|
|
|
10
10
|
return e.type === 'set' ? flattenSetElements(e.elements) : e;
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
13
16
|
function setFrom(...elements) {
|
|
14
17
|
const vals = elements.flatMap(e => {
|
|
15
18
|
return e.type === 'set' ? flattenSetElements(e.elements) : e;
|
|
@@ -19,6 +22,9 @@ function setFrom(...elements) {
|
|
|
19
22
|
elements: vals
|
|
20
23
|
};
|
|
21
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
*
|
|
27
|
+
*/
|
|
22
28
|
function isSet(element) {
|
|
23
29
|
return element.type === 'set';
|
|
24
30
|
}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import type { RStringValue } from '../../../../r-bridge/lang-4.x/convert-values';
|
|
2
|
-
import type
|
|
2
|
+
import { type Lift, type Value, type ValueString } from '../r-value';
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
3
6
|
export declare function stringFrom(str: RStringValue | string): ValueString;
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
4
10
|
export declare function liftString(str: Lift<RStringValue>): ValueString;
|
|
11
|
+
/**
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
5
14
|
export declare function collectStrings(a: Value[], withQuotes?: boolean): string[] | undefined;
|
|
6
15
|
export declare const ValueEmptyString: ValueString<Lift<RStringValue>>;
|
|
7
16
|
export declare const ValueStringTop: ValueString<Lift<RStringValue>>;
|
|
@@ -6,6 +6,9 @@ exports.liftString = liftString;
|
|
|
6
6
|
exports.collectStrings = collectStrings;
|
|
7
7
|
const general_1 = require("../general");
|
|
8
8
|
const r_value_1 = require("../r-value");
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
9
12
|
function stringFrom(str) {
|
|
10
13
|
return {
|
|
11
14
|
type: 'string',
|
|
@@ -15,12 +18,18 @@ function stringFrom(str) {
|
|
|
15
18
|
} : str,
|
|
16
19
|
};
|
|
17
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
*
|
|
23
|
+
*/
|
|
18
24
|
function liftString(str) {
|
|
19
25
|
return {
|
|
20
26
|
type: 'string',
|
|
21
27
|
value: str
|
|
22
28
|
};
|
|
23
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
*
|
|
32
|
+
*/
|
|
24
33
|
function collectStrings(a, withQuotes = false) {
|
|
25
34
|
if ((0, general_1.bottomTopGuard)(a)) {
|
|
26
35
|
return undefined;
|
package/dataflow/extractor.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { DataflowInformation } from './info';
|
|
2
|
-
import type
|
|
2
|
+
import { type DataflowProcessors } from './processor';
|
|
3
3
|
import type { NormalizedAst, ParentInformation } from '../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
4
4
|
import type { RParseRequests } from '../r-bridge/retriever';
|
|
5
5
|
import type { KnownParserType, Parser } from '../r-bridge/parser';
|
|
6
|
+
import type { ControlFlowInformation } from '../control-flow/control-flow-graph';
|
|
6
7
|
import type { FlowrConfigOptions } from '../config';
|
|
7
8
|
/**
|
|
8
9
|
* The best friend of {@link produceDataFlowGraph} and {@link processDataflowFor}.
|
|
@@ -15,4 +16,6 @@ export declare const processors: DataflowProcessors<ParentInformation>;
|
|
|
15
16
|
* (e.g., in the event of a `source` call).
|
|
16
17
|
* For the actual, canonical fold entry point, see {@link processDataflowFor}.
|
|
17
18
|
*/
|
|
18
|
-
export declare function produceDataFlowGraph<OtherInfo>(parser: Parser<KnownParserType>, request: RParseRequests, completeAst: NormalizedAst<OtherInfo & ParentInformation>, config: FlowrConfigOptions): DataflowInformation
|
|
19
|
+
export declare function produceDataFlowGraph<OtherInfo>(parser: Parser<KnownParserType>, request: RParseRequests, completeAst: NormalizedAst<OtherInfo & ParentInformation>, config: FlowrConfigOptions): DataflowInformation & {
|
|
20
|
+
cfgQuick: ControlFlowInformation | undefined;
|
|
21
|
+
};
|
package/dataflow/extractor.js
CHANGED
|
@@ -59,14 +59,14 @@ exports.processors = {
|
|
|
59
59
|
}
|
|
60
60
|
};
|
|
61
61
|
function resolveLinkToSideEffects(ast, graph) {
|
|
62
|
-
let
|
|
62
|
+
let cf = undefined;
|
|
63
63
|
for (const s of graph.unknownSideEffects) {
|
|
64
64
|
if (typeof s !== 'object') {
|
|
65
65
|
continue;
|
|
66
66
|
}
|
|
67
|
-
|
|
67
|
+
cf ??= (0, extract_cfg_1.extractCfgQuick)(ast);
|
|
68
68
|
/* this has to change whenever we add a new link to relations because we currently offer no abstraction for the type */
|
|
69
|
-
const potentials = (0, identify_link_to_last_call_relation_1.identifyLinkToLastCallRelation)(s.id,
|
|
69
|
+
const potentials = (0, identify_link_to_last_call_relation_1.identifyLinkToLastCallRelation)(s.id, cf?.graph, graph, s.linkTo);
|
|
70
70
|
for (const pot of potentials) {
|
|
71
71
|
graph.addEdge(s.id, pot, edge_1.EdgeType.Reads);
|
|
72
72
|
}
|
|
@@ -74,6 +74,7 @@ function resolveLinkToSideEffects(ast, graph) {
|
|
|
74
74
|
graph.unknownSideEffects.delete(s);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
+
return cf;
|
|
77
78
|
}
|
|
78
79
|
/**
|
|
79
80
|
* This is the main function to produce the dataflow graph from a given request and normalized AST.
|
|
@@ -114,7 +115,8 @@ function produceDataFlowGraph(parser, request, completeAst, config) {
|
|
|
114
115
|
}
|
|
115
116
|
// finally, resolve linkages
|
|
116
117
|
(0, built_in_function_definition_1.updateNestedFunctionCalls)(df.graph, df.environment);
|
|
117
|
-
resolveLinkToSideEffects(completeAst, df.graph);
|
|
118
|
-
return
|
|
118
|
+
const cfgQuick = resolveLinkToSideEffects(completeAst, df.graph);
|
|
119
|
+
// performance optimization: return cfgQuick as part of the result to avoid recomputation
|
|
120
|
+
return { ...df, cfgQuick };
|
|
119
121
|
}
|
|
120
122
|
//# sourceMappingURL=extractor.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
2
|
+
import type { DataflowGraph } from '../graph/graph';
|
|
3
|
+
/**
|
|
4
|
+
* Determines whether the function with the given id is a higher-order function, i.e.,
|
|
5
|
+
* either takes a function as an argument or (may) returns a function.
|
|
6
|
+
* If the return is an identity, e.g., `function(x) x`, this is not considered higher-order,
|
|
7
|
+
* if no function is passed as an argument.
|
|
8
|
+
*/
|
|
9
|
+
export declare function isHigherOrder(id: NodeId, graph: DataflowGraph): boolean;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isHigherOrder = isHigherOrder;
|
|
4
|
+
const vertex_1 = require("../graph/vertex");
|
|
5
|
+
const assert_1 = require("../../util/assert");
|
|
6
|
+
const edge_1 = require("../graph/edge");
|
|
7
|
+
const alias_tracking_1 = require("../eval/resolve/alias-tracking");
|
|
8
|
+
const config_1 = require("../../config");
|
|
9
|
+
const r_function_call_1 = require("../../r-bridge/lang-4.x/ast/model/nodes/r-function-call");
|
|
10
|
+
const general_1 = require("../eval/values/general");
|
|
11
|
+
function isAnyReturnAFunction(def, graph) {
|
|
12
|
+
const workingQueue = def.exitPoints.map(d => graph.getVertex(d, true)).filter(assert_1.isNotUndefined);
|
|
13
|
+
const seen = new Set();
|
|
14
|
+
while (workingQueue.length > 0) {
|
|
15
|
+
const current = workingQueue.pop();
|
|
16
|
+
if (seen.has(current.id)) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
seen.add(current.id);
|
|
20
|
+
if ((0, vertex_1.isFunctionDefinitionVertex)(current)) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
const next = graph.outgoingEdges(current.id) ?? [];
|
|
24
|
+
for (const [t, { types }] of next) {
|
|
25
|
+
if ((0, edge_1.edgeIncludesType)(types, edge_1.EdgeType.Returns)) {
|
|
26
|
+
const v = graph.getVertex(t, true);
|
|
27
|
+
if (v) {
|
|
28
|
+
workingQueue.push(v);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
function inspectCallSitesArgumentsFns(def, graph) {
|
|
36
|
+
const callSites = graph.ingoingEdges(def.id);
|
|
37
|
+
for (const [callerId, { types }] of callSites ?? []) {
|
|
38
|
+
if (!(0, edge_1.edgeIncludesType)(types, edge_1.EdgeType.Calls)) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
const caller = graph.getVertex(callerId, true);
|
|
42
|
+
if (!caller || !(0, vertex_1.isFunctionCallVertex)(caller)) {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
for (const arg of caller.args) {
|
|
46
|
+
if (arg === r_function_call_1.EmptyArgument) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const value = (0, general_1.valueSetGuard)((0, alias_tracking_1.resolveIdToValue)(arg.nodeId, { graph, idMap: graph.idMap, resolve: config_1.VariableResolve.Alias, full: true }));
|
|
50
|
+
if (value?.elements.some(e => e.type === 'function-definition')) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Determines whether the function with the given id is a higher-order function, i.e.,
|
|
59
|
+
* either takes a function as an argument or (may) returns a function.
|
|
60
|
+
* If the return is an identity, e.g., `function(x) x`, this is not considered higher-order,
|
|
61
|
+
* if no function is passed as an argument.
|
|
62
|
+
*/
|
|
63
|
+
function isHigherOrder(id, graph) {
|
|
64
|
+
const vert = graph.getVertex(id);
|
|
65
|
+
if (!vert || !(0, vertex_1.isFunctionDefinitionVertex)(vert)) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
// 1. check whether any of the exit types is a function
|
|
69
|
+
if (isAnyReturnAFunction(vert, graph)) {
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
// 2. check whether any of the callsites passes a function
|
|
73
|
+
return inspectCallSitesArgumentsFns(vert, graph);
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=higher-order-function.js.map
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
2
2
|
import type { AstIdMap } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
3
|
-
import type
|
|
4
|
-
import {
|
|
5
|
-
import type
|
|
6
|
-
import type { DataflowGraphVertexAstLink, DataflowGraphVertexUse, FunctionOriginInformation } from './vertex';
|
|
3
|
+
import { type DataflowFunctionFlowInformation, type FunctionArgument, DataflowGraph } from './graph';
|
|
4
|
+
import { type IEnvironment, type REnvironmentInformation } from '../environments/environment';
|
|
5
|
+
import { type DataflowGraphVertexAstLink, type DataflowGraphVertexUse, type FunctionOriginInformation } from './vertex';
|
|
7
6
|
import type { ControlDependency } from '../info';
|
|
8
7
|
import type { LinkTo } from '../../queries/catalog/call-context-query/call-context-query-format';
|
|
9
8
|
import type { FlowrSearchLike } from '../../search/flowr-search-builder';
|
|
10
|
-
import type {
|
|
9
|
+
import type { ReadonlyFlowrAnalysisProvider } from '../../project/flowr-analyzer';
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
11
13
|
export declare function emptyGraph(idMap?: AstIdMap): DataflowGraphBuilder;
|
|
12
14
|
export type DataflowGraphEdgeTarget = NodeId | (readonly NodeId[]);
|
|
13
15
|
/**
|
|
@@ -18,7 +20,6 @@ export type DataflowGraphEdgeTarget = NodeId | (readonly NodeId[]);
|
|
|
18
20
|
export declare class DataflowGraphBuilder extends DataflowGraph {
|
|
19
21
|
/**
|
|
20
22
|
* Adds a **vertex** for a **function definition** (V1).
|
|
21
|
-
*
|
|
22
23
|
* @param id - AST node ID
|
|
23
24
|
* @param subflow - Subflow data graph for the defined function.
|
|
24
25
|
* @param exitPoints - Node IDs for exit point vertices.
|
|
@@ -33,7 +34,6 @@ export declare class DataflowGraphBuilder extends DataflowGraph {
|
|
|
33
34
|
}, asRoot?: boolean): this;
|
|
34
35
|
/**
|
|
35
36
|
* Adds a **vertex** for a **function call** (V2).
|
|
36
|
-
*
|
|
37
37
|
* @param id - AST node ID
|
|
38
38
|
* @param name - Function name
|
|
39
39
|
* @param args - Function arguments; may be empty
|
|
@@ -55,7 +55,6 @@ export declare class DataflowGraphBuilder extends DataflowGraph {
|
|
|
55
55
|
private addArgumentLinks;
|
|
56
56
|
/**
|
|
57
57
|
* Adds a **vertex** for a **variable definition** (V4).
|
|
58
|
-
*
|
|
59
58
|
* @param id - AST node ID
|
|
60
59
|
* @param name - Variable name
|
|
61
60
|
* @param info - Additional/optional properties.
|
|
@@ -68,7 +67,6 @@ export declare class DataflowGraphBuilder extends DataflowGraph {
|
|
|
68
67
|
}, asRoot?: boolean): this;
|
|
69
68
|
/**
|
|
70
69
|
* Adds a **vertex** for **variable use** (V5). Intended for creating dataflow graphs as part of function tests.
|
|
71
|
-
*
|
|
72
70
|
* @param id - AST node id
|
|
73
71
|
* @param name - Variable name
|
|
74
72
|
* @param info - Additional/optional properties; i.e., scope, when, or environment.
|
|
@@ -78,7 +76,6 @@ export declare class DataflowGraphBuilder extends DataflowGraph {
|
|
|
78
76
|
use(id: NodeId, name?: string, info?: Partial<DataflowGraphVertexUse>, asRoot?: boolean): this;
|
|
79
77
|
/**
|
|
80
78
|
* Adds a **vertex** for a **constant value** (V6).
|
|
81
|
-
*
|
|
82
79
|
* @param id - AST node ID
|
|
83
80
|
* @param options - Additional/optional properties;
|
|
84
81
|
* @param asRoot - should the vertex be part of the root vertex set of the graph
|
|
@@ -91,7 +88,6 @@ export declare class DataflowGraphBuilder extends DataflowGraph {
|
|
|
91
88
|
private queryHelper;
|
|
92
89
|
/**
|
|
93
90
|
* Adds a **read edge**.
|
|
94
|
-
*
|
|
95
91
|
* @param from - NodeId of the source vertex
|
|
96
92
|
* @param to - Either a single or multiple target ids.
|
|
97
93
|
* If you pass multiple this will construct a single edge for each of them.
|
|
@@ -99,115 +95,101 @@ export declare class DataflowGraphBuilder extends DataflowGraph {
|
|
|
99
95
|
reads(from: NodeId, to: DataflowGraphEdgeTarget): this;
|
|
100
96
|
/**
|
|
101
97
|
* Adds a **read edge** with a query for the from and/or to vertices.
|
|
102
|
-
*
|
|
103
98
|
* @param from - Either a node id or a query to find the node id.
|
|
104
99
|
* @param to - Either a node id or a query to find the node id.
|
|
105
100
|
* @param input - The input to search in i.e. the dataflow graph.
|
|
106
101
|
*/
|
|
107
|
-
readsQuery(from: FromQueryParam, to: ToQueryParam, input:
|
|
102
|
+
readsQuery(from: FromQueryParam, to: ToQueryParam, input: ReadonlyFlowrAnalysisProvider): Promise<this>;
|
|
108
103
|
/**
|
|
109
104
|
* Adds a **defined-by edge** with from as defined variable, and to
|
|
110
105
|
* as a variable/function contributing to its definition.
|
|
111
|
-
*
|
|
112
106
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
113
107
|
*/
|
|
114
108
|
definedBy(from: NodeId, to: DataflowGraphEdgeTarget): this;
|
|
115
109
|
/**
|
|
116
110
|
* Adds a **defined-by edge** with a query for the from and/or to vertices.
|
|
117
|
-
*
|
|
118
111
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
119
112
|
*/
|
|
120
|
-
definedByQuery(from: FromQueryParam, to: ToQueryParam, data:
|
|
113
|
+
definedByQuery(from: FromQueryParam, to: ToQueryParam, data: ReadonlyFlowrAnalysisProvider): Promise<this>;
|
|
121
114
|
/**
|
|
122
115
|
* Adds a **call edge** with from as caller, and to as callee.
|
|
123
|
-
*
|
|
124
116
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
125
117
|
*/
|
|
126
118
|
calls(from: NodeId, to: DataflowGraphEdgeTarget): this;
|
|
127
119
|
/**
|
|
128
120
|
* Adds a **call edge** with a query for the from and/or to vertices.
|
|
129
|
-
*
|
|
130
121
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
131
122
|
*/
|
|
132
|
-
callsQuery(from: FromQueryParam, to: ToQueryParam, data:
|
|
123
|
+
callsQuery(from: FromQueryParam, to: ToQueryParam, data: ReadonlyFlowrAnalysisProvider): Promise<this>;
|
|
133
124
|
/**
|
|
134
125
|
* Adds a **return edge** with from as function, and to as exit point.
|
|
135
|
-
*
|
|
136
126
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
137
127
|
*/
|
|
138
128
|
returns(from: NodeId, to: DataflowGraphEdgeTarget): this;
|
|
139
129
|
/**
|
|
140
130
|
* Adds a **return edge** with a query for the from and/or to vertices.
|
|
141
|
-
*
|
|
142
131
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
143
132
|
*/
|
|
144
|
-
returnsQuery(from: FromQueryParam, to: ToQueryParam, data:
|
|
133
|
+
returnsQuery(from: FromQueryParam, to: ToQueryParam, data: ReadonlyFlowrAnalysisProvider): Promise<this>;
|
|
145
134
|
/**
|
|
146
135
|
* Adds a **defines-on-call edge** with from as variable, and to as its definition
|
|
147
|
-
*
|
|
148
136
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
149
137
|
*/
|
|
150
138
|
definesOnCall(from: NodeId, to: DataflowGraphEdgeTarget): this;
|
|
151
139
|
/**
|
|
152
140
|
* Adds a **defines-on-call edge** with a query for the from and/or to vertices.
|
|
153
|
-
*
|
|
154
141
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
155
142
|
*/
|
|
156
|
-
definesOnCallQuery(from: FromQueryParam, to: ToQueryParam, data:
|
|
143
|
+
definesOnCallQuery(from: FromQueryParam, to: ToQueryParam, data: ReadonlyFlowrAnalysisProvider): Promise<this>;
|
|
157
144
|
/**
|
|
158
145
|
* Adds a **defined-by-on-call edge** with from as definition, and to as variable.
|
|
159
|
-
*
|
|
160
146
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
161
147
|
*/
|
|
162
148
|
definedByOnCall(from: NodeId, to: DataflowGraphEdgeTarget): this;
|
|
163
149
|
/**
|
|
164
150
|
* Adds a **defined-by-on-call edge** with a query for the from and/or to vertices.
|
|
165
|
-
*
|
|
166
151
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
167
152
|
*/
|
|
168
|
-
definedByOnCallQuery(from: FromQueryParam, to: ToQueryParam, data:
|
|
153
|
+
definedByOnCallQuery(from: FromQueryParam, to: ToQueryParam, data: ReadonlyFlowrAnalysisProvider): Promise<this>;
|
|
169
154
|
/**
|
|
170
155
|
* Adds an **argument edge** with from as function call, and to as argument.
|
|
171
|
-
*
|
|
172
156
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
173
157
|
*/
|
|
174
158
|
argument(from: NodeId, to: DataflowGraphEdgeTarget): this;
|
|
175
159
|
/**
|
|
176
160
|
* Adds a **argument edge** with a query for the from and/or to vertices.
|
|
177
|
-
*
|
|
178
161
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
179
162
|
*/
|
|
180
|
-
argumentQuery(from: FromQueryParam, to: ToQueryParam, data:
|
|
163
|
+
argumentQuery(from: FromQueryParam, to: ToQueryParam, data: ReadonlyFlowrAnalysisProvider): Promise<this>;
|
|
181
164
|
/**
|
|
182
165
|
* Adds a **non-standard evaluation edge** with from as vertex, and to as vertex.
|
|
183
|
-
*
|
|
184
166
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
185
167
|
*/
|
|
186
168
|
nse(from: NodeId, to: DataflowGraphEdgeTarget): this;
|
|
187
169
|
/**
|
|
188
170
|
* Adds a **non-standard evaluation edge** with a query for the from and/or to vertices.
|
|
189
|
-
*
|
|
190
171
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
191
172
|
*/
|
|
192
|
-
nseQuery(from: FromQueryParam, to: ToQueryParam, data:
|
|
173
|
+
nseQuery(from: FromQueryParam, to: ToQueryParam, data: ReadonlyFlowrAnalysisProvider): Promise<this>;
|
|
193
174
|
/**
|
|
194
175
|
* Adds a **side-effect-on-call edge** with from as vertex, and to as vertex.
|
|
195
|
-
*
|
|
196
176
|
* @see {@link DataflowGraphBuilder#reads|reads} for parameters.
|
|
197
177
|
*/
|
|
198
178
|
sideEffectOnCall(from: NodeId, to: DataflowGraphEdgeTarget): this;
|
|
199
179
|
/**
|
|
200
180
|
* Adds a **side-effect-on-call edge** with a query for the from and/or to vertices.
|
|
201
|
-
*
|
|
202
181
|
* @see {@link DataflowGraphBuilder#readsQuery|readsQuery} for parameters.
|
|
203
182
|
*/
|
|
204
|
-
sideEffectOnCallQuery(from: FromQueryParam, to: ToQueryParam, data:
|
|
183
|
+
sideEffectOnCallQuery(from: FromQueryParam, to: ToQueryParam, data: ReadonlyFlowrAnalysisProvider): Promise<this>;
|
|
205
184
|
/**
|
|
206
185
|
* explicitly overwrite the root ids of the graph,
|
|
207
186
|
* this is just an easier variant in case you working with a lot of functions this saves you a lot of `false` flags.
|
|
208
187
|
*/
|
|
209
188
|
overwriteRootIds(ids: readonly NodeId[]): this;
|
|
210
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
*
|
|
192
|
+
*/
|
|
211
193
|
export declare function getBuiltInSideEffect(name: string): LinkTo<RegExp> | undefined;
|
|
212
194
|
interface Query {
|
|
213
195
|
query: FlowrSearchLike;
|
|
@@ -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;
|