@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
|
@@ -4,7 +4,9 @@ exports.DataFrameOperationNames = exports.ConstraintType = void 0;
|
|
|
4
4
|
exports.applyDataFrameSemantics = applyDataFrameSemantics;
|
|
5
5
|
exports.getConstraintType = getConstraintType;
|
|
6
6
|
const assert_1 = require("../../util/assert");
|
|
7
|
-
const
|
|
7
|
+
const lattice_1 = require("../domains/lattice");
|
|
8
|
+
const positive_interval_domain_1 = require("../domains/positive-interval-domain");
|
|
9
|
+
const dataframe_domain_1 = require("./dataframe-domain");
|
|
8
10
|
/**
|
|
9
11
|
* Represents the different types of resulting constraints that are inferred by abstract data frame operations.
|
|
10
12
|
*/
|
|
@@ -50,7 +52,6 @@ exports.DataFrameOperationNames = Object.keys(DataFrameSemanticsMapper);
|
|
|
50
52
|
/**
|
|
51
53
|
* Applies the abstract semantics of an abstract data frame operation with respect to the data frame shape domain.
|
|
52
54
|
* This expects that all arguments have already been sanitized according to the original concrete data frame function (e.g. by replacing duplicate/invalid column names).
|
|
53
|
-
*
|
|
54
55
|
* @param operation - The name of the abstract operation to apply the semantics of
|
|
55
56
|
* @param value - The abstract data frame shape of the operand of the abstract operation
|
|
56
57
|
* @param args - The arguments for applying the abstract semantics of the abstract operation
|
|
@@ -69,255 +70,264 @@ function getConstraintType(operation) {
|
|
|
69
70
|
return DataFrameSemanticsMapper[operation].type;
|
|
70
71
|
}
|
|
71
72
|
function applyCreateSemantics(value, { colnames, rows }) {
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
const colnamesValue = colnames?.every(assert_1.isNotUndefined) ? colnames : lattice_1.Top;
|
|
74
|
+
const colsValue = colnames !== undefined ? [colnames.length, colnames.length] : positive_interval_domain_1.PosIntervalTop;
|
|
75
|
+
const rowsValue = Array.isArray(rows) ? rows : typeof rows === 'number' ? [rows, rows] : positive_interval_domain_1.PosIntervalTop;
|
|
76
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
77
|
+
colnames: value.colnames.create(colnamesValue),
|
|
78
|
+
cols: value.cols.create(colsValue),
|
|
79
|
+
rows: value.rows.create(rowsValue)
|
|
80
|
+
});
|
|
78
81
|
}
|
|
79
82
|
function applyReadSemantics(value, { colnames, rows }) {
|
|
80
83
|
return applyCreateSemantics(value, { colnames, rows });
|
|
81
84
|
}
|
|
82
85
|
function applyAccessColsSemantics(value, { columns }) {
|
|
83
86
|
if (columns?.every(col => typeof col === 'string')) {
|
|
84
|
-
return {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
87
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
88
|
+
colnames: value.colnames.join(columns),
|
|
89
|
+
cols: value.cols,
|
|
90
|
+
rows: value.rows
|
|
91
|
+
});
|
|
88
92
|
}
|
|
89
93
|
else if (columns?.every(col => typeof col === 'number')) {
|
|
90
|
-
return {
|
|
91
|
-
|
|
92
|
-
cols: columns
|
|
93
|
-
|
|
94
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
95
|
+
colnames: value.colnames,
|
|
96
|
+
cols: columns?.reduce((current, col) => current.max([col, col]), value.cols),
|
|
97
|
+
rows: value.rows
|
|
98
|
+
});
|
|
94
99
|
}
|
|
95
100
|
return value;
|
|
96
101
|
}
|
|
97
102
|
function applyAccessRowsSemantics(value, { rows }) {
|
|
98
103
|
if (rows !== undefined) {
|
|
99
|
-
return {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
104
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
105
|
+
colnames: value.colnames,
|
|
106
|
+
cols: value.cols,
|
|
107
|
+
rows: rows.reduce((current, row) => current.max([row, row]), value.rows)
|
|
108
|
+
});
|
|
103
109
|
}
|
|
104
110
|
return value;
|
|
105
111
|
}
|
|
106
112
|
function applyAssignColsSemantics(value, { columns }) {
|
|
107
113
|
if (columns?.every(col => typeof col === 'string')) {
|
|
108
114
|
const cols = columns.length;
|
|
109
|
-
return {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
};
|
|
115
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
116
|
+
colnames: value.colnames.join(columns),
|
|
117
|
+
cols: value.cols.add([0, cols]).max([cols, cols]),
|
|
118
|
+
rows: value.rows
|
|
119
|
+
});
|
|
114
120
|
}
|
|
115
121
|
else if (columns?.every(col => typeof col === 'number')) {
|
|
116
|
-
return {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
};
|
|
122
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
123
|
+
colnames: value.colnames.top(),
|
|
124
|
+
cols: columns.reduce((current, col) => current.max([col, col]), value.cols),
|
|
125
|
+
rows: value.rows
|
|
126
|
+
});
|
|
121
127
|
}
|
|
122
|
-
return {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
};
|
|
128
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
129
|
+
colnames: value.colnames.top(),
|
|
130
|
+
cols: value.cols.extendUp(),
|
|
131
|
+
rows: value.rows
|
|
132
|
+
});
|
|
127
133
|
}
|
|
128
134
|
function applyAssignRowsSemantics(value, { rows }) {
|
|
129
135
|
if (rows !== undefined) {
|
|
130
|
-
return {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
136
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
137
|
+
colnames: value.colnames,
|
|
138
|
+
cols: value.cols,
|
|
139
|
+
rows: rows.reduce((current, row) => current.max([row, row]), value.rows)
|
|
140
|
+
});
|
|
134
141
|
}
|
|
135
|
-
return {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
142
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
143
|
+
colnames: value.colnames,
|
|
144
|
+
cols: value.cols,
|
|
145
|
+
rows: value.rows.extendUp()
|
|
146
|
+
});
|
|
139
147
|
}
|
|
140
148
|
function applySetColNamesSemantics(value, { colnames }, options) {
|
|
141
149
|
if (options?.partial) {
|
|
142
|
-
return {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
150
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
151
|
+
colnames: colnames?.every(assert_1.isNotUndefined) ? value.colnames.join(colnames) : value.colnames.top(),
|
|
152
|
+
cols: value.cols,
|
|
153
|
+
rows: value.rows
|
|
154
|
+
});
|
|
146
155
|
}
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
};
|
|
156
|
+
const allColNames = colnames?.every(assert_1.isNotUndefined) && value.cols.value !== lattice_1.Bottom && colnames.length >= value.cols.value[1];
|
|
157
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
158
|
+
colnames: allColNames ? value.colnames.create(colnames) : value.colnames.top(),
|
|
159
|
+
cols: value.cols,
|
|
160
|
+
rows: value.rows
|
|
161
|
+
});
|
|
153
162
|
}
|
|
154
163
|
function applyAddColsSemantics(value, { colnames }) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
};
|
|
164
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
165
|
+
colnames: colnames?.every(assert_1.isNotUndefined) ? value.colnames.join(colnames) : value.colnames.top(),
|
|
166
|
+
cols: colnames !== undefined ? value.cols.add([colnames.length, colnames.length]) : value.cols.extendUp(),
|
|
167
|
+
rows: value.rows
|
|
168
|
+
});
|
|
161
169
|
}
|
|
162
170
|
function applyAddRowsSemantics(value, { rows }) {
|
|
163
|
-
return {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
171
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
172
|
+
colnames: value.colnames,
|
|
173
|
+
cols: value.cols,
|
|
174
|
+
rows: rows !== undefined ? value.rows.add([rows, rows]) : value.rows.extendUp()
|
|
175
|
+
});
|
|
167
176
|
}
|
|
168
177
|
function applyRemoveColsSemantics(value, { colnames }, options) {
|
|
169
|
-
const cols = colnames?.length;
|
|
170
178
|
if (options?.maybe) {
|
|
171
|
-
return {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
};
|
|
179
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
180
|
+
colnames: colnames !== undefined ? value.colnames.subtract(colnames.filter(assert_1.isNotUndefined)) : value.colnames,
|
|
181
|
+
cols: colnames !== undefined ? value.cols.subtract([colnames.length, 0]) : value.cols.extendDown(),
|
|
182
|
+
rows: value.rows
|
|
183
|
+
});
|
|
176
184
|
}
|
|
177
|
-
return {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
};
|
|
185
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
186
|
+
colnames: colnames !== undefined ? value.colnames.subtract(colnames.filter(assert_1.isNotUndefined)) : value.colnames,
|
|
187
|
+
cols: colnames !== undefined ? value.cols.subtract([colnames.length, colnames.length]) : value.cols.extendDown(),
|
|
188
|
+
rows: value.rows
|
|
189
|
+
});
|
|
182
190
|
}
|
|
183
191
|
function applyRemoveRowsSemantics(value, { rows }, options) {
|
|
184
192
|
if (options?.maybe) {
|
|
185
|
-
return {
|
|
186
|
-
|
|
187
|
-
cols:
|
|
188
|
-
|
|
193
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
194
|
+
colnames: value.colnames,
|
|
195
|
+
cols: value.cols,
|
|
196
|
+
rows: rows !== undefined ? value.rows.subtract([rows, 0]) : value.rows.extendDown()
|
|
197
|
+
});
|
|
189
198
|
}
|
|
190
|
-
return {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
199
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
200
|
+
colnames: value.colnames,
|
|
201
|
+
cols: value.cols,
|
|
202
|
+
rows: rows !== undefined ? value.rows.subtract([rows, rows]) : value.rows.extendDown()
|
|
203
|
+
});
|
|
194
204
|
}
|
|
195
205
|
function applyConcatColsSemantics(value, { other }) {
|
|
196
|
-
return {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
};
|
|
206
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
207
|
+
colnames: value.colnames.join(other.colnames),
|
|
208
|
+
cols: value.cols.add(other.cols),
|
|
209
|
+
rows: value.rows
|
|
210
|
+
});
|
|
201
211
|
}
|
|
202
212
|
function applyConcatRowsSemantics(value, { other }) {
|
|
203
|
-
if (value.cols !==
|
|
204
|
-
return {
|
|
213
|
+
if (value.cols.value !== lattice_1.Bottom && value.cols.value[0] === 0) {
|
|
214
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
205
215
|
...value,
|
|
206
|
-
colnames:
|
|
207
|
-
cols:
|
|
208
|
-
rows:
|
|
209
|
-
};
|
|
216
|
+
colnames: value.colnames.join(other.colnames),
|
|
217
|
+
cols: value.cols.join(other.cols),
|
|
218
|
+
rows: value.rows.add(other.rows)
|
|
219
|
+
});
|
|
210
220
|
}
|
|
211
|
-
return {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
221
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
222
|
+
colnames: value.colnames,
|
|
223
|
+
cols: value.cols,
|
|
224
|
+
rows: value.rows.add(other.rows)
|
|
225
|
+
});
|
|
215
226
|
}
|
|
216
227
|
function applySubsetColsSemantics(value, { colnames }, options) {
|
|
217
|
-
const cols = colnames?.length;
|
|
218
228
|
if (options?.duplicateCols) {
|
|
219
|
-
return {
|
|
220
|
-
|
|
221
|
-
colnames:
|
|
222
|
-
|
|
223
|
-
};
|
|
229
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
230
|
+
colnames: value.colnames.top(),
|
|
231
|
+
cols: colnames !== undefined ? value.cols.create([colnames.length, colnames.length]) : value.cols.top(),
|
|
232
|
+
rows: value.rows
|
|
233
|
+
});
|
|
224
234
|
}
|
|
225
235
|
else if (options?.renamedCols) {
|
|
226
|
-
return {
|
|
227
|
-
|
|
228
|
-
colnames:
|
|
229
|
-
|
|
230
|
-
};
|
|
236
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
237
|
+
colnames: value.colnames.top(),
|
|
238
|
+
cols: colnames !== undefined ? value.cols.min([colnames.length, colnames.length]) : value.cols.extendDown(),
|
|
239
|
+
rows: value.rows
|
|
240
|
+
});
|
|
231
241
|
}
|
|
232
|
-
return {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
};
|
|
242
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
243
|
+
colnames: colnames?.every(assert_1.isNotUndefined) ? value.colnames.meet(colnames) : value.colnames,
|
|
244
|
+
cols: colnames !== undefined ? value.cols.min([colnames.length, colnames.length]) : value.cols.extendDown(),
|
|
245
|
+
rows: value.rows
|
|
246
|
+
});
|
|
237
247
|
}
|
|
238
248
|
function applySubsetRowsSemantics(value, { rows }, options) {
|
|
239
249
|
if (options?.duplicateRows) {
|
|
240
|
-
return {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
250
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
251
|
+
colnames: value.colnames,
|
|
252
|
+
cols: value.cols,
|
|
253
|
+
rows: rows !== undefined ? value.rows.create([rows, rows]) : value.rows.top()
|
|
254
|
+
});
|
|
244
255
|
}
|
|
245
|
-
return {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
256
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
257
|
+
colnames: value.colnames,
|
|
258
|
+
cols: value.cols,
|
|
259
|
+
rows: rows !== undefined ? value.rows.min([rows, rows]) : value.rows.extendDown()
|
|
260
|
+
});
|
|
249
261
|
}
|
|
250
262
|
function applyFilterRowsSemantics(value, { condition }) {
|
|
251
|
-
return {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
263
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
264
|
+
colnames: value.colnames,
|
|
265
|
+
cols: value.cols,
|
|
266
|
+
rows: condition ? value.rows : condition === false ? value.rows.create([0, 0]) : value.rows.extendDown()
|
|
267
|
+
});
|
|
255
268
|
}
|
|
256
269
|
function applyMutateColsSemantics(value, { colnames }) {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
};
|
|
270
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
271
|
+
colnames: colnames?.every(assert_1.isNotUndefined) ? value.colnames.join(colnames) : value.colnames.top(),
|
|
272
|
+
cols: colnames !== undefined ? value.cols.add([0, colnames.length]).max([colnames.length, colnames.length]) : value.cols.extendUp(),
|
|
273
|
+
rows: value.rows
|
|
274
|
+
});
|
|
263
275
|
}
|
|
264
276
|
function applyGroupBySemantics(value, { by }, options) {
|
|
265
277
|
if (options?.mutatedCols) {
|
|
266
|
-
return {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
};
|
|
278
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
279
|
+
colnames: by.every(assert_1.isNotUndefined) ? value.colnames.join(by) : value.colnames.top(),
|
|
280
|
+
cols: value.cols.add([0, by.length]),
|
|
281
|
+
rows: value.rows
|
|
282
|
+
});
|
|
271
283
|
}
|
|
272
284
|
// Group by only marks columns as groups but does not change the shape itself
|
|
273
285
|
return value;
|
|
274
286
|
}
|
|
275
287
|
function applySummarizeSemantics(value, { colnames }) {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
rows: (0, domain_1.maxInterval)((0, domain_1.minInterval)(value.rows, [1, Infinity]), [0, 1])
|
|
282
|
-
};
|
|
288
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
289
|
+
colnames: colnames?.every(assert_1.isNotUndefined) ? value.colnames.join(colnames) : value.colnames.top(),
|
|
290
|
+
cols: colnames !== undefined ? value.cols.add([0, colnames.length]).min([colnames.length, +Infinity]) : value.cols.extendUp(),
|
|
291
|
+
rows: value.rows.min([1, +Infinity]).max([0, 1])
|
|
292
|
+
});
|
|
283
293
|
}
|
|
284
294
|
function applyJoinSemantics(value, { other, by }, options) {
|
|
285
295
|
// Merge two intervals by creating the maximum of the lower bounds and adding the upper bounds
|
|
286
296
|
const mergeInterval = (interval1, interval2) => {
|
|
287
|
-
if (interval1 ===
|
|
288
|
-
return
|
|
297
|
+
if (interval1.value === lattice_1.Bottom || interval2.value === lattice_1.Bottom) {
|
|
298
|
+
return interval1.bottom();
|
|
289
299
|
}
|
|
290
300
|
else {
|
|
291
|
-
return [Math.max(interval1[0], interval2[0]), interval1[1] + interval2[1]];
|
|
301
|
+
return new positive_interval_domain_1.PosIntervalDomain([Math.max(interval1.value[0], interval2.value[0]), interval1.value[1] + interval2.value[1]]);
|
|
292
302
|
}
|
|
293
303
|
};
|
|
294
304
|
// Creating the Cartesian product of two intervals by keeping the lower bound and multiplying the upper bounds
|
|
295
305
|
const productInterval = (lower, interval1, interval2) => {
|
|
296
|
-
if (lower ===
|
|
297
|
-
return
|
|
306
|
+
if (lower.value === lattice_1.Bottom || interval1.value === lattice_1.Bottom || interval2.value === lattice_1.Bottom) {
|
|
307
|
+
return lower.bottom();
|
|
298
308
|
}
|
|
299
309
|
else {
|
|
300
|
-
return [lower[0], interval1[1] * interval2[1]];
|
|
310
|
+
return new positive_interval_domain_1.PosIntervalDomain([lower.value[0], interval1.value[1] * interval2.value[1]]);
|
|
301
311
|
}
|
|
302
312
|
};
|
|
303
|
-
const commonCols =
|
|
313
|
+
const commonCols = value.colnames.meet(other.colnames);
|
|
304
314
|
let duplicateCols; // whether columns may be renamed due to occurrence in both data frames
|
|
305
315
|
let productRows; // whether the resulting rows may be a Cartesian product of the rows of the data frames
|
|
306
316
|
if (options?.natural) {
|
|
307
317
|
duplicateCols = false;
|
|
308
|
-
productRows = commonCols
|
|
318
|
+
productRows = commonCols.isValue() && commonCols.value.size === 0;
|
|
309
319
|
}
|
|
310
320
|
else if (by === undefined) {
|
|
311
321
|
duplicateCols = true;
|
|
312
322
|
productRows = true;
|
|
313
323
|
}
|
|
314
324
|
else if (by.length === 0) {
|
|
315
|
-
duplicateCols = commonCols
|
|
325
|
+
duplicateCols = commonCols.isTop() || (commonCols.isValue() && commonCols.value.size > 0);
|
|
316
326
|
productRows = true;
|
|
317
327
|
}
|
|
318
328
|
else if (by.every(assert_1.isNotUndefined)) {
|
|
319
|
-
const remainingCols =
|
|
320
|
-
duplicateCols = remainingCols
|
|
329
|
+
const remainingCols = commonCols.subtract(by);
|
|
330
|
+
duplicateCols = remainingCols.isTop() || (remainingCols.isValue() && remainingCols.value.size > 0);
|
|
321
331
|
productRows = false;
|
|
322
332
|
}
|
|
323
333
|
else {
|
|
@@ -328,7 +338,7 @@ function applyJoinSemantics(value, { other, by }, options) {
|
|
|
328
338
|
let rows;
|
|
329
339
|
switch (joinType) {
|
|
330
340
|
case 'inner':
|
|
331
|
-
rows =
|
|
341
|
+
rows = value.rows.min(other.rows).extendDown();
|
|
332
342
|
break;
|
|
333
343
|
case 'left':
|
|
334
344
|
rows = value.rows;
|
|
@@ -342,22 +352,21 @@ function applyJoinSemantics(value, { other, by }, options) {
|
|
|
342
352
|
default:
|
|
343
353
|
(0, assert_1.assertUnreachable)(joinType);
|
|
344
354
|
}
|
|
345
|
-
|
|
346
|
-
return {
|
|
355
|
+
return new dataframe_domain_1.DataFrameDomain({
|
|
347
356
|
...value,
|
|
348
|
-
colnames: duplicateCols ?
|
|
349
|
-
cols:
|
|
357
|
+
colnames: duplicateCols ? value.colnames.top() : value.colnames.join(other.colnames),
|
|
358
|
+
cols: by !== undefined ? value.cols.add(other.cols).subtract([by.length, by.length]) : mergeInterval(value.cols, other.cols),
|
|
350
359
|
rows: productRows ? productInterval(rows, value.rows, other.rows) : rows
|
|
351
|
-
};
|
|
360
|
+
});
|
|
352
361
|
}
|
|
353
362
|
function applyIdentitySemantics(value,
|
|
354
363
|
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
355
364
|
_args) {
|
|
356
365
|
return value;
|
|
357
366
|
}
|
|
358
|
-
function applyUnknownSemantics(
|
|
367
|
+
function applyUnknownSemantics(value,
|
|
359
368
|
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
360
369
|
_args) {
|
|
361
|
-
return
|
|
370
|
+
return value.top();
|
|
362
371
|
}
|
|
363
372
|
//# sourceMappingURL=semantics.js.map
|
|
@@ -5,11 +5,10 @@ import type { RNode } from '../../r-bridge/lang-4.x/ast/model/model';
|
|
|
5
5
|
import type { NormalizedAst, ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
6
6
|
import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
7
7
|
import { type AbstractInterpretationInfo } from './absint-info';
|
|
8
|
-
import { type DataFrameDomain,
|
|
8
|
+
import { type DataFrameDomain, DataFrameStateDomain } from './dataframe-domain';
|
|
9
9
|
/**
|
|
10
10
|
* Infers the shape of data frames by performing abstract interpretation using the control flow graph of a program.
|
|
11
11
|
* This directly attaches the inferred data frames shapes to the AST (see {@link AbstractInterpretationInfo}).
|
|
12
|
-
*
|
|
13
12
|
* @param cfinfo - The control flow information containing the control flow graph
|
|
14
13
|
* @param dfg - The data flow graph to resolve variable origins and function arguments
|
|
15
14
|
* @param ast - The abstract syntax tree to resolve node IDs to AST nodes
|
|
@@ -21,7 +20,6 @@ export declare function inferDataFrameShapes(cfinfo: ControlFlowInformation, dfg
|
|
|
21
20
|
/**
|
|
22
21
|
* Resolves the abstract data frame shape of a node in the AST.
|
|
23
22
|
* This requires that the data frame shape inference has been executed before using {@link inferDataFrameShapes}.
|
|
24
|
-
*
|
|
25
23
|
* @param id - The node or node ID to get the data frame shape for
|
|
26
24
|
* @param dfg - The data flow graph used to resolve the data frame shape
|
|
27
25
|
* @param domain - An optional abstract data frame state domain used to resolve the data frame shape (defaults to the state at the requested node)
|
|
@@ -30,7 +28,6 @@ export declare function inferDataFrameShapes(cfinfo: ControlFlowInformation, dfg
|
|
|
30
28
|
export declare function resolveIdToDataFrameShape(id: RNode<ParentInformation & AbstractInterpretationInfo> | NodeId | undefined, dfg: DataflowGraph | undefined, domain?: DataFrameStateDomain): DataFrameDomain | undefined;
|
|
31
29
|
/**
|
|
32
30
|
* Gets all origins of a variable in the data flow graph that have already been visited.
|
|
33
|
-
*
|
|
34
31
|
* @param node - The node to get the origins for
|
|
35
32
|
* @param dfg - The data flow graph for resolving the origins
|
|
36
33
|
* @returns The origins nodes of the variable
|
|
@@ -9,13 +9,13 @@ const dfg_get_origin_1 = require("../../dataflow/origin/dfg-get-origin");
|
|
|
9
9
|
const r_function_call_1 = require("../../r-bridge/lang-4.x/ast/model/nodes/r-function-call");
|
|
10
10
|
const type_1 = require("../../r-bridge/lang-4.x/ast/model/type");
|
|
11
11
|
const assert_1 = require("../../util/assert");
|
|
12
|
+
const abstract_domain_1 = require("../domains/abstract-domain");
|
|
12
13
|
const absint_info_1 = require("./absint-info");
|
|
13
14
|
const absint_visitor_1 = require("./absint-visitor");
|
|
14
|
-
const
|
|
15
|
+
const dataframe_domain_1 = require("./dataframe-domain");
|
|
15
16
|
/**
|
|
16
17
|
* Infers the shape of data frames by performing abstract interpretation using the control flow graph of a program.
|
|
17
18
|
* This directly attaches the inferred data frames shapes to the AST (see {@link AbstractInterpretationInfo}).
|
|
18
|
-
*
|
|
19
19
|
* @param cfinfo - The control flow information containing the control flow graph
|
|
20
20
|
* @param dfg - The data flow graph to resolve variable origins and function arguments
|
|
21
21
|
* @param ast - The abstract syntax tree to resolve node IDs to AST nodes
|
|
@@ -28,13 +28,12 @@ function inferDataFrameShapes(cfinfo, dfg, ast, config) {
|
|
|
28
28
|
visitor.start();
|
|
29
29
|
const exitPoints = cfinfo.exitPoints.map(id => cfinfo.graph.getVertex(id)).filter(assert_1.isNotUndefined);
|
|
30
30
|
const exitNodes = exitPoints.map(vertex => ast.idMap.get((0, control_flow_graph_1.getVertexRootId)(vertex))).filter(assert_1.isNotUndefined);
|
|
31
|
-
const
|
|
32
|
-
return (
|
|
31
|
+
const domains = exitNodes.map(node => node.info.dataFrame?.domain).filter(assert_1.isNotUndefined);
|
|
32
|
+
return dataframe_domain_1.DataFrameStateDomain.bottom().joinAll(domains);
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* Resolves the abstract data frame shape of a node in the AST.
|
|
36
36
|
* This requires that the data frame shape inference has been executed before using {@link inferDataFrameShapes}.
|
|
37
|
-
*
|
|
38
37
|
* @param id - The node or node ID to get the data frame shape for
|
|
39
38
|
* @param dfg - The data flow graph used to resolve the data frame shape
|
|
40
39
|
* @param domain - An optional abstract data frame state domain used to resolve the data frame shape (defaults to the state at the requested node)
|
|
@@ -55,7 +54,7 @@ function resolveIdToDataFrameShape(id, dfg, domain) {
|
|
|
55
54
|
if (node.type === type_1.RType.Symbol) {
|
|
56
55
|
const values = getVariableOrigins(node.info.id, dfg).map(origin => domain.get(origin.info.id));
|
|
57
56
|
if (values.length > 0 && values.every(assert_1.isNotUndefined)) {
|
|
58
|
-
return
|
|
57
|
+
return abstract_domain_1.AbstractDomain.joinAll(values);
|
|
59
58
|
}
|
|
60
59
|
}
|
|
61
60
|
else if (node.type === type_1.RType.Argument && node.value !== undefined) {
|
|
@@ -79,7 +78,7 @@ function resolveIdToDataFrameShape(id, dfg, domain) {
|
|
|
79
78
|
if (node.otherwise !== undefined) {
|
|
80
79
|
const values = [node.then, node.otherwise].map(entry => resolveIdToDataFrameShape(entry, dfg, domain));
|
|
81
80
|
if (values.length > 0 && values.every(assert_1.isNotUndefined)) {
|
|
82
|
-
return
|
|
81
|
+
return abstract_domain_1.AbstractDomain.joinAll(values);
|
|
83
82
|
}
|
|
84
83
|
}
|
|
85
84
|
}
|
|
@@ -87,14 +86,13 @@ function resolveIdToDataFrameShape(id, dfg, domain) {
|
|
|
87
86
|
if (call.args.length === 3) {
|
|
88
87
|
const values = call.args.slice(1, 3).map(entry => resolveIdToDataFrameShape(entry.nodeId, dfg, domain));
|
|
89
88
|
if (values.length > 0 && values.every(assert_1.isNotUndefined)) {
|
|
90
|
-
return
|
|
89
|
+
return abstract_domain_1.AbstractDomain.joinAll(values);
|
|
91
90
|
}
|
|
92
91
|
}
|
|
93
92
|
}
|
|
94
93
|
}
|
|
95
94
|
/**
|
|
96
95
|
* Gets all origins of a variable in the data flow graph that have already been visited.
|
|
97
|
-
*
|
|
98
96
|
* @param node - The node to get the origins for
|
|
99
97
|
* @param dfg - The data flow graph for resolving the origins
|
|
100
98
|
* @returns The origins nodes of the variable
|