@eagleoutice/flowr 2.6.1 → 2.6.3
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 -39
- 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 +17 -12
- 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 +9 -10
- package/abstract-interpretation/data-frame/mappers/function-mapper.js +21 -18
- 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 +179 -162
- package/abstract-interpretation/data-frame/shape-inference.d.ts +4 -7
- package/abstract-interpretation/data-frame/shape-inference.js +10 -12
- 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 +2 -8
- package/abstract-interpretation/normalized-ast-fold.js +0 -5
- package/benchmark/slicer.d.ts +4 -7
- package/benchmark/slicer.js +27 -31
- 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 +13 -1
- package/benchmark/summarizer/second-phase/graph.d.ts +5 -0
- package/benchmark/summarizer/second-phase/graph.js +5 -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/export-quads-app.js +1 -1
- 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-dataflow.js +2 -1
- 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 +18 -6
- package/cli/repl/commands/repl-query.js +16 -5
- package/cli/repl/core.d.ts +24 -6
- package/cli/repl/core.js +42 -30
- 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 +5 -32
- 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 +5 -1
- package/cli/script-core/summarizer-core.d.ts +3 -0
- package/cli/script-core/summarizer-core.js +3 -0
- package/cli/slicer-app.js +3 -4
- package/cli/summarizer-app.d.ts +2 -3
- package/cli/summarizer-app.js +2 -3
- package/cli/wiki.d.ts +4 -0
- package/cli/wiki.js +165 -0
- package/config.d.ts +21 -3
- package/config.js +21 -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-dead-code.js +13 -3
- package/control-flow/cfg-simplification.d.ts +5 -2
- package/control-flow/cfg-simplification.js +3 -0
- 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 +12 -9
- package/control-flow/extract-cfg.js +44 -7
- package/control-flow/happens-before.d.ts +1 -1
- package/control-flow/semantic-cfg-guided-visitor.d.ts +4 -33
- 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 +2 -4
- package/control-flow/syntax-cfg-guided-visitor.d.ts +1 -2
- package/control-flow/useless-loop.d.ts +3 -6
- package/control-flow/useless-loop.js +16 -10
- package/core/pipeline-executor.d.ts +11 -22
- package/core/pipeline-executor.js +13 -25
- 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 +21 -1
- 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 +2 -2
- package/core/steps/all/core/00-parse.js +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 -6
- package/core/steps/all/core/10-normalize.js +1 -13
- package/core/steps/all/core/11-normalize-tree-sitter.d.ts +5 -5
- package/core/steps/all/core/11-normalize-tree-sitter.js +2 -3
- package/core/steps/all/core/20-dataflow.d.ts +3 -4
- package/core/steps/all/core/20-dataflow.js +2 -2
- package/core/steps/all/static-slicing/00-slice.d.ts +1 -2
- package/core/steps/all/static-slicing/00-slice.js +1 -1
- package/core/steps/all/static-slicing/10-reconstruct.d.ts +8 -0
- package/core/steps/all/static-slicing/10-reconstruct.js +4 -1
- package/core/steps/pipeline/create-pipeline.d.ts +1 -1
- package/core/steps/pipeline/default-pipelines.d.ts +94 -95
- package/core/steps/pipeline/default-pipelines.js +8 -12
- 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 -2
- package/dataflow/environments/clone.js +12 -2
- 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 +11 -2
- 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 +1 -2
- package/dataflow/environments/overwrite.js +3 -16
- 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 +9 -2
- package/dataflow/environments/scoping.js +8 -1
- 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-argument.js +2 -2
- 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 +16 -1
- package/dataflow/eval/values/string/string-constants.js +15 -0
- package/dataflow/eval/values/vectors/vector-constants.d.ts +1 -1
- package/dataflow/extractor.d.ts +3 -4
- package/dataflow/extractor.js +25 -22
- 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 +9 -28
- package/dataflow/graph/graph.js +4 -28
- 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 +8 -0
- package/dataflow/graph/unknown-replacement.js +8 -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 +16 -10
- package/dataflow/info.js +27 -1
- package/dataflow/internal/linker.d.ts +25 -9
- package/dataflow/internal/linker.js +30 -11
- package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
- package/dataflow/internal/process/functions/call/argument/make-argument.js +6 -1
- 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 +6 -4
- 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 +4 -1
- 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-assignment.js +4 -4
- 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 +9 -6
- 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 +4 -1
- 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 +4 -1
- 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 +7 -1
- 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 +5 -1
- 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-list.js +2 -2
- 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 +6 -3
- 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 +10 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +8 -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 +5 -3
- 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 +34 -12
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +90 -68
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +5 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +5 -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-vector.js +2 -2
- 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 +4 -1
- package/dataflow/internal/process/functions/call/common.d.ts +11 -5
- package/dataflow/internal/process/functions/call/common.js +9 -3
- package/dataflow/internal/process/functions/call/default-call-handling.d.ts +5 -0
- package/dataflow/internal/process/functions/call/default-call-handling.js +5 -0
- package/dataflow/internal/process/functions/call/known-call-handling.d.ts +12 -5
- package/dataflow/internal/process/functions/call/known-call-handling.js +10 -3
- package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -1
- package/dataflow/internal/process/functions/call/named-call-handling.js +10 -4
- 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 +7 -4
- 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 +6 -8
- package/dataflow/origin/dfg-get-symbol-refs.js +7 -9
- package/dataflow/processor.d.ts +6 -12
- package/dataflow/processor.js +0 -1
- package/documentation/data/dfg/doc-data-dfg-util.d.ts +6 -2
- 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 +87 -0
- package/documentation/data/faq/recommended-configs.d.ts +36 -0
- package/documentation/data/faq/recommended-configs.js +40 -0
- package/documentation/data/faq/wiki-faq-store.d.ts +19 -0
- package/documentation/data/faq/wiki-faq-store.js +83 -0
- package/documentation/data/server/doc-data-server-messages.d.ts +3 -0
- package/documentation/data/server/doc-data-server-messages.js +5 -64
- package/documentation/doc-capabilities.d.ts +9 -0
- package/documentation/{print-capabilities-markdown.js → doc-capabilities.js} +18 -21
- package/documentation/doc-readme.d.ts +9 -0
- package/documentation/{print-readme.js → doc-readme.js} +136 -35
- 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 +14 -0
- package/documentation/doc-util/doc-benchmarks.js +14 -0
- package/documentation/doc-util/doc-cfg.d.ts +7 -1
- package/documentation/doc-util/doc-cfg.js +14 -8
- 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 +12 -6
- package/documentation/doc-util/doc-dfg.js +19 -10
- 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 +6 -1
- package/documentation/doc-util/doc-escape.js +11 -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 +26 -0
- package/documentation/doc-util/doc-general.js +26 -0
- package/documentation/doc-util/doc-normalized-ast.d.ts +14 -3
- package/documentation/doc-util/doc-normalized-ast.js +16 -7
- package/documentation/doc-util/doc-query.d.ts +26 -3
- package/documentation/doc-util/doc-query.js +34 -12
- 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 +3 -18
- package/documentation/doc-util/doc-search.js +6 -62
- package/documentation/doc-util/doc-server-message.d.ts +18 -6
- package/documentation/doc-util/doc-server-message.js +17 -5
- 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 +90 -11
- package/documentation/doc-util/doc-types.js +128 -39
- package/documentation/index.d.ts +9 -9
- package/documentation/index.js +9 -9
- package/documentation/issue-linting-rule.d.ts +9 -0
- package/documentation/{print-linter-issue.js → issue-linting-rule.js} +20 -23
- package/documentation/wiki-analyzer.d.ts +9 -0
- package/documentation/wiki-analyzer.js +412 -0
- package/documentation/wiki-cfg.d.ts +9 -0
- package/documentation/{print-cfg-wiki.js → wiki-cfg.js} +144 -160
- package/documentation/wiki-core.d.ts +14 -0
- package/documentation/{print-core-wiki.js → wiki-core.js} +167 -175
- package/documentation/wiki-dataflow-graph.d.ts +9 -0
- package/documentation/{print-dataflow-graph-wiki.js → wiki-dataflow-graph.js} +145 -175
- package/documentation/wiki-engine.d.ts +9 -0
- package/documentation/{print-engines-wiki.js → wiki-engine.js} +27 -42
- package/documentation/wiki-faq.d.ts +8 -0
- package/documentation/wiki-faq.js +22 -0
- package/documentation/wiki-interface.d.ts +9 -0
- package/documentation/{print-interface-wiki.js → wiki-interface.js} +60 -57
- package/documentation/wiki-linter.d.ts +9 -0
- package/documentation/{print-linter-wiki.js → wiki-linter.js} +52 -48
- package/documentation/wiki-linting-and-testing.d.ts +9 -0
- package/documentation/{print-linting-and-testing-wiki.js → wiki-linting-and-testing.js} +25 -32
- package/documentation/wiki-mk/doc-context.d.ts +186 -0
- package/documentation/wiki-mk/doc-context.js +84 -0
- package/documentation/wiki-mk/doc-maker.d.ts +95 -0
- package/documentation/wiki-mk/doc-maker.js +133 -0
- package/documentation/wiki-normalized-ast.d.ts +9 -0
- package/documentation/{print-normalized-ast-wiki.js → wiki-normalized-ast.js} +64 -47
- package/documentation/wiki-onboarding.d.ts +8 -0
- package/documentation/{print-onboarding-wiki.js → wiki-onboarding.js} +18 -15
- package/documentation/wiki-query.d.ts +9 -0
- package/documentation/{print-query-wiki.js → wiki-query.js} +65 -80
- package/documentation/wiki-search.d.ts +9 -0
- package/documentation/wiki-search.js +61 -0
- package/engines.d.ts +1 -1
- package/linter/linter-executor.d.ts +6 -3
- package/linter/linter-executor.js +6 -2
- package/linter/linter-format.d.ts +10 -2
- package/linter/linter-format.js +8 -0
- package/linter/linter-rules.d.ts +13 -17
- package/linter/rules/absolute-path.d.ts +4 -6
- package/linter/rules/absolute-path.js +2 -2
- package/linter/rules/dataframe-access-validation.d.ts +4 -5
- package/linter/rules/dataframe-access-validation.js +21 -19
- package/linter/rules/dead-code.d.ts +2 -2
- package/linter/rules/deprecated-functions.d.ts +2 -6
- package/linter/rules/file-path-validity.d.ts +2 -3
- package/linter/rules/file-path-validity.js +4 -4
- package/linter/rules/function-finder-util.d.ts +2 -7
- package/linter/rules/naming-convention.d.ts +15 -4
- package/linter/rules/naming-convention.js +14 -2
- package/linter/rules/network-functions.d.ts +2 -2
- package/linter/rules/network-functions.js +1 -1
- package/linter/rules/seeded-randomness.d.ts +4 -4
- package/linter/rules/seeded-randomness.js +33 -13
- package/linter/rules/unused-definition.d.ts +3 -4
- package/linter/rules/useless-loop.d.ts +3 -4
- package/linter/rules/useless-loop.js +2 -2
- package/package.json +7 -18
- package/project/cache/flowr-analyzer-cache.d.ts +9 -19
- package/project/cache/flowr-analyzer-cache.js +17 -44
- package/project/cache/flowr-analyzer-controlflow-cache.d.ts +34 -0
- package/project/cache/flowr-analyzer-controlflow-cache.js +79 -0
- package/project/context/flowr-analyzer-context.d.ts +31 -9
- package/project/context/flowr-analyzer-context.js +48 -4
- package/project/context/flowr-analyzer-dependencies-context.d.ts +0 -1
- package/project/context/flowr-analyzer-files-context.d.ts +63 -15
- package/project/context/flowr-analyzer-files-context.js +110 -39
- package/project/context/flowr-file.d.ts +32 -11
- package/project/context/flowr-file.js +30 -9
- package/project/flowr-analyzer-builder.d.ts +23 -31
- package/project/flowr-analyzer-builder.js +35 -74
- package/project/flowr-analyzer.d.ts +79 -29
- package/project/flowr-analyzer.js +59 -15
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +8 -2
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.js +13 -5
- package/project/plugins/file-plugins/flowr-analyzer-file-plugin.d.ts +3 -3
- package/project/plugins/file-plugins/flowr-analyzer-file-plugin.js +11 -5
- package/project/plugins/file-plugins/flowr-description-file.d.ts +3 -5
- package/project/plugins/file-plugins/flowr-description-file.js +0 -1
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.d.ts +22 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-jupyter-file-plugin.js +33 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.d.ts +22 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-qmd-file-plugin.js +33 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.d.ts +22 -0
- package/project/plugins/file-plugins/notebooks/flowr-analyzer-rmd-file-plugin.js +33 -0
- package/project/plugins/file-plugins/notebooks/flowr-jupyter-file.d.ts +20 -0
- package/project/plugins/file-plugins/notebooks/flowr-jupyter-file.js +42 -0
- package/project/plugins/file-plugins/notebooks/flowr-rmarkdown-file.d.ts +59 -0
- package/project/plugins/file-plugins/notebooks/flowr-rmarkdown-file.js +132 -0
- package/project/plugins/file-plugins/notebooks/notebook.d.ts +0 -0
- package/project/plugins/file-plugins/notebooks/notebook.js +2 -0
- package/project/plugins/flowr-analyzer-plugin-defaults.d.ts +5 -0
- package/project/plugins/flowr-analyzer-plugin-defaults.js +23 -0
- package/project/plugins/flowr-analyzer-plugin.d.ts +2 -0
- package/project/plugins/flowr-analyzer-plugin.js +2 -0
- package/project/plugins/loading-order-plugins/flowr-analyzer-loading-order-description-file-plugin.js +1 -1
- package/project/plugins/package-version-plugins/flowr-analyzer-package-versions-description-file-plugin.js +1 -1
- package/project/plugins/plugin-registry.d.ts +34 -0
- package/project/plugins/plugin-registry.js +62 -0
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +1 -1
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.js +7 -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 +7 -2
- 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 +16 -4
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +34 -18
- 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 +5 -2
- 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 +25 -5
- package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +4 -0
- package/queries/catalog/happens-before-query/happens-before-query-executor.js +4 -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 +80 -2
- 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 +7 -2
- 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 +6 -1
- 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 +10 -1
- 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 +30 -1
- package/queries/query-print.d.ts +20 -4
- package/queries/query-print.js +18 -2
- package/queries/query.d.ts +93 -55
- package/queries/query.js +55 -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 +2 -2
- package/r-bridge/lang-4.x/ast/model/collect.js +4 -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-project.d.ts +29 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-project.js +15 -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 +11 -14
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +30 -17
- 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 +6 -5
- package/r-bridge/lang-4.x/ast/model/type.js +6 -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/format.js +1 -1
- package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +12 -12
- package/r-bridge/lang-4.x/ast/parser/json/parser.js +11 -11
- 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-root.d.ts +4 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-root.js +20 -11
- 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 +18 -0
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +15 -2
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +62 -24
- package/r-bridge/parser.d.ts +43 -12
- package/r-bridge/parser.js +27 -13
- package/r-bridge/retriever.d.ts +25 -16
- package/r-bridge/retriever.js +29 -5
- 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 -2
- package/reconstruct/auto-select/magic-comments.d.ts +1 -2
- package/reconstruct/auto-select/magic-comments.js +2 -3
- package/reconstruct/reconstruct.d.ts +18 -12
- package/reconstruct/reconstruct.js +19 -10
- 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 +15 -3
- package/search/search-executor/search-enrichers.d.ts +16 -6
- package/search/search-executor/search-enrichers.js +4 -3
- package/search/search-executor/search-generators.d.ts +19 -10
- package/search/search-executor/search-generators.js +57 -5
- 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 +13 -12
- package/slicing/criterion/collect-all.js +1 -1
- package/slicing/criterion/parse.d.ts +4 -2
- package/slicing/criterion/parse.js +8 -6
- 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/assignments.js +1 -1
- 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/control-flow.js +1 -1
- 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/data-access.js +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/defined-functions/defined-functions.js +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/expression-list/statistics-expression-list.js +1 -1
- package/statistics/features/supported/loops/loops.js +1 -1
- 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-functions/used-functions.js +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/features/supported/variables/variables.js +1 -1
- 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 +4 -4
- 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 +56 -2
- package/util/assert.js +56 -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 +12 -12
- package/util/files.js +11 -11
- 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 +7 -3
- package/util/mermaid/ast.js +39 -8
- package/util/mermaid/cfg.d.ts +1 -1
- package/util/mermaid/cfg.js +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/documentation/print-analyzer-wiki.d.ts +0 -1
- package/documentation/print-analyzer-wiki.js +0 -137
- package/documentation/print-capabilities-markdown.d.ts +0 -1
- package/documentation/print-cfg-wiki.d.ts +0 -1
- package/documentation/print-core-wiki.d.ts +0 -2
- package/documentation/print-dataflow-graph-wiki.d.ts +0 -1
- package/documentation/print-engines-wiki.d.ts +0 -1
- package/documentation/print-faq-wiki.d.ts +0 -1
- package/documentation/print-faq-wiki.js +0 -90
- package/documentation/print-interface-wiki.d.ts +0 -1
- package/documentation/print-linter-issue.d.ts +0 -1
- package/documentation/print-linter-wiki.d.ts +0 -1
- package/documentation/print-linting-and-testing-wiki.d.ts +0 -1
- package/documentation/print-normalized-ast-wiki.d.ts +0 -1
- package/documentation/print-onboarding-wiki.d.ts +0 -1
- package/documentation/print-query-wiki.d.ts +0 -1
- package/documentation/print-readme.d.ts +0 -1
- package/documentation/print-search-wiki.d.ts +0 -1
- package/documentation/print-search-wiki.js +0 -74
- 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
- package/util/formats/adapter-format.d.ts +0 -6
- package/util/formats/adapter-format.js +0 -3
- package/util/formats/adapter.d.ts +0 -18
- package/util/formats/adapter.js +0 -49
- package/util/formats/adapters/r-adapter.d.ts +0 -4
- package/util/formats/adapters/r-adapter.js +0 -7
- package/util/formats/adapters/rmd-adapter.d.ts +0 -26
- package/util/formats/adapters/rmd-adapter.js +0 -91
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { type Lattice, Top } from './lattice';
|
|
2
2
|
/**
|
|
3
3
|
* The default limit of inferred constraints in {@link AbstractDomain|AbstractDomains}.
|
|
4
4
|
*/
|
|
@@ -6,51 +6,92 @@ export declare const DEFAULT_INFERENCE_LIMIT = 50;
|
|
|
6
6
|
/**
|
|
7
7
|
* An abstract domain as complete lattice with a widening operator, narrowing operator, concretization function, and abstraction function.
|
|
8
8
|
* @template Concrete - Type of an concrete element of the concrete domain for the abstract domain
|
|
9
|
-
* @template Abstract - Type of an abstract element of the abstract domain representing possible elements (
|
|
10
|
-
* @template Top - Type of the Top element of the abstract domain representing all possible elements
|
|
11
|
-
* @template Bot - Type of the Bottom element of the abstract domain representing no possible elements
|
|
12
|
-
* @template
|
|
9
|
+
* @template Abstract - Type of an abstract element of the abstract domain representing possible elements (excludes `Top` and `Bot`)
|
|
10
|
+
* @template Top - Type of the Top element of the abstract domain representing all possible elements
|
|
11
|
+
* @template Bot - Type of the Bottom element of the abstract domain representing no possible elements
|
|
12
|
+
* @template Value - Type of the abstract elements of the abstract domain (defaults to `Abstract` or `Top` or `Bot`)
|
|
13
13
|
*/
|
|
14
|
-
export
|
|
14
|
+
export declare abstract class AbstractDomain<Concrete, Abstract, Top, Bot, Value extends Abstract | Top | Bot = Abstract | Top | Bot> implements Lattice<Abstract, Top, Bot, Value> {
|
|
15
|
+
protected readonly _value: Value;
|
|
16
|
+
constructor(value: Value);
|
|
17
|
+
get value(): Value;
|
|
18
|
+
abstract create(value: Abstract | Top | Bot): this;
|
|
19
|
+
abstract top(): this & AbstractDomain<Concrete, Abstract, Top, Bot, Top>;
|
|
20
|
+
abstract bottom(): this & AbstractDomain<Concrete, Abstract, Top, Bot, Bot>;
|
|
21
|
+
abstract equals(other: this): boolean;
|
|
22
|
+
abstract leq(other: this): boolean;
|
|
23
|
+
abstract join(other: this): this;
|
|
24
|
+
/**
|
|
25
|
+
* Joins the current abstract value with multiple other abstract values.
|
|
26
|
+
*/
|
|
27
|
+
joinAll(values: readonly this[]): this;
|
|
28
|
+
abstract meet(other: this): this;
|
|
29
|
+
/**
|
|
30
|
+
* Meets the current abstract value with multiple other abstract values.
|
|
31
|
+
*/
|
|
32
|
+
meetAll(values: readonly this[]): this;
|
|
15
33
|
/**
|
|
16
34
|
* Widens the current abstract value with another abstract value as a sound over-approximation of the join (least upper bound) for fixpoint iteration acceleration.
|
|
17
35
|
*/
|
|
18
|
-
widen(other:
|
|
36
|
+
abstract widen(other: this): this;
|
|
19
37
|
/**
|
|
20
38
|
* Narrows the current abstract value with another abstract value as a sound over-approximation of the meet (greatest lower bound) to refine the value after widening.
|
|
21
39
|
*/
|
|
22
|
-
narrow(other:
|
|
40
|
+
abstract narrow(other: this): this;
|
|
23
41
|
/**
|
|
24
42
|
* Maps the current abstract value into a set of possible concrete values as concretization function of the abstract domain.
|
|
25
43
|
* The result should be `Top` if the number of concrete values would reach the `limit` or the resulting set would have infinite many elements.
|
|
26
44
|
*/
|
|
27
|
-
concretize(limit
|
|
45
|
+
abstract concretize(limit: number): ReadonlySet<Concrete> | typeof Top;
|
|
28
46
|
/**
|
|
29
47
|
* Maps a set of possible concrete values into an abstract value as abstraction function of the abstract domain (should additionally be provided as static function).
|
|
30
48
|
*/
|
|
31
|
-
abstract(concrete: ReadonlySet<Concrete> | typeof Top):
|
|
49
|
+
abstract abstract(concrete: ReadonlySet<Concrete> | typeof Top): this;
|
|
50
|
+
abstract toJson(): unknown;
|
|
51
|
+
abstract toString(): string;
|
|
52
|
+
abstract isTop(): this is AbstractDomain<Concrete, Abstract, Top, Bot, Top>;
|
|
53
|
+
abstract isBottom(): this is AbstractDomain<Concrete, Abstract, Top, Bot, Bot>;
|
|
54
|
+
abstract isValue(): this is AbstractDomain<Concrete, Abstract, Top, Bot, Abstract>;
|
|
55
|
+
/**
|
|
56
|
+
* Joins an array of abstract values by joining the first abstract value with the other values in the array.
|
|
57
|
+
* The provided array of abstract values cannot be empty!
|
|
58
|
+
*/
|
|
59
|
+
static joinAll<Domain extends AnyAbstractDomain>(values: Domain[]): Domain;
|
|
60
|
+
/**
|
|
61
|
+
* Meets an array of abstract values by meeting the first abstract value with the other values in the array.
|
|
62
|
+
* The provided array of abstract values cannot be empty!
|
|
63
|
+
*/
|
|
64
|
+
static meetAll<Domain extends AnyAbstractDomain>(values: Domain[]): Domain;
|
|
32
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* A type representing any abstract domain without additional information.
|
|
68
|
+
*/
|
|
69
|
+
export type AnyAbstractDomain = AbstractDomain<unknown, unknown, unknown, unknown>;
|
|
33
70
|
/**
|
|
34
71
|
* The type of the concrete domain of an abstract domain.
|
|
35
72
|
* @template Domain - The abstract domain to get the concrete domain type for
|
|
36
73
|
*/
|
|
37
|
-
export type ConcreteDomain<Domain extends
|
|
74
|
+
export type ConcreteDomain<Domain extends AnyAbstractDomain> = Domain extends AbstractDomain<infer Concrete, unknown, unknown, unknown> ? Concrete : never;
|
|
75
|
+
/**
|
|
76
|
+
* The type of the abstract values of an abstract domain (including the Top and Bottom element).
|
|
77
|
+
* @template Domain - The abstract domain to get the abstract value type for
|
|
78
|
+
*/
|
|
79
|
+
export type AbstractDomainValue<Domain extends AnyAbstractDomain> = Domain extends AbstractDomain<unknown, infer Value, infer Top, infer Bot> ? Value | Top | Bot : never;
|
|
38
80
|
/**
|
|
39
81
|
* The type of the Top element (greatest element) of an abstract domain.
|
|
40
82
|
* @template Domain - The abstract domain to get the Top element type for
|
|
41
83
|
*/
|
|
42
|
-
export type AbstractDomainTop<Domain extends
|
|
84
|
+
export type AbstractDomainTop<Domain extends AnyAbstractDomain> = Domain extends AbstractDomain<unknown, unknown, infer Top, unknown> ? Top : never;
|
|
43
85
|
/**
|
|
44
86
|
* The type of the Bottom element (least element) of an abstract domain.
|
|
45
87
|
* @template Domain - The abstract domain to get the Bottom element type for
|
|
46
88
|
*/
|
|
47
|
-
export type AbstractDomainBottom<Domain extends
|
|
89
|
+
export type AbstractDomainBottom<Domain extends AnyAbstractDomain> = Domain extends AbstractDomain<unknown, unknown, unknown, infer Bot> ? Bot : never;
|
|
48
90
|
/**
|
|
49
|
-
*
|
|
50
|
-
* @template Domain - The abstract domain to get the abstract value type for
|
|
91
|
+
* Converts an element of an abstract domain into a string.
|
|
51
92
|
*/
|
|
52
|
-
export
|
|
93
|
+
export declare function domainElementToString(value: AnyAbstractDomain | unknown): string;
|
|
53
94
|
/**
|
|
54
|
-
*
|
|
95
|
+
*
|
|
55
96
|
*/
|
|
56
|
-
export declare function
|
|
97
|
+
export declare function isAbstractDomain(value: unknown): value is AnyAbstractDomain;
|
|
@@ -1,11 +1,69 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_INFERENCE_LIMIT = void 0;
|
|
3
|
+
exports.AbstractDomain = exports.DEFAULT_INFERENCE_LIMIT = void 0;
|
|
4
4
|
exports.domainElementToString = domainElementToString;
|
|
5
|
+
exports.isAbstractDomain = isAbstractDomain;
|
|
6
|
+
const assert_1 = require("../../util/assert");
|
|
7
|
+
const lattice_1 = require("./lattice");
|
|
5
8
|
/**
|
|
6
9
|
* The default limit of inferred constraints in {@link AbstractDomain|AbstractDomains}.
|
|
7
10
|
*/
|
|
8
11
|
exports.DEFAULT_INFERENCE_LIMIT = 50;
|
|
12
|
+
/**
|
|
13
|
+
* An abstract domain as complete lattice with a widening operator, narrowing operator, concretization function, and abstraction function.
|
|
14
|
+
* @template Concrete - Type of an concrete element of the concrete domain for the abstract domain
|
|
15
|
+
* @template Abstract - Type of an abstract element of the abstract domain representing possible elements (excludes `Top` and `Bot`)
|
|
16
|
+
* @template Top - Type of the Top element of the abstract domain representing all possible elements
|
|
17
|
+
* @template Bot - Type of the Bottom element of the abstract domain representing no possible elements
|
|
18
|
+
* @template Value - Type of the abstract elements of the abstract domain (defaults to `Abstract` or `Top` or `Bot`)
|
|
19
|
+
*/
|
|
20
|
+
class AbstractDomain {
|
|
21
|
+
_value;
|
|
22
|
+
constructor(value) {
|
|
23
|
+
this._value = value;
|
|
24
|
+
}
|
|
25
|
+
get value() {
|
|
26
|
+
return this._value;
|
|
27
|
+
}
|
|
28
|
+
;
|
|
29
|
+
/**
|
|
30
|
+
* Joins the current abstract value with multiple other abstract values.
|
|
31
|
+
*/
|
|
32
|
+
joinAll(values) {
|
|
33
|
+
let result = this.create(this.value);
|
|
34
|
+
for (const other of values) {
|
|
35
|
+
result = result.join(other);
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Meets the current abstract value with multiple other abstract values.
|
|
41
|
+
*/
|
|
42
|
+
meetAll(values) {
|
|
43
|
+
let result = this.create(this.value);
|
|
44
|
+
for (const other of values) {
|
|
45
|
+
result = result.meet(other);
|
|
46
|
+
}
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Joins an array of abstract values by joining the first abstract value with the other values in the array.
|
|
51
|
+
* The provided array of abstract values cannot be empty!
|
|
52
|
+
*/
|
|
53
|
+
static joinAll(values) {
|
|
54
|
+
(0, assert_1.guard)(values.length > 0, 'Abstract values to join cannot be empty');
|
|
55
|
+
return values[0].joinAll(values.slice(1));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Meets an array of abstract values by meeting the first abstract value with the other values in the array.
|
|
59
|
+
* The provided array of abstract values cannot be empty!
|
|
60
|
+
*/
|
|
61
|
+
static meetAll(values) {
|
|
62
|
+
(0, assert_1.guard)(values.length > 0, 'Abstract values to meet cannot be empty');
|
|
63
|
+
return values[0].meetAll(values.slice(1));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.AbstractDomain = AbstractDomain;
|
|
9
67
|
/**
|
|
10
68
|
* Converts an element of an abstract domain into a string.
|
|
11
69
|
*/
|
|
@@ -14,6 +72,21 @@ function domainElementToString(value) {
|
|
|
14
72
|
// eslint-disable-next-line @typescript-eslint/no-base-to-string
|
|
15
73
|
return value.toString();
|
|
16
74
|
}
|
|
75
|
+
else if (value === lattice_1.Top) {
|
|
76
|
+
return '⊤';
|
|
77
|
+
}
|
|
78
|
+
else if (value === lattice_1.Bottom) {
|
|
79
|
+
return '⊥';
|
|
80
|
+
}
|
|
17
81
|
return JSON.stringify(value);
|
|
18
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
*
|
|
85
|
+
*/
|
|
86
|
+
function isAbstractDomain(value) {
|
|
87
|
+
if (typeof value !== 'object' || value === null) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
return ['value', 'top', 'bottom', 'leq', 'join', 'meet', 'widen', 'narrow', 'concretize', 'abstract'].every(property => property in value);
|
|
91
|
+
}
|
|
19
92
|
//# sourceMappingURL=abstract-domain.js.map
|
|
@@ -1,43 +1,56 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Ternary } from '../../util/logic';
|
|
2
|
+
import { AbstractDomain } from './abstract-domain';
|
|
2
3
|
import { Top } from './lattice';
|
|
4
|
+
import type { SatisfiableDomain } from './satisfiable-domain';
|
|
5
|
+
/** The Bottom element of the bounded set domain as empty set */
|
|
6
|
+
export declare const BoundedSetBottom: ReadonlySet<never>;
|
|
3
7
|
/** The type of the actual values of the bounded set domain as set */
|
|
4
|
-
|
|
8
|
+
type BoundedSetValue<T> = ReadonlySet<T>;
|
|
5
9
|
/** The type of the Top element of the bounded set domain as {@link Top} symbol */
|
|
6
|
-
|
|
10
|
+
type BoundedSetTop = typeof Top;
|
|
7
11
|
/** The type of the Bottom element of the bounded set domain as empty set */
|
|
8
|
-
|
|
12
|
+
type BoundedSetBottom = typeof BoundedSetBottom;
|
|
9
13
|
/** The type of the abstract values of the bounded set domain that are Top, Bottom, or actual values */
|
|
10
|
-
|
|
14
|
+
type BoundedSetLift<T> = BoundedSetValue<T> | BoundedSetTop | BoundedSetBottom;
|
|
11
15
|
/**
|
|
12
16
|
* The bounded set abstract domain as sets of possible values bounded by a `limit` indicating the maximum number of inferred values.
|
|
13
17
|
* The Bottom element is defined as the empty set and the Top element is defined as {@link Top} symbol.
|
|
14
18
|
* @template T - Type of the values in the abstract domain
|
|
15
19
|
* @template Value - Type of the constraint in the abstract domain (Top, Bottom, or an actual value)
|
|
16
20
|
*/
|
|
17
|
-
export declare class BoundedSetDomain<T, Value extends BoundedSetLift<T> = BoundedSetLift<T>>
|
|
18
|
-
|
|
19
|
-
private
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
export declare class BoundedSetDomain<T, Value extends BoundedSetLift<T> = BoundedSetLift<T>> extends AbstractDomain<T, BoundedSetValue<T>, BoundedSetTop, BoundedSetBottom, Value> implements SatisfiableDomain<T> {
|
|
22
|
+
readonly limit: number;
|
|
23
|
+
private readonly setType;
|
|
24
|
+
/**
|
|
25
|
+
* @param limit - A limit for the maximum number of elements to store in the set
|
|
26
|
+
* @param setType - An optional set constructor for the domain elements if the type `T` is not storable in a HashSet
|
|
27
|
+
*/
|
|
28
|
+
constructor(value: Value | T[], limit?: number, setType?: typeof Set<T>);
|
|
29
|
+
create(value: BoundedSetLift<T> | T[]): this;
|
|
30
|
+
static top<T>(limit?: number, setType?: typeof Set<T>): BoundedSetDomain<T, BoundedSetTop>;
|
|
31
|
+
static bottom<T>(limit?: number, setType?: typeof Set<T>): BoundedSetDomain<T, BoundedSetBottom>;
|
|
32
|
+
static abstract<T>(concrete: ReadonlySet<T> | typeof Top, limit?: number, setType?: typeof Set<T>): BoundedSetDomain<T>;
|
|
33
|
+
top(): this & BoundedSetDomain<T, BoundedSetTop>;
|
|
34
|
+
bottom(): this & BoundedSetDomain<T, BoundedSetBottom>;
|
|
35
|
+
equals(other: this): boolean;
|
|
36
|
+
leq(other: this): boolean;
|
|
37
|
+
join(other: this): this;
|
|
38
|
+
join(other: BoundedSetLift<T> | T[]): this;
|
|
39
|
+
meet(other: this): this;
|
|
40
|
+
meet(other: BoundedSetLift<T> | T[]): this;
|
|
31
41
|
/**
|
|
32
42
|
* Subtracts another abstract value from the current abstract value by removing all elements of the other abstract value from the current abstract value.
|
|
33
43
|
*/
|
|
34
|
-
subtract(other:
|
|
35
|
-
widen(other:
|
|
36
|
-
narrow(other:
|
|
37
|
-
concretize(limit
|
|
38
|
-
abstract(concrete: ReadonlySet<T> | typeof Top):
|
|
44
|
+
subtract(other: this | BoundedSetLift<T> | T[]): this;
|
|
45
|
+
widen(other: this): this;
|
|
46
|
+
narrow(other: this): this;
|
|
47
|
+
concretize(limit: number): ReadonlySet<T> | typeof Top;
|
|
48
|
+
abstract(concrete: ReadonlySet<T> | typeof Top): this;
|
|
49
|
+
satisfies(value: T): Ternary;
|
|
50
|
+
toJson(): unknown;
|
|
39
51
|
toString(): string;
|
|
40
52
|
isTop(): this is BoundedSetDomain<T, BoundedSetTop>;
|
|
41
53
|
isBottom(): this is BoundedSetDomain<T, BoundedSetBottom>;
|
|
42
54
|
isValue(): this is BoundedSetDomain<T, BoundedSetValue<T>>;
|
|
43
55
|
}
|
|
56
|
+
export {};
|
|
@@ -1,44 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BoundedSetDomain = void 0;
|
|
3
|
+
exports.BoundedSetDomain = exports.BoundedSetBottom = void 0;
|
|
4
4
|
const set_1 = require("../../util/collections/set");
|
|
5
|
+
const logic_1 = require("../../util/logic");
|
|
5
6
|
const abstract_domain_1 = require("./abstract-domain");
|
|
6
7
|
const lattice_1 = require("./lattice");
|
|
8
|
+
/* eslint-disable @typescript-eslint/unified-signatures */
|
|
9
|
+
/** The Bottom element of the bounded set domain as empty set */
|
|
10
|
+
exports.BoundedSetBottom = new Set();
|
|
7
11
|
/**
|
|
8
12
|
* The bounded set abstract domain as sets of possible values bounded by a `limit` indicating the maximum number of inferred values.
|
|
9
13
|
* The Bottom element is defined as the empty set and the Top element is defined as {@link Top} symbol.
|
|
10
14
|
* @template T - Type of the values in the abstract domain
|
|
11
15
|
* @template Value - Type of the constraint in the abstract domain (Top, Bottom, or an actual value)
|
|
12
16
|
*/
|
|
13
|
-
class BoundedSetDomain {
|
|
17
|
+
class BoundedSetDomain extends abstract_domain_1.AbstractDomain {
|
|
14
18
|
limit;
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
setType;
|
|
20
|
+
/**
|
|
21
|
+
* @param limit - A limit for the maximum number of elements to store in the set
|
|
22
|
+
* @param setType - An optional set constructor for the domain elements if the type `T` is not storable in a HashSet
|
|
23
|
+
*/
|
|
24
|
+
constructor(value, limit = abstract_domain_1.DEFAULT_INFERENCE_LIMIT, setType = Set) {
|
|
17
25
|
if (value !== lattice_1.Top) {
|
|
18
|
-
|
|
26
|
+
if (Array.isArray(value)) {
|
|
27
|
+
super((value.length > limit ? lattice_1.Top : new setType(value)));
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
super((value.size > limit ? lattice_1.Top : new setType(value)));
|
|
31
|
+
}
|
|
19
32
|
}
|
|
20
33
|
else {
|
|
21
|
-
|
|
34
|
+
super(value);
|
|
22
35
|
}
|
|
23
36
|
this.limit = limit;
|
|
37
|
+
this.setType = setType;
|
|
24
38
|
}
|
|
25
|
-
|
|
26
|
-
return this.
|
|
39
|
+
create(value) {
|
|
40
|
+
return new BoundedSetDomain(value, this.limit, this.setType);
|
|
27
41
|
}
|
|
28
|
-
static top(limit) {
|
|
29
|
-
return new BoundedSetDomain(lattice_1.Top, limit);
|
|
42
|
+
static top(limit, setType) {
|
|
43
|
+
return new BoundedSetDomain(lattice_1.Top, limit, setType);
|
|
30
44
|
}
|
|
31
|
-
static bottom(limit) {
|
|
32
|
-
return new BoundedSetDomain(
|
|
45
|
+
static bottom(limit, setType) {
|
|
46
|
+
return new BoundedSetDomain(exports.BoundedSetBottom, limit, setType);
|
|
33
47
|
}
|
|
34
|
-
static abstract(concrete, limit) {
|
|
35
|
-
return new BoundedSetDomain(concrete, limit);
|
|
48
|
+
static abstract(concrete, limit, setType) {
|
|
49
|
+
return new BoundedSetDomain(concrete, limit, setType);
|
|
36
50
|
}
|
|
37
51
|
top() {
|
|
38
|
-
return BoundedSetDomain.top(this.limit);
|
|
52
|
+
return BoundedSetDomain.top(this.limit, this.setType);
|
|
39
53
|
}
|
|
40
54
|
bottom() {
|
|
41
|
-
return BoundedSetDomain.bottom(this.limit);
|
|
55
|
+
return BoundedSetDomain.bottom(this.limit, this.setType);
|
|
42
56
|
}
|
|
43
57
|
equals(other) {
|
|
44
58
|
return this.value === other.value || (this.isValue() && other.isValue() && (0, set_1.setEquals)(this.value, other.value));
|
|
@@ -46,59 +60,68 @@ class BoundedSetDomain {
|
|
|
46
60
|
leq(other) {
|
|
47
61
|
return other.value === lattice_1.Top || (this.isValue() && this.value.isSubsetOf(other.value));
|
|
48
62
|
}
|
|
49
|
-
join(
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const join = result.value.union(other.value);
|
|
57
|
-
result._value = join.size > this.limit ? lattice_1.Top : join;
|
|
58
|
-
}
|
|
63
|
+
join(other) {
|
|
64
|
+
const otherValue = other instanceof BoundedSetDomain ? other.value : Array.isArray(other) ? new this.setType(other) : other;
|
|
65
|
+
if (this.value === lattice_1.Top || otherValue === lattice_1.Top) {
|
|
66
|
+
return this.top();
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
return this.create(this.value.union(otherValue));
|
|
59
70
|
}
|
|
60
|
-
return result;
|
|
61
71
|
}
|
|
62
|
-
meet(
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
result._value = result.value.intersection(other.value);
|
|
73
|
-
}
|
|
72
|
+
meet(other) {
|
|
73
|
+
const otherValue = other instanceof BoundedSetDomain ? other.value : Array.isArray(other) ? new this.setType(other) : other;
|
|
74
|
+
if (this.value === lattice_1.Top) {
|
|
75
|
+
return this.create(otherValue);
|
|
76
|
+
}
|
|
77
|
+
else if (otherValue === lattice_1.Top) {
|
|
78
|
+
return this.create(this.value);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
return this.create(this.value.intersection(otherValue));
|
|
74
82
|
}
|
|
75
|
-
return result;
|
|
76
83
|
}
|
|
77
84
|
/**
|
|
78
85
|
* Subtracts another abstract value from the current abstract value by removing all elements of the other abstract value from the current abstract value.
|
|
79
86
|
*/
|
|
80
87
|
subtract(other) {
|
|
88
|
+
const otherValue = other instanceof BoundedSetDomain ? other.value : Array.isArray(other) ? new this.setType(other) : other;
|
|
81
89
|
if (this.value === lattice_1.Top) {
|
|
82
90
|
return this.top();
|
|
83
91
|
}
|
|
84
|
-
else if (
|
|
85
|
-
return
|
|
92
|
+
else if (otherValue === lattice_1.Top) {
|
|
93
|
+
return this.create(this.value);
|
|
86
94
|
}
|
|
87
95
|
else {
|
|
88
|
-
return
|
|
96
|
+
return this.create(this.value.difference(otherValue));
|
|
89
97
|
}
|
|
90
98
|
}
|
|
91
99
|
widen(other) {
|
|
92
|
-
return other.leq(this) ?
|
|
100
|
+
return other.leq(this) ? this.create(this.value) : this.top();
|
|
93
101
|
}
|
|
94
102
|
narrow(other) {
|
|
95
|
-
return this.isTop() ? other : this;
|
|
103
|
+
return this.isTop() ? this.create(other.value) : this.create(this.value);
|
|
96
104
|
}
|
|
97
|
-
concretize(limit
|
|
105
|
+
concretize(limit) {
|
|
98
106
|
return this.value === lattice_1.Top || this.value.size > limit ? lattice_1.Top : this.value;
|
|
99
107
|
}
|
|
100
108
|
abstract(concrete) {
|
|
101
|
-
return BoundedSetDomain.abstract(concrete, this.limit);
|
|
109
|
+
return BoundedSetDomain.abstract(concrete, this.limit, this.setType);
|
|
110
|
+
}
|
|
111
|
+
satisfies(value) {
|
|
112
|
+
if (this.isValue() && this.value.has(value)) {
|
|
113
|
+
return this.value.size === 1 ? logic_1.Ternary.Always : logic_1.Ternary.Maybe;
|
|
114
|
+
}
|
|
115
|
+
else if (this.isTop()) {
|
|
116
|
+
return logic_1.Ternary.Maybe;
|
|
117
|
+
}
|
|
118
|
+
return logic_1.Ternary.Never;
|
|
119
|
+
}
|
|
120
|
+
toJson() {
|
|
121
|
+
if (this.value === lattice_1.Top) {
|
|
122
|
+
return this.value.description;
|
|
123
|
+
}
|
|
124
|
+
return this.value.values().toArray();
|
|
102
125
|
}
|
|
103
126
|
toString() {
|
|
104
127
|
if (this.value === lattice_1.Top) {
|
|
@@ -1,61 +1,69 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Ternary } from '../../util/logic';
|
|
2
|
+
import { AbstractDomain } from './abstract-domain';
|
|
2
3
|
import { Bottom, Top } from './lattice';
|
|
4
|
+
import { type SatisfiableDomain, NumericalComparator } from './satisfiable-domain';
|
|
5
|
+
/** The Top element of the interval domain as interval [-∞, +∞] */
|
|
6
|
+
export declare const IntervalTop: IntervalValue;
|
|
3
7
|
/** The type of the actual values of the interval domain as tuple of the lower and upper bound */
|
|
4
|
-
|
|
5
|
-
/** The type of the Top element of the interval domain as interval [-∞, +∞]
|
|
6
|
-
|
|
8
|
+
type IntervalValue = readonly [lower: number, upper: number];
|
|
9
|
+
/** The type of the Top element of the interval domain as interval [-∞, +∞] */
|
|
10
|
+
type IntervalTop = typeof IntervalTop;
|
|
7
11
|
/** The type of the Bottom element of the interval domain as {@link Bottom} symbol */
|
|
8
|
-
|
|
12
|
+
type IntervalBottom = typeof Bottom;
|
|
9
13
|
/** The type of the abstract values of the interval domain that are Top, Bottom, or actual values */
|
|
10
|
-
|
|
14
|
+
type IntervalLift = IntervalValue | IntervalBottom;
|
|
11
15
|
/**
|
|
12
16
|
* The interval abstract domain as intervals with possibly infinite bounds representing possible numeric values.
|
|
13
17
|
* The Bottom element is defined as {@link Bottom} symbol and the Top element is defined as the interval [-∞, +∞].
|
|
14
18
|
* @template Value - Type of the constraint in the abstract domain (Top, Bottom, or an actual value)
|
|
15
19
|
*/
|
|
16
|
-
export declare class IntervalDomain<Value extends IntervalLift = IntervalLift>
|
|
17
|
-
private _value;
|
|
20
|
+
export declare class IntervalDomain<Value extends IntervalLift = IntervalLift> extends AbstractDomain<number, IntervalValue, IntervalTop, IntervalBottom, Value> implements SatisfiableDomain<number> {
|
|
18
21
|
constructor(value: Value);
|
|
19
|
-
|
|
22
|
+
create(value: IntervalLift): this;
|
|
20
23
|
static top(): IntervalDomain<IntervalTop>;
|
|
21
24
|
static bottom(): IntervalDomain<IntervalBottom>;
|
|
22
25
|
static abstract(concrete: ReadonlySet<number> | typeof Top): IntervalDomain;
|
|
23
|
-
top(): IntervalDomain<IntervalTop>;
|
|
24
|
-
bottom(): IntervalDomain<IntervalBottom>;
|
|
25
|
-
equals(other:
|
|
26
|
-
leq(other:
|
|
27
|
-
join(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
top(): this & IntervalDomain<IntervalTop>;
|
|
27
|
+
bottom(): this & IntervalDomain<IntervalBottom>;
|
|
28
|
+
equals(other: this): boolean;
|
|
29
|
+
leq(other: this): boolean;
|
|
30
|
+
join(other: this): this;
|
|
31
|
+
join(other: IntervalLift): this;
|
|
32
|
+
meet(other: this): this;
|
|
33
|
+
meet(other: IntervalLift): this;
|
|
34
|
+
widen(other: this): this;
|
|
35
|
+
narrow(other: this): this;
|
|
36
|
+
concretize(limit: number): ReadonlySet<number> | typeof Top;
|
|
37
|
+
abstract(concrete: ReadonlySet<number> | typeof Top): this;
|
|
38
|
+
satisfies(value: number, comparator?: NumericalComparator): Ternary;
|
|
33
39
|
/**
|
|
34
40
|
* Adds another abstract value to the current abstract value by adding the two lower and upper bounds, respectively.
|
|
35
41
|
*/
|
|
36
|
-
add(other:
|
|
42
|
+
add(other: this | IntervalLift): this;
|
|
37
43
|
/**
|
|
38
44
|
* Subtracts another abstract value from the current abstract value by subtracting the two lower and upper bounds from each other, respectively.
|
|
39
45
|
*/
|
|
40
|
-
subtract(other:
|
|
46
|
+
subtract(other: this | IntervalLift): this;
|
|
41
47
|
/**
|
|
42
48
|
* Creates the minimum between the current abstract value and another abstract value by creating the minimum of the two lower and upper bounds, respectively.
|
|
43
49
|
*/
|
|
44
|
-
min(other:
|
|
50
|
+
min(other: this | IntervalLift): this;
|
|
45
51
|
/**
|
|
46
52
|
* Creates the maximum between the current abstract value and another abstract value by creating the maximum of the two lower and upper bounds, respectively.
|
|
47
53
|
*/
|
|
48
|
-
max(other:
|
|
54
|
+
max(other: this | IntervalLift): this;
|
|
49
55
|
/**
|
|
50
56
|
* Extends the lower bound of the current abstract value down to -∞.
|
|
51
57
|
*/
|
|
52
|
-
extendDown():
|
|
58
|
+
extendDown(): this;
|
|
53
59
|
/**
|
|
54
60
|
* Extends the upper bound of the current abstract value up to +∞.
|
|
55
61
|
*/
|
|
56
|
-
extendUp():
|
|
62
|
+
extendUp(): this;
|
|
63
|
+
toJson(): unknown;
|
|
57
64
|
toString(): string;
|
|
58
65
|
isTop(): this is IntervalDomain<IntervalTop>;
|
|
59
66
|
isBottom(): this is IntervalDomain<IntervalBottom>;
|
|
60
67
|
isValue(): this is IntervalDomain<IntervalValue>;
|
|
61
68
|
}
|
|
69
|
+
export {};
|