@eagleoutice/flowr 2.6.1 → 2.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +131 -30
- package/abstract-interpretation/data-frame/absint-info.d.ts +1 -1
- package/abstract-interpretation/data-frame/absint-visitor.d.ts +2 -3
- package/abstract-interpretation/data-frame/absint-visitor.js +15 -10
- package/abstract-interpretation/data-frame/dataframe-domain.d.ts +18 -12
- package/abstract-interpretation/data-frame/dataframe-domain.js +25 -13
- package/abstract-interpretation/data-frame/mappers/access-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/access-mapper.js +0 -1
- package/abstract-interpretation/data-frame/mappers/arguments.d.ts +1 -10
- package/abstract-interpretation/data-frame/mappers/arguments.js +0 -7
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.js +0 -1
- package/abstract-interpretation/data-frame/mappers/function-mapper.d.ts +4 -5
- package/abstract-interpretation/data-frame/mappers/function-mapper.js +3 -4
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.js +0 -1
- package/abstract-interpretation/data-frame/resolve-args.d.ts +1 -1
- package/abstract-interpretation/data-frame/semantics.d.ts +3 -4
- package/abstract-interpretation/data-frame/semantics.js +171 -162
- package/abstract-interpretation/data-frame/shape-inference.d.ts +1 -4
- package/abstract-interpretation/data-frame/shape-inference.js +7 -9
- package/abstract-interpretation/domains/abstract-domain.d.ts +59 -18
- package/abstract-interpretation/domains/abstract-domain.js +74 -1
- package/abstract-interpretation/domains/bounded-set-domain.d.ts +37 -24
- package/abstract-interpretation/domains/bounded-set-domain.js +70 -47
- package/abstract-interpretation/domains/interval-domain.d.ts +33 -25
- package/abstract-interpretation/domains/interval-domain.js +109 -50
- package/abstract-interpretation/domains/lattice.d.ts +19 -11
- package/abstract-interpretation/domains/mapped-abstract-domain.d.ts +34 -0
- package/abstract-interpretation/domains/mapped-abstract-domain.js +189 -0
- package/abstract-interpretation/domains/positive-interval-domain.d.ts +16 -12
- package/abstract-interpretation/domains/positive-interval-domain.js +20 -11
- package/abstract-interpretation/domains/product-domain.d.ts +18 -23
- package/abstract-interpretation/domains/product-domain.js +11 -19
- package/abstract-interpretation/domains/satisfiable-domain.d.ts +29 -0
- package/abstract-interpretation/domains/satisfiable-domain.js +24 -0
- package/abstract-interpretation/domains/set-upper-bound-domain.d.ts +54 -0
- package/abstract-interpretation/domains/set-upper-bound-domain.js +197 -0
- package/abstract-interpretation/domains/singleton-domain.d.ts +24 -19
- package/abstract-interpretation/domains/singleton-domain.js +52 -37
- package/abstract-interpretation/domains/state-abstract-domain.d.ts +8 -24
- package/abstract-interpretation/domains/state-abstract-domain.js +2 -167
- package/abstract-interpretation/normalized-ast-fold.d.ts +1 -7
- package/abstract-interpretation/normalized-ast-fold.js +0 -5
- package/benchmark/slicer.d.ts +3 -7
- package/benchmark/slicer.js +14 -19
- package/benchmark/stats/print.d.ts +6 -0
- package/benchmark/stats/print.js +6 -0
- package/benchmark/stats/size-of.d.ts +0 -1
- package/benchmark/stats/size-of.js +0 -1
- package/benchmark/stats/stats.d.ts +2 -2
- package/benchmark/stopwatch.d.ts +11 -13
- package/benchmark/stopwatch.js +11 -13
- package/benchmark/summarizer/first-phase/input.d.ts +6 -0
- package/benchmark/summarizer/first-phase/input.js +6 -0
- package/benchmark/summarizer/first-phase/process.d.ts +13 -1
- package/benchmark/summarizer/first-phase/process.js +12 -0
- package/benchmark/summarizer/second-phase/graph.d.ts +3 -0
- package/benchmark/summarizer/second-phase/graph.js +3 -0
- package/benchmark/summarizer/second-phase/process.d.ts +12 -0
- package/benchmark/summarizer/second-phase/process.js +12 -0
- package/benchmark/summarizer/summarizer.d.ts +1 -2
- package/cli/benchmark-app.js +0 -2
- package/cli/common/features.d.ts +7 -1
- package/cli/common/features.js +6 -0
- package/cli/common/script.d.ts +3 -1
- package/cli/common/script.js +3 -1
- package/cli/common/scripts-info.d.ts +3 -1
- package/cli/common/scripts-info.js +3 -0
- package/cli/flowr-main-options.d.ts +3 -0
- package/cli/flowr-main-options.js +3 -0
- package/cli/repl/commands/repl-commands.d.ts +13 -0
- package/cli/repl/commands/repl-commands.js +13 -2
- package/cli/repl/commands/repl-execute.d.ts +4 -0
- package/cli/repl/commands/repl-execute.js +6 -2
- package/cli/repl/commands/repl-main.d.ts +15 -9
- package/cli/repl/commands/repl-parse.js +2 -2
- package/cli/repl/commands/repl-query.js +16 -5
- package/cli/repl/core.d.ts +24 -6
- package/cli/repl/core.js +28 -19
- package/cli/repl/execute.d.ts +0 -2
- package/cli/repl/execute.js +0 -2
- package/cli/repl/parser/slice-query-parser.d.ts +14 -0
- package/cli/repl/parser/slice-query-parser.js +34 -0
- package/cli/repl/print-version.d.ts +6 -0
- package/cli/repl/print-version.js +6 -0
- package/cli/repl/server/compact.d.ts +8 -0
- package/cli/repl/server/compact.js +8 -0
- package/cli/repl/server/connection.d.ts +4 -3
- package/cli/repl/server/connection.js +3 -31
- package/cli/repl/server/messages/all-messages.d.ts +1 -3
- package/cli/repl/server/messages/all-messages.js +0 -1
- package/cli/repl/server/messages/message-analysis.d.ts +0 -2
- package/cli/repl/server/messages/message-query.d.ts +1 -1
- package/cli/repl/server/messages/message-repl.d.ts +0 -1
- package/cli/repl/server/send.d.ts +6 -0
- package/cli/repl/server/send.js +6 -0
- package/cli/repl/server/server.d.ts +1 -1
- package/cli/repl/server/validate.d.ts +10 -1
- package/cli/repl/server/validate.js +9 -0
- package/cli/run-script.d.ts +1 -2
- package/cli/run-script.js +0 -1
- package/cli/script-core/statistics-core.d.ts +3 -0
- package/cli/script-core/statistics-core.js +3 -0
- package/cli/script-core/statistics-helper-core.d.ts +4 -1
- package/cli/script-core/statistics-helper-core.js +3 -0
- package/cli/script-core/summarizer-core.d.ts +3 -0
- package/cli/script-core/summarizer-core.js +3 -0
- package/cli/summarizer-app.d.ts +2 -3
- package/cli/summarizer-app.js +2 -3
- package/config.d.ts +17 -3
- package/config.js +15 -0
- package/control-flow/basic-cfg-guided-visitor.d.ts +1 -2
- package/control-flow/basic-cfg-guided-visitor.js +0 -1
- package/control-flow/cfg-to-basic-blocks.d.ts +1 -1
- package/control-flow/control-flow-graph.d.ts +20 -12
- package/control-flow/control-flow-graph.js +16 -4
- package/control-flow/dfg-cfg-guided-visitor.d.ts +2 -3
- package/control-flow/diff-cfg.d.ts +3 -5
- package/control-flow/diff-cfg.js +0 -1
- package/control-flow/extract-cfg.d.ts +3 -6
- package/control-flow/extract-cfg.js +0 -3
- package/control-flow/happens-before.d.ts +1 -1
- package/control-flow/semantic-cfg-guided-visitor.d.ts +2 -31
- package/control-flow/semantic-cfg-guided-visitor.js +0 -28
- package/control-flow/simple-visitor.d.ts +1 -3
- package/control-flow/simple-visitor.js +0 -2
- package/control-flow/syntax-cfg-guided-visitor.d.ts +1 -2
- package/control-flow/useless-loop.d.ts +0 -3
- package/control-flow/useless-loop.js +2 -5
- package/core/pipeline-executor.d.ts +8 -16
- package/core/pipeline-executor.js +9 -18
- package/core/print/dataflow-printer.d.ts +19 -0
- package/core/print/dataflow-printer.js +19 -0
- package/core/print/normalize-printer.d.ts +21 -1
- package/core/print/normalize-printer.js +20 -0
- package/core/print/parse-printer.d.ts +6 -1
- package/core/print/parse-printer.js +5 -0
- package/core/print/print.d.ts +0 -1
- package/core/print/print.js +0 -1
- package/core/print/slice-diff-ansi.d.ts +3 -0
- package/core/print/slice-diff-ansi.js +3 -0
- package/core/steps/all/core/00-parse.d.ts +1 -1
- package/core/steps/all/core/01-parse-tree-sitter.d.ts +1 -11
- package/core/steps/all/core/10-normalize.d.ts +3 -0
- package/core/steps/all/core/10-normalize.js +3 -0
- package/core/steps/all/core/11-normalize-tree-sitter.d.ts +4 -3
- package/core/steps/pipeline/create-pipeline.d.ts +1 -1
- package/core/steps/pipeline/default-pipelines.d.ts +47 -47
- package/core/steps/pipeline/default-pipelines.js +0 -4
- package/core/steps/pipeline/pipeline.d.ts +1 -8
- package/core/steps/pipeline/pipeline.js +1 -3
- package/core/steps/pipeline-step.d.ts +0 -1
- package/core/steps/pipeline-step.js +0 -1
- package/dataflow/cluster.d.ts +3 -0
- package/dataflow/cluster.js +3 -0
- package/dataflow/environments/append.d.ts +1 -1
- package/dataflow/environments/built-in-config.d.ts +1 -5
- package/dataflow/environments/built-in-config.js +0 -1
- package/dataflow/environments/built-in.d.ts +10 -5
- package/dataflow/environments/built-in.js +6 -1
- package/dataflow/environments/clone.d.ts +1 -1
- package/dataflow/environments/default-builtin-config.d.ts +3 -0
- package/dataflow/environments/default-builtin-config.js +4 -1
- package/dataflow/environments/diff.d.ts +11 -2
- package/dataflow/environments/diff.js +9 -0
- package/dataflow/environments/environment.d.ts +3 -3
- package/dataflow/environments/environment.js +8 -6
- package/dataflow/environments/identifier.d.ts +0 -4
- package/dataflow/environments/identifier.js +0 -1
- package/dataflow/environments/overwrite.d.ts +4 -1
- package/dataflow/environments/overwrite.js +3 -0
- package/dataflow/environments/resolve-by-name.d.ts +4 -4
- package/dataflow/environments/resolve-by-name.js +3 -2
- package/dataflow/environments/scoping.d.ts +4 -1
- package/dataflow/environments/scoping.js +3 -0
- package/dataflow/eval/resolve/alias-tracking.d.ts +4 -10
- package/dataflow/eval/resolve/alias-tracking.js +11 -14
- package/dataflow/eval/resolve/resolve-argument.d.ts +1 -1
- package/dataflow/eval/resolve/resolve.d.ts +1 -7
- package/dataflow/eval/resolve/resolve.js +0 -5
- package/dataflow/eval/values/general.d.ts +1 -3
- package/dataflow/eval/values/general.js +0 -1
- package/dataflow/eval/values/intervals/interval-constants.d.ts +7 -1
- package/dataflow/eval/values/intervals/interval-constants.js +6 -0
- package/dataflow/eval/values/logical/logical-constants.d.ts +4 -1
- package/dataflow/eval/values/logical/logical-constants.js +3 -0
- package/dataflow/eval/values/r-value.d.ts +12 -0
- package/dataflow/eval/values/r-value.js +12 -0
- package/dataflow/eval/values/scalar/scalar-consatnts.d.ts +7 -1
- package/dataflow/eval/values/scalar/scalar-consatnts.js +6 -0
- package/dataflow/eval/values/sets/set-constants.d.ts +7 -2
- package/dataflow/eval/values/sets/set-constants.js +6 -0
- package/dataflow/eval/values/string/string-constants.d.ts +10 -1
- package/dataflow/eval/values/string/string-constants.js +9 -0
- package/dataflow/eval/values/vectors/vector-constants.d.ts +1 -1
- package/dataflow/extractor.d.ts +1 -1
- package/dataflow/graph/dataflowgraph-builder.d.ts +20 -38
- package/dataflow/graph/dataflowgraph-builder.js +6 -23
- package/dataflow/graph/diff-dataflow-graph.d.ts +16 -6
- package/dataflow/graph/diff-dataflow-graph.js +12 -1
- package/dataflow/graph/edge.d.ts +9 -0
- package/dataflow/graph/edge.js +9 -0
- package/dataflow/graph/graph.d.ts +6 -19
- package/dataflow/graph/graph.js +4 -15
- package/dataflow/graph/invert-dfg.d.ts +3 -0
- package/dataflow/graph/invert-dfg.js +3 -0
- package/dataflow/graph/quads.d.ts +1 -1
- package/dataflow/graph/unknown-replacement.d.ts +6 -0
- package/dataflow/graph/unknown-replacement.js +6 -0
- package/dataflow/graph/unknown-side-effect.d.ts +8 -0
- package/dataflow/graph/unknown-side-effect.js +8 -0
- package/dataflow/graph/vertex.d.ts +9 -9
- package/dataflow/graph/vertex.js +9 -1
- package/dataflow/info.d.ts +9 -10
- package/dataflow/info.js +6 -1
- package/dataflow/internal/linker.d.ts +25 -9
- package/dataflow/internal/linker.js +23 -7
- package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
- package/dataflow/internal/process/functions/call/argument/make-argument.js +6 -0
- package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-access.js +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +2 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-eval.d.ts +6 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +10 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +6 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +4 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-list.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +6 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-rm.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +23 -6
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +20 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-vector.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +3 -0
- package/dataflow/internal/process/functions/call/common.d.ts +11 -5
- package/dataflow/internal/process/functions/call/common.js +6 -0
- package/dataflow/internal/process/functions/call/default-call-handling.d.ts +3 -0
- package/dataflow/internal/process/functions/call/default-call-handling.js +3 -0
- package/dataflow/internal/process/functions/call/known-call-handling.d.ts +12 -5
- package/dataflow/internal/process/functions/call/known-call-handling.js +7 -0
- package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -1
- package/dataflow/internal/process/functions/call/named-call-handling.js +6 -0
- package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +4 -1
- package/dataflow/internal/process/functions/call/unnamed-call-handling.js +3 -0
- package/dataflow/internal/process/functions/process-argument.d.ts +8 -2
- package/dataflow/internal/process/functions/process-argument.js +6 -0
- package/dataflow/internal/process/functions/process-parameter.d.ts +5 -2
- package/dataflow/internal/process/functions/process-parameter.js +3 -0
- package/dataflow/internal/process/process-symbol.d.ts +3 -0
- package/dataflow/internal/process/process-symbol.js +3 -0
- package/dataflow/internal/process/process-uninteresting-leaf.d.ts +3 -0
- package/dataflow/internal/process/process-uninteresting-leaf.js +3 -0
- package/dataflow/internal/process/process-value.d.ts +3 -0
- package/dataflow/internal/process/process-value.js +3 -0
- package/dataflow/origin/dfg-get-origin.d.ts +0 -2
- package/dataflow/origin/dfg-get-symbol-refs.d.ts +5 -7
- package/dataflow/origin/dfg-get-symbol-refs.js +6 -8
- package/dataflow/processor.d.ts +0 -1
- package/dataflow/processor.js +0 -1
- package/documentation/data/dfg/doc-data-dfg-util.d.ts +6 -0
- package/documentation/data/dfg/doc-data-dfg-util.js +6 -0
- package/documentation/data/faq/faqs.d.ts +5 -0
- package/documentation/data/faq/faqs.js +78 -0
- package/documentation/data/faq/wiki-faq-store.d.ts +18 -0
- package/documentation/data/faq/wiki-faq-store.js +75 -0
- package/documentation/data/server/doc-data-server-messages.d.ts +3 -0
- package/documentation/data/server/doc-data-server-messages.js +4 -63
- package/documentation/doc-util/doc-auto-gen.d.ts +6 -0
- package/documentation/doc-util/doc-auto-gen.js +6 -0
- package/documentation/doc-util/doc-benchmarks.d.ts +12 -0
- package/documentation/doc-util/doc-benchmarks.js +12 -0
- package/documentation/doc-util/doc-cfg.d.ts +7 -1
- package/documentation/doc-util/doc-cfg.js +9 -0
- package/documentation/doc-util/doc-cli-option.d.ts +9 -0
- package/documentation/doc-util/doc-cli-option.js +9 -0
- package/documentation/doc-util/doc-code.d.ts +24 -0
- package/documentation/doc-util/doc-code.js +24 -0
- package/documentation/doc-util/doc-dfg.d.ts +7 -1
- package/documentation/doc-util/doc-dfg.js +9 -0
- package/documentation/doc-util/doc-env.d.ts +3 -0
- package/documentation/doc-util/doc-env.js +3 -0
- package/documentation/doc-util/doc-escape.d.ts +0 -1
- package/documentation/doc-util/doc-escape.js +0 -1
- package/documentation/doc-util/doc-files.d.ts +11 -0
- package/documentation/doc-util/doc-files.js +15 -4
- package/documentation/doc-util/doc-general.d.ts +6 -0
- package/documentation/doc-util/doc-general.js +6 -0
- package/documentation/doc-util/doc-normalized-ast.d.ts +7 -1
- package/documentation/doc-util/doc-normalized-ast.js +6 -0
- package/documentation/doc-util/doc-query.d.ts +15 -0
- package/documentation/doc-util/doc-query.js +17 -2
- package/documentation/doc-util/doc-repl.d.ts +6 -0
- package/documentation/doc-util/doc-repl.js +6 -0
- package/documentation/doc-util/doc-search.d.ts +15 -0
- package/documentation/doc-util/doc-search.js +17 -2
- package/documentation/doc-util/doc-server-message.d.ts +13 -1
- package/documentation/doc-util/doc-server-message.js +13 -1
- package/documentation/doc-util/doc-structure.d.ts +9 -0
- package/documentation/doc-util/doc-structure.js +10 -1
- package/documentation/doc-util/doc-types.d.ts +42 -0
- package/documentation/doc-util/doc-types.js +42 -0
- package/documentation/print-analyzer-wiki.js +4 -0
- package/documentation/print-core-wiki.d.ts +3 -0
- package/documentation/print-core-wiki.js +5 -2
- package/documentation/print-dataflow-graph-wiki.js +5 -5
- package/documentation/print-faq-wiki.js +3 -75
- package/documentation/print-interface-wiki.js +1 -1
- package/documentation/print-onboarding-wiki.js +1 -1
- package/documentation/print-query-wiki.js +4 -34
- package/documentation/print-readme.js +105 -0
- package/engines.d.ts +1 -1
- package/linter/linter-executor.d.ts +6 -3
- package/linter/linter-executor.js +3 -0
- package/linter/linter-format.d.ts +8 -0
- package/linter/linter-format.js +8 -0
- package/linter/rules/absolute-path.d.ts +3 -4
- package/linter/rules/dataframe-access-validation.d.ts +3 -4
- package/linter/rules/dataframe-access-validation.js +9 -11
- package/linter/rules/dead-code.d.ts +1 -1
- package/linter/rules/deprecated-functions.d.ts +1 -1
- package/linter/rules/file-path-validity.d.ts +1 -2
- package/linter/rules/function-finder-util.d.ts +1 -2
- package/linter/rules/naming-convention.d.ts +13 -2
- package/linter/rules/naming-convention.js +13 -1
- package/linter/rules/network-functions.d.ts +1 -1
- package/linter/rules/seeded-randomness.d.ts +1 -2
- package/linter/rules/unused-definition.d.ts +2 -3
- package/linter/rules/useless-loop.d.ts +1 -2
- package/package.json +2 -2
- package/project/cache/flowr-analyzer-cache.d.ts +2 -9
- package/project/cache/flowr-analyzer-cache.js +0 -6
- package/project/context/flowr-analyzer-context.d.ts +3 -6
- package/project/context/flowr-analyzer-dependencies-context.d.ts +0 -1
- package/project/context/flowr-analyzer-files-context.d.ts +2 -4
- package/project/context/flowr-file.d.ts +0 -1
- package/project/flowr-analyzer-builder.d.ts +1 -3
- package/project/flowr-analyzer-builder.js +5 -6
- package/project/flowr-analyzer.d.ts +34 -25
- package/project/flowr-analyzer.js +10 -11
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +1 -1
- package/project/plugins/file-plugins/flowr-description-file.d.ts +1 -3
- package/project/plugins/file-plugins/flowr-description-file.js +0 -1
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +1 -1
- package/queries/base-query-format.d.ts +2 -2
- package/queries/catalog/call-context-query/call-context-query-executor.d.ts +3 -0
- package/queries/catalog/call-context-query/call-context-query-executor.js +3 -0
- package/queries/catalog/call-context-query/call-context-query-format.d.ts +3 -3
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +11 -2
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +9 -0
- package/queries/catalog/cluster-query/cluster-query-executor.d.ts +3 -0
- package/queries/catalog/cluster-query/cluster-query-executor.js +3 -0
- package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
- package/queries/catalog/config-query/config-query-executor.d.ts +3 -0
- package/queries/catalog/config-query/config-query-executor.js +3 -0
- package/queries/catalog/config-query/config-query-format.d.ts +5 -2
- package/queries/catalog/config-query/config-query-format.js +13 -16
- package/queries/catalog/control-flow-query/control-flow-query-executor.d.ts +3 -0
- package/queries/catalog/control-flow-query/control-flow-query-executor.js +3 -0
- package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +3 -3
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.d.ts +3 -0
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +3 -0
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
- package/queries/catalog/dataflow-query/dataflow-query-executor.d.ts +3 -0
- package/queries/catalog/dataflow-query/dataflow-query-executor.js +3 -0
- package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +4 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.js +7 -4
- package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +4 -1
- package/queries/catalog/dependencies-query/dependencies-query-format.js +4 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +4 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.js +8 -4
- package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +10 -3
- package/queries/catalog/df-shape-query/df-shape-query-format.js +24 -5
- package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +3 -0
- package/queries/catalog/happens-before-query/happens-before-query-executor.js +3 -0
- package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
- package/queries/catalog/id-map-query/id-map-query-executor.d.ts +3 -0
- package/queries/catalog/id-map-query/id-map-query-executor.js +3 -0
- package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -1
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.d.ts +3 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +3 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +2 -2
- package/queries/catalog/linter-query/linter-query-executor.d.ts +4 -0
- package/queries/catalog/linter-query/linter-query-executor.js +4 -0
- package/queries/catalog/linter-query/linter-query-format.d.ts +12 -3
- package/queries/catalog/linter-query/linter-query-format.js +67 -0
- package/queries/catalog/location-map-query/location-map-query-executor.d.ts +4 -0
- package/queries/catalog/location-map-query/location-map-query-executor.js +5 -1
- package/queries/catalog/location-map-query/location-map-query-format.d.ts +7 -1
- package/queries/catalog/location-map-query/location-map-query-format.js +12 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.d.ts +3 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.js +3 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
- package/queries/catalog/origin-query/origin-query-executor.d.ts +7 -1
- package/queries/catalog/origin-query/origin-query-executor.js +6 -0
- package/queries/catalog/origin-query/origin-query-format.d.ts +7 -1
- package/queries/catalog/origin-query/origin-query-format.js +17 -1
- package/queries/catalog/project-query/project-query-executor.d.ts +3 -0
- package/queries/catalog/project-query/project-query-executor.js +3 -0
- package/queries/catalog/project-query/project-query-format.d.ts +1 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +6 -0
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +6 -0
- package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +7 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-format.js +19 -1
- package/queries/catalog/search-query/search-query-executor.d.ts +3 -0
- package/queries/catalog/search-query/search-query-executor.js +3 -0
- package/queries/catalog/search-query/search-query-format.d.ts +1 -1
- package/queries/catalog/static-slice-query/static-slice-query-executor.d.ts +9 -0
- package/queries/catalog/static-slice-query/static-slice-query-executor.js +9 -0
- package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +7 -1
- package/queries/catalog/static-slice-query/static-slice-query-format.js +17 -0
- package/queries/query-print.d.ts +20 -4
- package/queries/query-print.js +18 -2
- package/queries/query.d.ts +85 -55
- package/queries/query.js +35 -23
- package/queries/virtual-query/virtual-queries.d.ts +1 -2
- package/r-bridge/data/get.d.ts +6 -0
- package/r-bridge/data/get.js +6 -0
- package/r-bridge/lang-4.x/ast/model/collect.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/collect.js +0 -1
- package/r-bridge/lang-4.x/ast/model/model.d.ts +8 -11
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +3 -0
- package/r-bridge/lang-4.x/ast/model/operators.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +6 -7
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +6 -6
- package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/node-id.js +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +1 -2
- package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/visitor.js +0 -1
- package/r-bridge/lang-4.x/ast/model/type.d.ts +4 -5
- package/r-bridge/lang-4.x/ast/model/type.js +4 -5
- package/r-bridge/lang-4.x/ast/model/versions.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/versions.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +4 -5
- package/r-bridge/lang-4.x/ast/parser/json/parser.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/control/normalize-if-then.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.d.ts +1 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-binary.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.js +9 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.d.ts +1 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.d.ts +1 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.d.ts +14 -5
- package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.js +13 -6
- package/r-bridge/lang-4.x/convert-values.d.ts +12 -1
- package/r-bridge/lang-4.x/convert-values.js +12 -1
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +7 -2
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +17 -0
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +13 -1
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +48 -19
- package/r-bridge/parser.d.ts +28 -7
- package/r-bridge/retriever.d.ts +16 -1
- package/r-bridge/retriever.js +15 -0
- package/r-bridge/shell-executor.d.ts +3 -3
- package/r-bridge/shell-executor.js +6 -1
- package/r-bridge/shell.d.ts +24 -23
- package/r-bridge/shell.js +37 -31
- package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -1
- package/reconstruct/auto-select/magic-comments.d.ts +1 -2
- package/reconstruct/auto-select/magic-comments.js +1 -2
- package/reconstruct/reconstruct.d.ts +1 -3
- package/reconstruct/reconstruct.js +0 -2
- package/search/flowr-search-builder.d.ts +12 -5
- package/search/flowr-search-builder.js +7 -2
- package/search/flowr-search-executor.d.ts +3 -3
- package/search/flowr-search-filters.d.ts +14 -1
- package/search/flowr-search-filters.js +13 -0
- package/search/flowr-search-printer.d.ts +6 -0
- package/search/flowr-search-printer.js +6 -0
- package/search/flowr-search-traverse.d.ts +1 -1
- package/search/flowr-search.d.ts +3 -3
- package/search/search-executor/search-enrichers.d.ts +9 -6
- package/search/search-executor/search-enrichers.js +3 -0
- package/search/search-executor/search-generators.d.ts +19 -10
- package/search/search-executor/search-generators.js +49 -2
- package/search/search-executor/search-mappers.d.ts +8 -5
- package/search/search-executor/search-mappers.js +3 -0
- package/search/search-executor/search-transformer.d.ts +19 -16
- package/search/search-executor/search-transformer.js +3 -0
- package/slicing/criterion/collect-all.d.ts +10 -10
- package/slicing/criterion/parse.d.ts +4 -2
- package/slicing/criterion/parse.js +4 -2
- package/slicing/static/fingerprint.d.ts +9 -1
- package/slicing/static/fingerprint.js +8 -0
- package/slicing/static/slice-call.d.ts +2 -2
- package/slicing/static/static-slicer.d.ts +8 -4
- package/slicing/static/static-slicer.js +5 -1
- package/slicing/static/visiting-queue.d.ts +1 -1
- package/statistics/features/common-syntax-probability.d.ts +10 -1
- package/statistics/features/common-syntax-probability.js +9 -0
- package/statistics/features/feature.d.ts +0 -4
- package/statistics/features/feature.js +0 -1
- package/statistics/features/post-processing.d.ts +6 -0
- package/statistics/features/post-processing.js +6 -0
- package/statistics/features/supported/assignments/post-process.d.ts +3 -0
- package/statistics/features/supported/assignments/post-process.js +3 -0
- package/statistics/features/supported/comments/post-process.d.ts +3 -0
- package/statistics/features/supported/comments/post-process.js +3 -0
- package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
- package/statistics/features/supported/control-flow/post-process.js +3 -0
- package/statistics/features/supported/data-access/data-access.d.ts +1 -1
- package/statistics/features/supported/data-access/post-process.d.ts +3 -0
- package/statistics/features/supported/data-access/post-process.js +3 -0
- package/statistics/features/supported/defined-functions/defined-functions.d.ts +1 -1
- package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
- package/statistics/features/supported/expression-list/post-process.js +3 -0
- package/statistics/features/supported/loops/post-process.d.ts +3 -0
- package/statistics/features/supported/loops/post-process.js +3 -0
- package/statistics/features/supported/used-functions/used-functions.d.ts +1 -1
- package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
- package/statistics/features/supported/used-packages/post-process.js +3 -0
- package/statistics/features/supported/values/post-process.d.ts +3 -0
- package/statistics/features/supported/values/post-process.js +3 -0
- package/statistics/features/supported/variables/post-process.d.ts +7 -1
- package/statistics/features/supported/variables/post-process.js +6 -0
- package/statistics/meta-statistics.d.ts +8 -9
- package/statistics/output/file-provider.d.ts +5 -6
- package/statistics/output/file-provider.js +5 -6
- package/statistics/output/print-stats.d.ts +13 -1
- package/statistics/output/print-stats.js +12 -0
- package/statistics/output/statistics-file.d.ts +1 -2
- package/statistics/output/statistics-file.js +0 -1
- package/statistics/statistics.d.ts +3 -4
- package/statistics/statistics.js +1 -2
- package/statistics/summarizer/auto-detect.d.ts +3 -0
- package/statistics/summarizer/auto-detect.js +3 -0
- package/statistics/summarizer/post-process/clusterer.d.ts +3 -4
- package/statistics/summarizer/post-process/clusterer.js +0 -2
- package/statistics/summarizer/post-process/file-based-count.d.ts +0 -1
- package/statistics/summarizer/post-process/file-based-count.js +0 -1
- package/statistics/summarizer/post-process/histogram.d.ts +0 -2
- package/statistics/summarizer/post-process/histogram.js +0 -2
- package/statistics/summarizer/post-process/post-process-output.d.ts +2 -4
- package/statistics/summarizer/post-process/post-process-output.js +0 -3
- package/statistics/summarizer/second-phase/process.d.ts +5 -3
- package/statistics/summarizer/second-phase/process.js +3 -1
- package/statistics/summarizer/summarizer.d.ts +1 -2
- package/util/assert.d.ts +52 -2
- package/util/assert.js +52 -2
- package/util/collections/arrays.d.ts +10 -5
- package/util/collections/arrays.js +10 -5
- package/util/collections/defaultmap.d.ts +11 -11
- package/util/collections/defaultmap.js +11 -11
- package/util/containers.d.ts +2 -7
- package/util/containers.js +0 -5
- package/util/diff-graph.d.ts +0 -1
- package/util/diff-graph.js +0 -1
- package/util/diff.d.ts +3 -1
- package/util/diff.js +3 -1
- package/util/files.d.ts +11 -11
- package/util/files.js +10 -10
- package/util/formats/adapter.d.ts +9 -0
- package/util/formats/adapter.js +9 -0
- package/util/formats/adapters/rmd-adapter.d.ts +10 -1
- package/util/formats/adapters/rmd-adapter.js +10 -1
- package/util/html-hover-over.d.ts +5 -0
- package/util/html-hover-over.js +5 -0
- package/util/json.d.ts +13 -0
- package/util/json.js +13 -0
- package/util/log.d.ts +2 -2
- package/util/log.js +2 -2
- package/util/mermaid/ast.d.ts +3 -0
- package/util/mermaid/ast.js +3 -0
- package/util/mermaid/cfg.d.ts +1 -1
- package/util/mermaid/dfg.d.ts +12 -4
- package/util/mermaid/dfg.js +9 -1
- package/util/mermaid/mermaid.d.ts +6 -1
- package/util/mermaid/mermaid.js +6 -1
- package/util/numbers.d.ts +7 -0
- package/util/numbers.js +7 -0
- package/util/objects.d.ts +0 -2
- package/util/os.d.ts +3 -0
- package/util/os.js +3 -0
- package/util/parallel.d.ts +4 -4
- package/util/parallel.js +4 -4
- package/util/prefix.d.ts +0 -1
- package/util/prefix.js +0 -1
- package/util/quads.d.ts +14 -17
- package/util/quads.js +3 -5
- package/util/r-value.d.ts +10 -1
- package/util/r-value.js +21 -0
- package/util/random.d.ts +3 -0
- package/util/random.js +3 -0
- package/util/range.d.ts +9 -3
- package/util/range.js +15 -2
- package/util/schema.d.ts +14 -1
- package/util/schema.js +15 -2
- package/util/simple-df/dfg-view.d.ts +4 -1
- package/util/simple-df/dfg-view.js +4 -1
- package/util/summarizer.d.ts +9 -1
- package/util/summarizer.js +9 -0
- package/util/text/ansi.d.ts +3 -0
- package/util/text/ansi.js +3 -0
- package/util/text/args.d.ts +2 -4
- package/util/text/args.js +7 -5
- package/util/text/text.d.ts +4 -0
- package/util/text/text.js +4 -0
- package/util/text/time.d.ts +0 -1
- package/util/text/time.js +0 -1
- package/util/version.d.ts +12 -3
- package/util/version.js +12 -3
- package/abstract-interpretation/data-frame/domain.d.ts +0 -107
- package/abstract-interpretation/data-frame/domain.js +0 -315
- package/abstract-interpretation/domains/set-bounded-set-domain.d.ts +0 -43
- package/abstract-interpretation/domains/set-bounded-set-domain.js +0 -164
- package/cli/repl/commands/repl-lineage.d.ts +0 -15
- package/cli/repl/commands/repl-lineage.js +0 -66
- package/cli/repl/server/messages/message-lineage.d.ts +0 -17
- package/cli/repl/server/messages/message-lineage.js +0 -25
- package/queries/catalog/lineage-query/lineage-query-executor.d.ts +0 -3
- package/queries/catalog/lineage-query/lineage-query-executor.js +0 -22
- package/queries/catalog/lineage-query/lineage-query-format.d.ts +0 -22
- package/queries/catalog/lineage-query/lineage-query-format.js +0 -31
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SingletonDomain = void 0;
|
|
4
|
+
const logic_1 = require("../../util/logic");
|
|
4
5
|
const abstract_domain_1 = require("./abstract-domain");
|
|
5
6
|
const lattice_1 = require("./lattice");
|
|
6
7
|
/**
|
|
7
|
-
* The singleton abstract domain as single possible value.
|
|
8
|
+
* The singleton abstract domain as a single possible value.
|
|
8
9
|
* The Bottom element is defined as {@link Bottom} symbol and the Top element is defined as {@link Top} symbol.
|
|
9
10
|
* @template T - Type of the value in the abstract domain
|
|
10
11
|
* @template Value - Type of the constraint in the abstract domain (Top, Bottom, or an actual value)
|
|
11
12
|
*/
|
|
12
|
-
class SingletonDomain {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
this._value = value;
|
|
16
|
-
}
|
|
17
|
-
get value() {
|
|
18
|
-
return this._value;
|
|
13
|
+
class SingletonDomain extends abstract_domain_1.AbstractDomain {
|
|
14
|
+
create(value) {
|
|
15
|
+
return new SingletonDomain(value);
|
|
19
16
|
}
|
|
20
17
|
static top() {
|
|
21
18
|
return new SingletonDomain(lattice_1.Top);
|
|
@@ -44,35 +41,35 @@ class SingletonDomain {
|
|
|
44
41
|
leq(other) {
|
|
45
42
|
return this.value === lattice_1.Bottom || other.value === lattice_1.Top || (this.isValue() && other.isValue() && this.value <= other.value);
|
|
46
43
|
}
|
|
47
|
-
join(
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
meet(
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
44
|
+
join(other) {
|
|
45
|
+
const otherValue = other instanceof SingletonDomain ? other.value : other;
|
|
46
|
+
if (this.value === lattice_1.Bottom) {
|
|
47
|
+
return this.create(otherValue);
|
|
48
|
+
}
|
|
49
|
+
else if (otherValue === lattice_1.Bottom) {
|
|
50
|
+
return this.create(this.value);
|
|
51
|
+
}
|
|
52
|
+
else if (this.value !== otherValue) {
|
|
53
|
+
return this.top();
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
return this.create(this.value);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
meet(other) {
|
|
60
|
+
const otherValue = other instanceof SingletonDomain ? other.value : other;
|
|
61
|
+
if (this.value === lattice_1.Top) {
|
|
62
|
+
return this.create(otherValue);
|
|
63
|
+
}
|
|
64
|
+
else if (otherValue === lattice_1.Top) {
|
|
65
|
+
return this.create(this.value);
|
|
66
|
+
}
|
|
67
|
+
else if (this.value !== otherValue) {
|
|
68
|
+
return this.bottom();
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
return this.create(this.value);
|
|
72
|
+
}
|
|
76
73
|
}
|
|
77
74
|
widen(other) {
|
|
78
75
|
return this.join(other); // Using join for widening as the lattice is finite
|
|
@@ -92,6 +89,24 @@ class SingletonDomain {
|
|
|
92
89
|
abstract(concrete) {
|
|
93
90
|
return SingletonDomain.abstract(concrete);
|
|
94
91
|
}
|
|
92
|
+
satisfies(value) {
|
|
93
|
+
if (this.isValue() && this.value === value) {
|
|
94
|
+
return logic_1.Ternary.Always;
|
|
95
|
+
}
|
|
96
|
+
else if (this.isTop()) {
|
|
97
|
+
return logic_1.Ternary.Maybe;
|
|
98
|
+
}
|
|
99
|
+
return logic_1.Ternary.Never;
|
|
100
|
+
}
|
|
101
|
+
toJson() {
|
|
102
|
+
if (this.value === lattice_1.Top) {
|
|
103
|
+
return lattice_1.Top.description;
|
|
104
|
+
}
|
|
105
|
+
else if (this.value === lattice_1.Bottom) {
|
|
106
|
+
return lattice_1.Bottom.description;
|
|
107
|
+
}
|
|
108
|
+
return this.value;
|
|
109
|
+
}
|
|
95
110
|
toString() {
|
|
96
111
|
if (this.value === lattice_1.Top) {
|
|
97
112
|
return '⊤';
|
|
@@ -1,32 +1,16 @@
|
|
|
1
1
|
import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
2
|
-
import type {
|
|
3
|
-
import {
|
|
4
|
-
/** The type of the abstract state for a abstract domain mapping AST node IDs to abstract values of an abstract domain */
|
|
5
|
-
export type AbstractState<Domain extends AbstractDomain<unknown, unknown, unknown, unknown>> = Map<NodeId, Domain>;
|
|
6
|
-
/** The type of the concrete state for the concrete domain of an abstract domain mapping AST node IDs to a concrete value in the concrete domain */
|
|
7
|
-
export type ConcreteState<Domain extends AbstractDomain<unknown, unknown, unknown, unknown>> = ReadonlyMap<NodeId, ConcreteDomain<Domain>>;
|
|
2
|
+
import type { AnyAbstractDomain } from './abstract-domain';
|
|
3
|
+
import { MappedAbstractDomain } from './mapped-abstract-domain';
|
|
8
4
|
/**
|
|
9
5
|
* A state abstract domain as mapping of AST node IDs of a program to abstract values of an abstract domain.
|
|
10
6
|
* The Bottom element is defined as empty mapping and the Top element is defined as mapping every existing mapped AST node ID to Top.
|
|
11
7
|
* @template Domain - Type of the abstract domain to map the AST node IDs to
|
|
12
8
|
* @see {@link NodeId} for the node IDs of the AST nodes
|
|
13
9
|
*/
|
|
14
|
-
export declare class StateAbstractDomain<Domain extends
|
|
15
|
-
private _value;
|
|
16
|
-
constructor(value: AbstractState<Domain>);
|
|
17
|
-
get value(): AbstractState<Domain>;
|
|
18
|
-
bottom(): StateAbstractDomain<Domain>;
|
|
19
|
-
top(): StateAbstractDomain<Domain>;
|
|
20
|
-
equals(other: StateAbstractDomain<Domain>): boolean;
|
|
21
|
-
leq(other: StateAbstractDomain<Domain>): boolean;
|
|
22
|
-
join(...values: StateAbstractDomain<Domain>[]): StateAbstractDomain<Domain>;
|
|
23
|
-
meet(...values: StateAbstractDomain<Domain>[]): StateAbstractDomain<Domain>;
|
|
24
|
-
widen(other: StateAbstractDomain<Domain>): StateAbstractDomain<Domain>;
|
|
25
|
-
narrow(other: StateAbstractDomain<Domain>): StateAbstractDomain<Domain>;
|
|
26
|
-
concretize(limit?: number): ReadonlySet<ConcreteState<Domain>> | typeof Top;
|
|
27
|
-
abstract(concrete: ReadonlySet<ConcreteState<Domain>> | typeof Top): StateAbstractDomain<Domain>;
|
|
28
|
-
toString(): string;
|
|
29
|
-
isTop(): this is StateAbstractDomain<Domain>;
|
|
30
|
-
isBottom(): this is StateAbstractDomain<Domain>;
|
|
31
|
-
isValue(): this is StateAbstractDomain<Domain>;
|
|
10
|
+
export declare abstract class StateAbstractDomain<Domain extends AnyAbstractDomain> extends MappedAbstractDomain<NodeId, Domain> {
|
|
32
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* The type of the value abstract domain of a state abstract domain (i.e. the abstract domain a state abstract domain maps to).
|
|
14
|
+
* @template StateDomain - The state abstract domain to get the value abstract domain type for
|
|
15
|
+
*/
|
|
16
|
+
export type ValueAbstractDomain<StateDomain extends StateAbstractDomain<AnyAbstractDomain>> = StateDomain extends StateAbstractDomain<infer Domain> ? Domain : never;
|
|
@@ -1,179 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StateAbstractDomain = void 0;
|
|
4
|
-
const
|
|
5
|
-
const lattice_1 = require("./lattice");
|
|
4
|
+
const mapped_abstract_domain_1 = require("./mapped-abstract-domain");
|
|
6
5
|
/**
|
|
7
6
|
* A state abstract domain as mapping of AST node IDs of a program to abstract values of an abstract domain.
|
|
8
7
|
* The Bottom element is defined as empty mapping and the Top element is defined as mapping every existing mapped AST node ID to Top.
|
|
9
8
|
* @template Domain - Type of the abstract domain to map the AST node IDs to
|
|
10
9
|
* @see {@link NodeId} for the node IDs of the AST nodes
|
|
11
10
|
*/
|
|
12
|
-
class StateAbstractDomain {
|
|
13
|
-
_value;
|
|
14
|
-
constructor(value) {
|
|
15
|
-
this._value = new Map(value);
|
|
16
|
-
}
|
|
17
|
-
get value() {
|
|
18
|
-
return this._value;
|
|
19
|
-
}
|
|
20
|
-
bottom() {
|
|
21
|
-
return new StateAbstractDomain(new Map());
|
|
22
|
-
}
|
|
23
|
-
top() {
|
|
24
|
-
const result = new StateAbstractDomain(this.value);
|
|
25
|
-
for (const [key, value] of result.value) {
|
|
26
|
-
result._value.set(key, value.top());
|
|
27
|
-
}
|
|
28
|
-
return result;
|
|
29
|
-
}
|
|
30
|
-
equals(other) {
|
|
31
|
-
if (this.value === other.value) {
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
else if (this.value.size !== other.value.size) {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
for (const [nodeId, value] of this.value) {
|
|
38
|
-
const otherValue = other.value.get(nodeId);
|
|
39
|
-
if (otherValue === undefined || !value.equals(otherValue)) {
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return true;
|
|
44
|
-
}
|
|
45
|
-
leq(other) {
|
|
46
|
-
if (this.value === other.value) {
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
for (const [nodeId, value] of this.value) {
|
|
50
|
-
const otherValue = other.value.get(nodeId);
|
|
51
|
-
if (otherValue === undefined || !value.leq(otherValue)) {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
|
-
join(...values) {
|
|
58
|
-
const result = new StateAbstractDomain(this.value);
|
|
59
|
-
for (const other of values) {
|
|
60
|
-
for (const [nodeId, value] of other.value) {
|
|
61
|
-
const currValue = result.value.get(nodeId);
|
|
62
|
-
if (currValue === undefined) {
|
|
63
|
-
result.value.set(nodeId, value);
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
result.value.set(nodeId, currValue.join(value));
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return result;
|
|
71
|
-
}
|
|
72
|
-
meet(...values) {
|
|
73
|
-
const result = new StateAbstractDomain(this.value);
|
|
74
|
-
for (const other of values) {
|
|
75
|
-
for (const [nodeId] of result.value) {
|
|
76
|
-
if (!other.value.has(nodeId)) {
|
|
77
|
-
result.value.delete(nodeId);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
for (const [nodeId, value] of other.value) {
|
|
81
|
-
const currValue = result.value.get(nodeId);
|
|
82
|
-
if (currValue !== undefined) {
|
|
83
|
-
result.value.set(nodeId, currValue.meet(value));
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return result;
|
|
88
|
-
}
|
|
89
|
-
widen(other) {
|
|
90
|
-
const result = new StateAbstractDomain(this.value);
|
|
91
|
-
for (const [nodeId, value] of other.value) {
|
|
92
|
-
const currValue = result.value.get(nodeId);
|
|
93
|
-
if (currValue === undefined) {
|
|
94
|
-
result.value.set(nodeId, value);
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
result.value.set(nodeId, currValue.widen(value));
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return result;
|
|
101
|
-
}
|
|
102
|
-
narrow(other) {
|
|
103
|
-
const result = new StateAbstractDomain(this.value);
|
|
104
|
-
for (const [nodeId] of this.value) {
|
|
105
|
-
if (!other.value.has(nodeId)) {
|
|
106
|
-
result.value.delete(nodeId);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
for (const [nodeId, value] of other.value) {
|
|
110
|
-
const currValue = result.value.get(nodeId);
|
|
111
|
-
if (currValue !== undefined) {
|
|
112
|
-
result.value.set(nodeId, currValue.narrow(value));
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return result;
|
|
116
|
-
}
|
|
117
|
-
concretize(limit = abstract_domain_1.DEFAULT_INFERENCE_LIMIT) {
|
|
118
|
-
if (this.value.values().some(value => value.isBottom())) {
|
|
119
|
-
return new Set();
|
|
120
|
-
}
|
|
121
|
-
let states = new Set([new Map()]);
|
|
122
|
-
for (const [nodeId, value] of this.value) {
|
|
123
|
-
const concreteValues = value.concretize(limit);
|
|
124
|
-
if (concreteValues === lattice_1.Top) {
|
|
125
|
-
return lattice_1.Top;
|
|
126
|
-
}
|
|
127
|
-
const newStates = new Set();
|
|
128
|
-
for (const state of states) {
|
|
129
|
-
for (const concrete of concreteValues) {
|
|
130
|
-
if (newStates.size > limit) {
|
|
131
|
-
return lattice_1.Top;
|
|
132
|
-
}
|
|
133
|
-
const map = new Map(state);
|
|
134
|
-
map.set(nodeId, concrete);
|
|
135
|
-
newStates.add(map);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
states = newStates;
|
|
139
|
-
}
|
|
140
|
-
return states;
|
|
141
|
-
}
|
|
142
|
-
abstract(concrete) {
|
|
143
|
-
const entry = [...this.value.values()][0];
|
|
144
|
-
if (concrete === lattice_1.Top || entry === undefined) {
|
|
145
|
-
return new StateAbstractDomain(new Map());
|
|
146
|
-
}
|
|
147
|
-
const mappings = new Map();
|
|
148
|
-
for (const state of concrete) {
|
|
149
|
-
for (const [nodeId, value] of state) {
|
|
150
|
-
const mapping = mappings.get(nodeId);
|
|
151
|
-
if (mapping === undefined) {
|
|
152
|
-
mappings.set(nodeId, new Set([value]));
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
mapping.add(value);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
const result = new Map();
|
|
160
|
-
for (const [nodeId, values] of mappings) {
|
|
161
|
-
result.set(nodeId, entry.abstract(values));
|
|
162
|
-
}
|
|
163
|
-
return new StateAbstractDomain(result);
|
|
164
|
-
}
|
|
165
|
-
toString() {
|
|
166
|
-
return '(' + this.value.entries().toArray().map(([key, value]) => `${key} -> ${value.toString()}`).join(', ') + ')';
|
|
167
|
-
}
|
|
168
|
-
isTop() {
|
|
169
|
-
return this.value.values().every(value => value.isTop());
|
|
170
|
-
}
|
|
171
|
-
isBottom() {
|
|
172
|
-
return this.value.size === 0;
|
|
173
|
-
}
|
|
174
|
-
isValue() {
|
|
175
|
-
return true;
|
|
176
|
-
}
|
|
11
|
+
class StateAbstractDomain extends mapped_abstract_domain_1.MappedAbstractDomain {
|
|
177
12
|
}
|
|
178
13
|
exports.StateAbstractDomain = StateAbstractDomain;
|
|
179
14
|
//# sourceMappingURL=state-abstract-domain.js.map
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { NoInfo, RNode } from '../r-bridge/lang-4.x/ast/model/model';
|
|
2
2
|
import type { RExpressionList } from '../r-bridge/lang-4.x/ast/model/nodes/r-expression-list';
|
|
3
|
-
import type
|
|
4
|
-
import { EmptyArgument } from '../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
|
|
3
|
+
import { type RFunctionCall, EmptyArgument } from '../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
|
|
5
4
|
import type { RFunctionDefinition } from '../r-bridge/lang-4.x/ast/model/nodes/r-function-definition';
|
|
6
5
|
import { RType } from '../r-bridge/lang-4.x/ast/model/type';
|
|
7
6
|
import type { RForLoop } from '../r-bridge/lang-4.x/ast/model/nodes/r-for-loop';
|
|
@@ -48,10 +47,8 @@ export type EntryExitVisitor<Info> = ((node: RNode<Info>) => void) | undefined;
|
|
|
48
47
|
* You can control the value passing (`Returns` generic)
|
|
49
48
|
* by providing sensible Monoid behavior overwriting the {@link DefaultNormalizedAstFold#concat|concat} method
|
|
50
49
|
* and supplying the empty value in the constructor.
|
|
51
|
-
*
|
|
52
50
|
* @note By providing `entry` and `exit` you can use this as an extension to the simpler {@link visitAst} function but without
|
|
53
51
|
* the early termination within the visitors (for this, you can overwrite the respective `fold*` methods).
|
|
54
|
-
*
|
|
55
52
|
* @example First you want to create your own fold:
|
|
56
53
|
*
|
|
57
54
|
* ```ts
|
|
@@ -84,15 +81,12 @@ export declare class DefaultNormalizedAstFold<Returns = void, Info = NoInfo> imp
|
|
|
84
81
|
constructor(empty: Returns, enter?: EntryExitVisitor<Info>, exit?: EntryExitVisitor<Info>);
|
|
85
82
|
/**
|
|
86
83
|
* Monoid::concat
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
84
|
* @see {@link https://en.wikipedia.org/wiki/Monoid}
|
|
90
85
|
* @see {@link DefaultNormalizedAstFold#concatAll|concatAll}
|
|
91
86
|
*/
|
|
92
87
|
protected concat(_a: Returns, _b: Returns): Returns;
|
|
93
88
|
/**
|
|
94
89
|
* overwrite this method, if you have a faster way to concat multiple nodes
|
|
95
|
-
*
|
|
96
90
|
* @see {@link DefaultNormalizedAstFold#concatAll|concatAll}
|
|
97
91
|
*/
|
|
98
92
|
protected concatAll(nodes: readonly Returns[]): Returns;
|
|
@@ -9,10 +9,8 @@ const type_1 = require("../r-bridge/lang-4.x/ast/model/type");
|
|
|
9
9
|
* You can control the value passing (`Returns` generic)
|
|
10
10
|
* by providing sensible Monoid behavior overwriting the {@link DefaultNormalizedAstFold#concat|concat} method
|
|
11
11
|
* and supplying the empty value in the constructor.
|
|
12
|
-
*
|
|
13
12
|
* @note By providing `entry` and `exit` you can use this as an extension to the simpler {@link visitAst} function but without
|
|
14
13
|
* the early termination within the visitors (for this, you can overwrite the respective `fold*` methods).
|
|
15
|
-
*
|
|
16
14
|
* @example First you want to create your own fold:
|
|
17
15
|
*
|
|
18
16
|
* ```ts
|
|
@@ -49,8 +47,6 @@ class DefaultNormalizedAstFold {
|
|
|
49
47
|
}
|
|
50
48
|
/**
|
|
51
49
|
* Monoid::concat
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
50
|
* @see {@link https://en.wikipedia.org/wiki/Monoid}
|
|
55
51
|
* @see {@link DefaultNormalizedAstFold#concatAll|concatAll}
|
|
56
52
|
*/
|
|
@@ -59,7 +55,6 @@ class DefaultNormalizedAstFold {
|
|
|
59
55
|
}
|
|
60
56
|
/**
|
|
61
57
|
* overwrite this method, if you have a faster way to concat multiple nodes
|
|
62
|
-
*
|
|
63
58
|
* @see {@link DefaultNormalizedAstFold#concatAll|concatAll}
|
|
64
59
|
*/
|
|
65
60
|
concatAll(nodes) {
|
package/benchmark/slicer.d.ts
CHANGED
|
@@ -9,11 +9,11 @@ import type { ReconstructionResult } from '../reconstruct/reconstruct';
|
|
|
9
9
|
import type { PerSliceStats, SlicerStats, SlicerStatsDfShape } from './stats/stats';
|
|
10
10
|
import type { NormalizedAst } from '../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
11
11
|
import type { SlicingCriteria } from '../slicing/criterion/parse';
|
|
12
|
-
import type
|
|
13
|
-
import type
|
|
12
|
+
import { type RParseRequestFromFile, type RParseRequestFromText } from '../r-bridge/retriever';
|
|
13
|
+
import { type SlicingCriteriaFilter } from '../slicing/criterion/collect-all';
|
|
14
14
|
import type { AutoSelectPredicate } from '../reconstruct/auto-select/auto-select-defaults';
|
|
15
15
|
import type { KnownParserName } from '../r-bridge/parser';
|
|
16
|
-
import type
|
|
16
|
+
import { type FlowrConfigOptions } from '../config';
|
|
17
17
|
/**
|
|
18
18
|
* The logger to be used for benchmarking as a global object.
|
|
19
19
|
*/
|
|
@@ -93,7 +93,6 @@ export declare class BenchmarkSlicer {
|
|
|
93
93
|
/**
|
|
94
94
|
* Slice for the given {@link SlicingCriteria}.
|
|
95
95
|
* @see SingleSlicingCriterion
|
|
96
|
-
*
|
|
97
96
|
* @returns The per slice stats retrieved for this slicing criteria
|
|
98
97
|
*/
|
|
99
98
|
slice(...slicingCriteria: SlicingCriteria): Promise<BenchmarkSingleSliceStats>;
|
|
@@ -103,7 +102,6 @@ export declare class BenchmarkSlicer {
|
|
|
103
102
|
extractCFG(): void;
|
|
104
103
|
/**
|
|
105
104
|
* Infer the shape of data frames using abstract interpretation with {@link inferDataFrameShapes}
|
|
106
|
-
*
|
|
107
105
|
* @returns The statistics of the data frame shape inference
|
|
108
106
|
*/
|
|
109
107
|
inferDataFrameShapes(): SlicerStatsDfShape;
|
|
@@ -118,9 +116,7 @@ export declare class BenchmarkSlicer {
|
|
|
118
116
|
* See {@link collectAllSlicingCriteria} for details.
|
|
119
117
|
* <p>
|
|
120
118
|
* the `report` function will be called *before* each *individual* slice is performed.
|
|
121
|
-
*
|
|
122
119
|
* @returns The number of slices that were produced
|
|
123
|
-
*
|
|
124
120
|
* @see collectAllSlicingCriteria
|
|
125
121
|
* @see SlicingCriteriaFilter
|
|
126
122
|
*/
|
package/benchmark/slicer.js
CHANGED
|
@@ -27,7 +27,6 @@ const arrays_1 = require("../util/collections/arrays");
|
|
|
27
27
|
const config_1 = require("../config");
|
|
28
28
|
const extract_cfg_1 = require("../control-flow/extract-cfg");
|
|
29
29
|
const absint_info_1 = require("../abstract-interpretation/data-frame/absint-info");
|
|
30
|
-
const domain_1 = require("../abstract-interpretation/data-frame/domain");
|
|
31
30
|
const shape_inference_1 = require("../abstract-interpretation/data-frame/shape-inference");
|
|
32
31
|
const fs_1 = __importDefault(require("fs"));
|
|
33
32
|
/**
|
|
@@ -222,7 +221,6 @@ class BenchmarkSlicer {
|
|
|
222
221
|
/**
|
|
223
222
|
* Slice for the given {@link SlicingCriteria}.
|
|
224
223
|
* @see SingleSlicingCriterion
|
|
225
|
-
*
|
|
226
224
|
* @returns The per slice stats retrieved for this slicing criteria
|
|
227
225
|
*/
|
|
228
226
|
async slice(...slicingCriteria) {
|
|
@@ -281,7 +279,6 @@ class BenchmarkSlicer {
|
|
|
281
279
|
}
|
|
282
280
|
/**
|
|
283
281
|
* Infer the shape of data frames using abstract interpretation with {@link inferDataFrameShapes}
|
|
284
|
-
*
|
|
285
282
|
* @returns The statistics of the data frame shape inference
|
|
286
283
|
*/
|
|
287
284
|
inferDataFrameShapes() {
|
|
@@ -309,12 +306,12 @@ class BenchmarkSlicer {
|
|
|
309
306
|
perNodeStats: new Map()
|
|
310
307
|
};
|
|
311
308
|
const result = this.measureSimpleStep('infer data frame shapes', () => (0, shape_inference_1.inferDataFrameShapes)(cfinfo, dfg, ast, config));
|
|
312
|
-
stats.numberOfResultConstraints = result.size;
|
|
313
|
-
for (const value of result.values()) {
|
|
314
|
-
if (
|
|
309
|
+
stats.numberOfResultConstraints = result.value.size;
|
|
310
|
+
for (const value of result.value.values()) {
|
|
311
|
+
if (value.isTop()) {
|
|
315
312
|
stats.numberOfResultingTop++;
|
|
316
313
|
}
|
|
317
|
-
else if (
|
|
314
|
+
else if (value.isBottom()) {
|
|
318
315
|
stats.numberOfResultingBottom++;
|
|
319
316
|
}
|
|
320
317
|
else {
|
|
@@ -334,17 +331,17 @@ class BenchmarkSlicer {
|
|
|
334
331
|
return;
|
|
335
332
|
}
|
|
336
333
|
const nodeStats = {
|
|
337
|
-
numberOfEntries: node.info.dataFrame?.domain?.size ?? 0
|
|
334
|
+
numberOfEntries: node.info.dataFrame?.domain?.value.size ?? 0
|
|
338
335
|
};
|
|
339
336
|
if (expression !== undefined) {
|
|
340
337
|
nodeStats.mappedOperations = expression.operations.map(op => op.operation);
|
|
341
338
|
stats.numberOfOperationNodes++;
|
|
342
339
|
if (value !== undefined) {
|
|
343
|
-
nodeStats.inferredColNames = value.colnames
|
|
340
|
+
nodeStats.inferredColNames = value.colnames.isValue() ? value.colnames.value.size : value.colnames.isTop() ? 'top' : 'bottom';
|
|
344
341
|
nodeStats.inferredColCount = this.getInferredSize(value.cols);
|
|
345
342
|
nodeStats.inferredRowCount = this.getInferredSize(value.rows);
|
|
346
|
-
nodeStats.approxRangeColCount = value.cols
|
|
347
|
-
nodeStats.approxRangeRowCount = value.rows
|
|
343
|
+
nodeStats.approxRangeColCount = value.cols.isValue() ? value.cols.value[1] - value.cols.value[0] : 0;
|
|
344
|
+
nodeStats.approxRangeRowCount = value.rows.isValue() ? value.rows.value[1] - value.rows.value[0] : 0;
|
|
348
345
|
}
|
|
349
346
|
}
|
|
350
347
|
if (value !== undefined) {
|
|
@@ -362,16 +359,16 @@ class BenchmarkSlicer {
|
|
|
362
359
|
return stats;
|
|
363
360
|
}
|
|
364
361
|
getInferredSize(value) {
|
|
365
|
-
if (
|
|
362
|
+
if (value.isTop()) {
|
|
366
363
|
return 'top';
|
|
367
364
|
}
|
|
368
|
-
else if (value
|
|
369
|
-
return 'bottom';
|
|
370
|
-
}
|
|
371
|
-
else if (!isFinite(value[1])) {
|
|
365
|
+
else if (value.isValue() && !isFinite(value.value[1])) {
|
|
372
366
|
return 'infinite';
|
|
373
367
|
}
|
|
374
|
-
|
|
368
|
+
else if (value.isValue()) {
|
|
369
|
+
return Math.floor((value.value[0] + value.value[1]) / 2);
|
|
370
|
+
}
|
|
371
|
+
return 'bottom';
|
|
375
372
|
}
|
|
376
373
|
/** Bridging the gap between the new internal and the old names for the benchmarking */
|
|
377
374
|
async measureCommonStep(expectedStep, keyToMeasure) {
|
|
@@ -410,9 +407,7 @@ class BenchmarkSlicer {
|
|
|
410
407
|
* See {@link collectAllSlicingCriteria} for details.
|
|
411
408
|
* <p>
|
|
412
409
|
* the `report` function will be called *before* each *individual* slice is performed.
|
|
413
|
-
*
|
|
414
410
|
* @returns The number of slices that were produced
|
|
415
|
-
*
|
|
416
411
|
* @see collectAllSlicingCriteria
|
|
417
412
|
* @see SlicingCriteriaFilter
|
|
418
413
|
*/
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import type { SummarizedSlicerStats, UltimateSlicerStats } from '../summarizer/data';
|
|
2
|
+
/**
|
|
3
|
+
* Formats the given nanoseconds into a human-readable string.
|
|
4
|
+
*/
|
|
2
5
|
export declare function formatNanoseconds(nanoseconds: bigint | number): string;
|
|
3
6
|
/**
|
|
4
7
|
* Converts the given stats to a human-readable string.
|
|
5
8
|
* You may have to {@link summarizeSlicerStats | summarize} the stats first.
|
|
6
9
|
*/
|
|
7
10
|
export declare function stats2string(stats: SummarizedSlicerStats): string;
|
|
11
|
+
/**
|
|
12
|
+
* Converts reduction stats to a human-readable string.
|
|
13
|
+
*/
|
|
8
14
|
export declare function ultimateStats2String(stats: UltimateSlicerStats): string;
|
package/benchmark/stats/print.js
CHANGED
|
@@ -8,6 +8,9 @@ const padSize = 15;
|
|
|
8
8
|
function pad(string) {
|
|
9
9
|
return String(string).padStart(padSize, ' ');
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Formats the given nanoseconds into a human-readable string.
|
|
13
|
+
*/
|
|
11
14
|
function formatNanoseconds(nanoseconds) {
|
|
12
15
|
if (nanoseconds < 0) {
|
|
13
16
|
return '??';
|
|
@@ -186,6 +189,9 @@ Dataframe shape inference:
|
|
|
186
189
|
}
|
|
187
190
|
return result;
|
|
188
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Converts reduction stats to a human-readable string.
|
|
194
|
+
*/
|
|
189
195
|
function ultimateStats2String(stats) {
|
|
190
196
|
let result = `
|
|
191
197
|
Summarized: ${stats.totalRequests} requests and ${stats.totalSlices} slices
|
|
@@ -3,7 +3,6 @@ import type { DataflowGraph } from '../../dataflow/graph/graph';
|
|
|
3
3
|
export declare function getSizeOfDfGraph(df: DataflowGraph): number;
|
|
4
4
|
/**
|
|
5
5
|
* Calculates the size of an array in bytes.
|
|
6
|
-
*
|
|
7
6
|
* @param array - The array to calculate the size of.
|
|
8
7
|
* @returns The size of the array in bytes.
|
|
9
8
|
*/
|
|
@@ -60,7 +60,7 @@ export interface SlicerStatsDfShape<T = number> {
|
|
|
60
60
|
export interface PerNodeStatsDfShape<T = number> {
|
|
61
61
|
numberOfEntries: T;
|
|
62
62
|
mappedOperations?: DataFrameOperationName[];
|
|
63
|
-
inferredColNames?: T | 'top';
|
|
63
|
+
inferredColNames?: T | 'bottom' | 'top';
|
|
64
64
|
inferredColCount?: T | 'bottom' | 'infinite' | 'top';
|
|
65
65
|
inferredRowCount?: T | 'bottom' | 'infinite' | 'top';
|
|
66
66
|
/** difference between upper and lower bound of interval domain (to estimate approximation) */
|
|
@@ -70,7 +70,7 @@ export interface PerNodeStatsDfShape<T = number> {
|
|
|
70
70
|
/**
|
|
71
71
|
* Please note, that these measurement can be negative as there is no guarantee that the memory usage will increase
|
|
72
72
|
* due to, e.g., garbage collection.
|
|
73
|
-
*/
|
|
73
|
+
*/
|
|
74
74
|
export interface BenchmarkMemoryMeasurement<T = number> extends MergeableRecord {
|
|
75
75
|
heap: T;
|
|
76
76
|
rss: T;
|
package/benchmark/stopwatch.d.ts
CHANGED
|
@@ -10,26 +10,24 @@ export interface IStoppableStopwatch {
|
|
|
10
10
|
export declare class Measurements<T> {
|
|
11
11
|
private measurements;
|
|
12
12
|
/**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
* Start a timer for the given key, and guards that this is the first time this key is started.
|
|
14
|
+
* Call {@link IStoppableStopwatch#stop} on the returned stopwatch to stop the timer.
|
|
15
|
+
*/
|
|
16
16
|
start(key: T): IStoppableStopwatch;
|
|
17
17
|
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
* Automatically call {@link Measurements#start | start} and the corresponding stop to measure the execution time of the given function.
|
|
19
|
+
* @see {@link measureAsync}
|
|
20
|
+
*/
|
|
21
21
|
measure<Out>(key: T, fn: () => Out): Out;
|
|
22
22
|
/**
|
|
23
|
-
|
|
24
|
-
*
|
|
23
|
+
* Similar to {@link measure}, but await the promise as part of the measurement
|
|
25
24
|
* @param key - The key to write the resulting measurement to
|
|
26
25
|
* @param fn - The function to measure
|
|
27
|
-
*
|
|
28
|
-
|
|
29
|
-
*/
|
|
26
|
+
* @see measure
|
|
27
|
+
*/
|
|
30
28
|
measureAsync<Out>(key: T, fn: () => Promise<Out>): Promise<Out>;
|
|
31
29
|
/**
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
* Retrieve all measure-results, requires that all stop-watches that have been started have also been stopped.
|
|
31
|
+
*/
|
|
34
32
|
get(): Map<T, bigint>;
|
|
35
33
|
}
|