@eagleoutice/flowr 2.6.0 → 2.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +142 -45
- package/abstract-interpretation/data-frame/absint-info.d.ts +1 -1
- package/abstract-interpretation/data-frame/absint-visitor.d.ts +3 -4
- package/abstract-interpretation/data-frame/absint-visitor.js +16 -11
- package/abstract-interpretation/data-frame/dataframe-domain.d.ts +18 -12
- package/abstract-interpretation/data-frame/dataframe-domain.js +25 -13
- package/abstract-interpretation/data-frame/mappers/access-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/access-mapper.js +0 -1
- package/abstract-interpretation/data-frame/mappers/arguments.d.ts +1 -10
- package/abstract-interpretation/data-frame/mappers/arguments.js +0 -7
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/assignment-mapper.js +0 -1
- package/abstract-interpretation/data-frame/mappers/function-mapper.d.ts +4 -5
- package/abstract-interpretation/data-frame/mappers/function-mapper.js +3 -4
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.d.ts +0 -1
- package/abstract-interpretation/data-frame/mappers/replacement-mapper.js +0 -1
- package/abstract-interpretation/data-frame/resolve-args.d.ts +1 -1
- package/abstract-interpretation/data-frame/semantics.d.ts +3 -4
- package/abstract-interpretation/data-frame/semantics.js +171 -162
- package/abstract-interpretation/data-frame/shape-inference.d.ts +1 -4
- package/abstract-interpretation/data-frame/shape-inference.js +7 -9
- package/abstract-interpretation/domains/abstract-domain.d.ts +59 -18
- package/abstract-interpretation/domains/abstract-domain.js +74 -1
- package/abstract-interpretation/domains/bounded-set-domain.d.ts +37 -24
- package/abstract-interpretation/domains/bounded-set-domain.js +70 -47
- package/abstract-interpretation/domains/interval-domain.d.ts +33 -25
- package/abstract-interpretation/domains/interval-domain.js +109 -50
- package/abstract-interpretation/domains/lattice.d.ts +19 -11
- package/abstract-interpretation/domains/mapped-abstract-domain.d.ts +34 -0
- package/abstract-interpretation/domains/mapped-abstract-domain.js +189 -0
- package/abstract-interpretation/domains/positive-interval-domain.d.ts +16 -12
- package/abstract-interpretation/domains/positive-interval-domain.js +20 -11
- package/abstract-interpretation/domains/product-domain.d.ts +18 -23
- package/abstract-interpretation/domains/product-domain.js +11 -19
- package/abstract-interpretation/domains/satisfiable-domain.d.ts +29 -0
- package/abstract-interpretation/domains/satisfiable-domain.js +24 -0
- package/abstract-interpretation/domains/set-upper-bound-domain.d.ts +54 -0
- package/abstract-interpretation/domains/set-upper-bound-domain.js +197 -0
- package/abstract-interpretation/domains/singleton-domain.d.ts +24 -19
- package/abstract-interpretation/domains/singleton-domain.js +52 -37
- package/abstract-interpretation/domains/state-abstract-domain.d.ts +8 -24
- package/abstract-interpretation/domains/state-abstract-domain.js +2 -167
- package/abstract-interpretation/normalized-ast-fold.d.ts +1 -7
- package/abstract-interpretation/normalized-ast-fold.js +0 -5
- package/benchmark/slicer.d.ts +3 -7
- package/benchmark/slicer.js +14 -19
- package/benchmark/stats/print.d.ts +6 -0
- package/benchmark/stats/print.js +6 -0
- package/benchmark/stats/size-of.d.ts +0 -1
- package/benchmark/stats/size-of.js +0 -1
- package/benchmark/stats/stats.d.ts +2 -2
- package/benchmark/stopwatch.d.ts +11 -13
- package/benchmark/stopwatch.js +11 -13
- package/benchmark/summarizer/first-phase/input.d.ts +6 -0
- package/benchmark/summarizer/first-phase/input.js +6 -0
- package/benchmark/summarizer/first-phase/process.d.ts +13 -1
- package/benchmark/summarizer/first-phase/process.js +12 -0
- package/benchmark/summarizer/second-phase/graph.d.ts +3 -0
- package/benchmark/summarizer/second-phase/graph.js +3 -0
- package/benchmark/summarizer/second-phase/process.d.ts +12 -0
- package/benchmark/summarizer/second-phase/process.js +12 -0
- package/benchmark/summarizer/summarizer.d.ts +1 -2
- package/cli/benchmark-app.js +0 -2
- package/cli/common/features.d.ts +7 -1
- package/cli/common/features.js +6 -0
- package/cli/common/script.d.ts +3 -1
- package/cli/common/script.js +3 -1
- package/cli/common/scripts-info.d.ts +3 -1
- package/cli/common/scripts-info.js +3 -0
- package/cli/flowr-main-options.d.ts +3 -0
- package/cli/flowr-main-options.js +3 -0
- package/cli/flowr.js +8 -4
- package/cli/repl/commands/repl-cfg.js +4 -4
- package/cli/repl/commands/repl-commands.d.ts +13 -0
- package/cli/repl/commands/repl-commands.js +15 -4
- package/cli/repl/commands/repl-dataflow.js +4 -4
- package/cli/repl/commands/repl-execute.d.ts +5 -1
- package/cli/repl/commands/repl-execute.js +12 -8
- package/cli/repl/commands/repl-main.d.ts +17 -14
- package/cli/repl/commands/repl-normalize.js +2 -2
- package/cli/repl/commands/repl-parse.js +4 -3
- package/cli/repl/commands/repl-query.js +18 -7
- package/cli/repl/commands/repl-quit.js +1 -1
- package/cli/repl/commands/repl-version.d.ts +1 -16
- package/cli/repl/commands/repl-version.js +2 -19
- package/cli/repl/core.d.ts +32 -14
- package/cli/repl/core.js +38 -35
- package/cli/repl/execute.d.ts +0 -2
- package/cli/repl/execute.js +0 -2
- package/cli/repl/parser/slice-query-parser.d.ts +14 -0
- package/cli/repl/parser/slice-query-parser.js +34 -0
- package/cli/repl/print-version.d.ts +6 -0
- package/cli/repl/print-version.js +8 -2
- package/cli/repl/server/compact.d.ts +8 -0
- package/cli/repl/server/compact.js +8 -0
- package/cli/repl/server/connection.d.ts +4 -3
- package/cli/repl/server/connection.js +9 -33
- package/cli/repl/server/messages/all-messages.d.ts +1 -3
- package/cli/repl/server/messages/all-messages.js +0 -1
- package/cli/repl/server/messages/message-analysis.d.ts +0 -2
- package/cli/repl/server/messages/message-hello.d.ts +1 -1
- package/cli/repl/server/messages/message-query.d.ts +1 -1
- package/cli/repl/server/messages/message-repl.d.ts +0 -1
- package/cli/repl/server/send.d.ts +6 -0
- package/cli/repl/server/send.js +6 -0
- package/cli/repl/server/server.d.ts +1 -1
- package/cli/repl/server/server.js +2 -2
- package/cli/repl/server/validate.d.ts +10 -1
- package/cli/repl/server/validate.js +9 -0
- package/cli/run-script.d.ts +1 -2
- package/cli/run-script.js +0 -1
- package/cli/script-core/statistics-core.d.ts +3 -0
- package/cli/script-core/statistics-core.js +3 -0
- package/cli/script-core/statistics-helper-core.d.ts +4 -1
- package/cli/script-core/statistics-helper-core.js +3 -0
- package/cli/script-core/summarizer-core.d.ts +3 -0
- package/cli/script-core/summarizer-core.js +3 -0
- package/cli/summarizer-app.d.ts +2 -3
- package/cli/summarizer-app.js +2 -3
- package/config.d.ts +17 -3
- package/config.js +15 -0
- package/control-flow/basic-cfg-guided-visitor.d.ts +1 -2
- package/control-flow/basic-cfg-guided-visitor.js +0 -1
- package/control-flow/cfg-to-basic-blocks.d.ts +1 -1
- package/control-flow/control-flow-graph.d.ts +20 -12
- package/control-flow/control-flow-graph.js +16 -4
- package/control-flow/dfg-cfg-guided-visitor.d.ts +2 -3
- package/control-flow/diff-cfg.d.ts +3 -5
- package/control-flow/diff-cfg.js +0 -1
- package/control-flow/extract-cfg.d.ts +3 -6
- package/control-flow/extract-cfg.js +0 -3
- package/control-flow/happens-before.d.ts +1 -1
- package/control-flow/semantic-cfg-guided-visitor.d.ts +2 -31
- package/control-flow/semantic-cfg-guided-visitor.js +0 -28
- package/control-flow/simple-visitor.d.ts +1 -3
- package/control-flow/simple-visitor.js +0 -2
- package/control-flow/syntax-cfg-guided-visitor.d.ts +1 -2
- package/control-flow/useless-loop.d.ts +0 -3
- package/control-flow/useless-loop.js +2 -5
- package/core/pipeline-executor.d.ts +8 -16
- package/core/pipeline-executor.js +9 -18
- package/core/print/dataflow-printer.d.ts +19 -0
- package/core/print/dataflow-printer.js +19 -0
- package/core/print/normalize-printer.d.ts +21 -1
- package/core/print/normalize-printer.js +20 -0
- package/core/print/parse-printer.d.ts +6 -1
- package/core/print/parse-printer.js +5 -0
- package/core/print/print.d.ts +0 -1
- package/core/print/print.js +0 -1
- package/core/print/slice-diff-ansi.d.ts +3 -0
- package/core/print/slice-diff-ansi.js +3 -0
- package/core/steps/all/core/00-parse.d.ts +1 -1
- package/core/steps/all/core/01-parse-tree-sitter.d.ts +1 -11
- package/core/steps/all/core/10-normalize.d.ts +3 -0
- package/core/steps/all/core/10-normalize.js +3 -0
- package/core/steps/all/core/11-normalize-tree-sitter.d.ts +4 -3
- package/core/steps/all/core/20-dataflow.d.ts +3 -1
- package/core/steps/pipeline/create-pipeline.d.ts +1 -1
- package/core/steps/pipeline/default-pipelines.d.ts +29 -13
- package/core/steps/pipeline/default-pipelines.js +0 -4
- package/core/steps/pipeline/pipeline.d.ts +1 -8
- package/core/steps/pipeline/pipeline.js +1 -3
- package/core/steps/pipeline-step.d.ts +0 -1
- package/core/steps/pipeline-step.js +0 -1
- package/dataflow/cluster.d.ts +3 -0
- package/dataflow/cluster.js +3 -0
- package/dataflow/environments/append.d.ts +1 -1
- package/dataflow/environments/built-in-config.d.ts +1 -5
- package/dataflow/environments/built-in-config.js +0 -1
- package/dataflow/environments/built-in.d.ts +10 -5
- package/dataflow/environments/built-in.js +6 -1
- package/dataflow/environments/clone.d.ts +1 -1
- package/dataflow/environments/default-builtin-config.d.ts +3 -0
- package/dataflow/environments/default-builtin-config.js +12 -1
- package/dataflow/environments/diff.d.ts +11 -2
- package/dataflow/environments/diff.js +9 -0
- package/dataflow/environments/environment.d.ts +3 -3
- package/dataflow/environments/environment.js +8 -6
- package/dataflow/environments/identifier.d.ts +0 -4
- package/dataflow/environments/identifier.js +0 -1
- package/dataflow/environments/overwrite.d.ts +4 -1
- package/dataflow/environments/overwrite.js +3 -0
- package/dataflow/environments/resolve-by-name.d.ts +4 -4
- package/dataflow/environments/resolve-by-name.js +3 -2
- package/dataflow/environments/scoping.d.ts +4 -1
- package/dataflow/environments/scoping.js +3 -0
- package/dataflow/eval/resolve/alias-tracking.d.ts +4 -10
- package/dataflow/eval/resolve/alias-tracking.js +13 -14
- package/dataflow/eval/resolve/resolve-argument.d.ts +1 -1
- package/dataflow/eval/resolve/resolve.d.ts +1 -7
- package/dataflow/eval/resolve/resolve.js +3 -5
- package/dataflow/eval/values/general.d.ts +1 -3
- package/dataflow/eval/values/general.js +0 -1
- package/dataflow/eval/values/intervals/interval-constants.d.ts +7 -1
- package/dataflow/eval/values/intervals/interval-constants.js +6 -0
- package/dataflow/eval/values/logical/logical-constants.d.ts +4 -1
- package/dataflow/eval/values/logical/logical-constants.js +3 -0
- package/dataflow/eval/values/r-value.d.ts +16 -1
- package/dataflow/eval/values/r-value.js +14 -0
- package/dataflow/eval/values/scalar/scalar-consatnts.d.ts +7 -1
- package/dataflow/eval/values/scalar/scalar-consatnts.js +6 -0
- package/dataflow/eval/values/sets/set-constants.d.ts +7 -2
- package/dataflow/eval/values/sets/set-constants.js +6 -0
- package/dataflow/eval/values/string/string-constants.d.ts +10 -1
- package/dataflow/eval/values/string/string-constants.js +9 -0
- package/dataflow/eval/values/vectors/vector-constants.d.ts +1 -1
- package/dataflow/extractor.d.ts +5 -2
- package/dataflow/extractor.js +7 -5
- package/dataflow/fn/higher-order-function.d.ts +9 -0
- package/dataflow/fn/higher-order-function.js +75 -0
- package/dataflow/graph/dataflowgraph-builder.d.ts +20 -38
- package/dataflow/graph/dataflowgraph-builder.js +6 -23
- package/dataflow/graph/diff-dataflow-graph.d.ts +16 -6
- package/dataflow/graph/diff-dataflow-graph.js +12 -1
- package/dataflow/graph/edge.d.ts +9 -0
- package/dataflow/graph/edge.js +9 -0
- package/dataflow/graph/graph.d.ts +6 -19
- package/dataflow/graph/graph.js +4 -15
- package/dataflow/graph/invert-dfg.d.ts +3 -0
- package/dataflow/graph/invert-dfg.js +3 -0
- package/dataflow/graph/quads.d.ts +1 -1
- package/dataflow/graph/unknown-replacement.d.ts +6 -0
- package/dataflow/graph/unknown-replacement.js +6 -0
- package/dataflow/graph/unknown-side-effect.d.ts +8 -0
- package/dataflow/graph/unknown-side-effect.js +8 -0
- package/dataflow/graph/vertex.d.ts +9 -9
- package/dataflow/graph/vertex.js +9 -1
- package/dataflow/info.d.ts +9 -10
- package/dataflow/info.js +6 -1
- package/dataflow/internal/linker.d.ts +25 -9
- package/dataflow/internal/linker.js +23 -7
- package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
- package/dataflow/internal/process/functions/call/argument/make-argument.js +6 -0
- package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-access.js +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-apply.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +2 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-eval.d.ts +6 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-eval.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +10 -4
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +6 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +4 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-list.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +6 -3
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +3 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-rm.d.ts +4 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-rm.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +23 -6
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +20 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.d.ts +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-special-bin-op.js +3 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-vector.d.ts +1 -1
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +5 -2
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +3 -0
- package/dataflow/internal/process/functions/call/common.d.ts +11 -5
- package/dataflow/internal/process/functions/call/common.js +6 -0
- package/dataflow/internal/process/functions/call/default-call-handling.d.ts +3 -0
- package/dataflow/internal/process/functions/call/default-call-handling.js +3 -0
- package/dataflow/internal/process/functions/call/known-call-handling.d.ts +12 -5
- package/dataflow/internal/process/functions/call/known-call-handling.js +7 -0
- package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -1
- package/dataflow/internal/process/functions/call/named-call-handling.js +6 -0
- package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +4 -1
- package/dataflow/internal/process/functions/call/unnamed-call-handling.js +3 -0
- package/dataflow/internal/process/functions/process-argument.d.ts +8 -2
- package/dataflow/internal/process/functions/process-argument.js +6 -0
- package/dataflow/internal/process/functions/process-parameter.d.ts +5 -2
- package/dataflow/internal/process/functions/process-parameter.js +3 -0
- package/dataflow/internal/process/process-symbol.d.ts +3 -0
- package/dataflow/internal/process/process-symbol.js +3 -0
- package/dataflow/internal/process/process-uninteresting-leaf.d.ts +3 -0
- package/dataflow/internal/process/process-uninteresting-leaf.js +3 -0
- package/dataflow/internal/process/process-value.d.ts +3 -0
- package/dataflow/internal/process/process-value.js +3 -0
- package/dataflow/origin/dfg-get-origin.d.ts +0 -2
- package/dataflow/origin/dfg-get-symbol-refs.d.ts +5 -7
- package/dataflow/origin/dfg-get-symbol-refs.js +6 -8
- package/dataflow/processor.d.ts +0 -1
- package/dataflow/processor.js +0 -1
- package/documentation/data/dfg/doc-data-dfg-util.d.ts +6 -0
- package/documentation/data/dfg/doc-data-dfg-util.js +6 -0
- package/documentation/data/faq/faqs.d.ts +5 -0
- package/documentation/data/faq/faqs.js +78 -0
- package/documentation/data/faq/wiki-faq-store.d.ts +18 -0
- package/documentation/data/faq/wiki-faq-store.js +75 -0
- package/documentation/data/server/doc-data-server-messages.d.ts +3 -0
- package/documentation/data/server/doc-data-server-messages.js +4 -63
- package/documentation/doc-util/doc-auto-gen.d.ts +6 -0
- package/documentation/doc-util/doc-auto-gen.js +6 -0
- package/documentation/doc-util/doc-benchmarks.d.ts +12 -0
- package/documentation/doc-util/doc-benchmarks.js +12 -0
- package/documentation/doc-util/doc-cfg.d.ts +7 -1
- package/documentation/doc-util/doc-cfg.js +9 -0
- package/documentation/doc-util/doc-cli-option.d.ts +9 -0
- package/documentation/doc-util/doc-cli-option.js +9 -0
- package/documentation/doc-util/doc-code.d.ts +24 -0
- package/documentation/doc-util/doc-code.js +24 -0
- package/documentation/doc-util/doc-dfg.d.ts +7 -1
- package/documentation/doc-util/doc-dfg.js +9 -0
- package/documentation/doc-util/doc-env.d.ts +3 -0
- package/documentation/doc-util/doc-env.js +3 -0
- package/documentation/doc-util/doc-escape.d.ts +0 -1
- package/documentation/doc-util/doc-escape.js +0 -1
- package/documentation/doc-util/doc-files.d.ts +11 -0
- package/documentation/doc-util/doc-files.js +15 -4
- package/documentation/doc-util/doc-general.d.ts +6 -0
- package/documentation/doc-util/doc-general.js +6 -0
- package/documentation/doc-util/doc-normalized-ast.d.ts +7 -1
- package/documentation/doc-util/doc-normalized-ast.js +6 -0
- package/documentation/doc-util/doc-query.d.ts +15 -0
- package/documentation/doc-util/doc-query.js +17 -2
- package/documentation/doc-util/doc-repl.d.ts +6 -0
- package/documentation/doc-util/doc-repl.js +11 -2
- package/documentation/doc-util/doc-search.d.ts +15 -0
- package/documentation/doc-util/doc-search.js +17 -2
- package/documentation/doc-util/doc-server-message.d.ts +13 -1
- package/documentation/doc-util/doc-server-message.js +13 -1
- package/documentation/doc-util/doc-structure.d.ts +9 -0
- package/documentation/doc-util/doc-structure.js +10 -1
- package/documentation/doc-util/doc-types.d.ts +42 -0
- package/documentation/doc-util/doc-types.js +42 -0
- package/documentation/print-analyzer-wiki.js +4 -0
- package/documentation/print-core-wiki.d.ts +3 -0
- package/documentation/print-core-wiki.js +5 -2
- package/documentation/print-dataflow-graph-wiki.js +7 -7
- package/documentation/print-faq-wiki.js +3 -75
- package/documentation/print-interface-wiki.js +1 -1
- package/documentation/print-onboarding-wiki.js +1 -1
- package/documentation/print-query-wiki.js +24 -34
- package/documentation/print-readme.js +106 -1
- package/engines.d.ts +1 -1
- package/linter/linter-executor.d.ts +6 -3
- package/linter/linter-executor.js +3 -0
- package/linter/linter-format.d.ts +8 -0
- package/linter/linter-format.js +8 -0
- package/linter/rules/absolute-path.d.ts +3 -4
- package/linter/rules/dataframe-access-validation.d.ts +3 -4
- package/linter/rules/dataframe-access-validation.js +9 -11
- package/linter/rules/dead-code.d.ts +1 -1
- package/linter/rules/deprecated-functions.d.ts +1 -1
- package/linter/rules/file-path-validity.d.ts +1 -2
- package/linter/rules/function-finder-util.d.ts +1 -2
- package/linter/rules/naming-convention.d.ts +13 -2
- package/linter/rules/naming-convention.js +13 -1
- package/linter/rules/network-functions.d.ts +1 -1
- package/linter/rules/seeded-randomness.d.ts +1 -2
- package/linter/rules/unused-definition.d.ts +2 -3
- package/linter/rules/useless-loop.d.ts +1 -2
- package/package.json +2 -2
- package/project/cache/flowr-analyzer-cache.d.ts +8 -14
- package/project/cache/flowr-analyzer-cache.js +21 -19
- package/project/cfg-kind.d.ts +17 -0
- package/project/cfg-kind.js +22 -0
- package/project/context/abstract-flowr-analyzer-context.d.ts +4 -0
- package/project/context/flowr-analyzer-context.d.ts +9 -6
- package/project/context/flowr-analyzer-context.js +11 -0
- package/project/context/flowr-analyzer-dependencies-context.d.ts +1 -1
- package/project/context/flowr-analyzer-dependencies-context.js +4 -0
- package/project/context/flowr-analyzer-files-context.d.ts +3 -4
- package/project/context/flowr-analyzer-files-context.js +4 -0
- package/project/context/flowr-analyzer-loading-order-context.d.ts +1 -0
- package/project/context/flowr-analyzer-loading-order-context.js +6 -0
- package/project/context/flowr-file.d.ts +0 -1
- package/project/flowr-analyzer-builder.d.ts +1 -3
- package/project/flowr-analyzer-builder.js +5 -6
- package/project/flowr-analyzer.d.ts +42 -32
- package/project/flowr-analyzer.js +14 -8
- package/project/plugins/file-plugins/flowr-analyzer-description-file-plugin.d.ts +1 -1
- package/project/plugins/file-plugins/flowr-description-file.d.ts +1 -3
- package/project/plugins/file-plugins/flowr-description-file.js +0 -1
- package/project/plugins/project-discovery/flowr-analyzer-project-discovery-plugin.d.ts +1 -1
- package/queries/base-query-format.d.ts +2 -2
- package/queries/catalog/call-context-query/call-context-query-executor.d.ts +3 -0
- package/queries/catalog/call-context-query/call-context-query-executor.js +5 -1
- package/queries/catalog/call-context-query/call-context-query-format.d.ts +3 -3
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.d.ts +11 -2
- package/queries/catalog/call-context-query/identify-link-to-last-call-relation.js +9 -0
- package/queries/catalog/cluster-query/cluster-query-executor.d.ts +3 -0
- package/queries/catalog/cluster-query/cluster-query-executor.js +3 -0
- package/queries/catalog/cluster-query/cluster-query-format.d.ts +1 -1
- package/queries/catalog/config-query/config-query-executor.d.ts +3 -0
- package/queries/catalog/config-query/config-query-executor.js +3 -0
- package/queries/catalog/config-query/config-query-format.d.ts +6 -3
- package/queries/catalog/config-query/config-query-format.js +13 -16
- package/queries/catalog/control-flow-query/control-flow-query-executor.d.ts +3 -0
- package/queries/catalog/control-flow-query/control-flow-query-executor.js +5 -1
- package/queries/catalog/control-flow-query/control-flow-query-format.d.ts +3 -3
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.d.ts +3 -0
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-executor.js +3 -0
- package/queries/catalog/dataflow-lens-query/dataflow-lens-query-format.d.ts +1 -1
- package/queries/catalog/dataflow-query/dataflow-query-executor.d.ts +3 -0
- package/queries/catalog/dataflow-query/dataflow-query-executor.js +3 -0
- package/queries/catalog/dataflow-query/dataflow-query-format.d.ts +1 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.d.ts +4 -1
- package/queries/catalog/dependencies-query/dependencies-query-executor.js +7 -4
- package/queries/catalog/dependencies-query/dependencies-query-format.d.ts +4 -1
- package/queries/catalog/dependencies-query/dependencies-query-format.js +4 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.d.ts +4 -1
- package/queries/catalog/df-shape-query/df-shape-query-executor.js +8 -4
- package/queries/catalog/df-shape-query/df-shape-query-format.d.ts +10 -3
- package/queries/catalog/df-shape-query/df-shape-query-format.js +24 -5
- package/queries/catalog/happens-before-query/happens-before-query-executor.d.ts +3 -0
- package/queries/catalog/happens-before-query/happens-before-query-executor.js +3 -0
- package/queries/catalog/happens-before-query/happens-before-query-format.d.ts +1 -1
- package/queries/catalog/id-map-query/id-map-query-executor.d.ts +3 -0
- package/queries/catalog/id-map-query/id-map-query-executor.js +3 -0
- package/queries/catalog/id-map-query/id-map-query-format.d.ts +1 -1
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.d.ts +6 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-executor.js +48 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.d.ts +22 -0
- package/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.js +32 -0
- package/queries/catalog/linter-query/linter-query-executor.d.ts +4 -0
- package/queries/catalog/linter-query/linter-query-executor.js +4 -0
- package/queries/catalog/linter-query/linter-query-format.d.ts +12 -3
- package/queries/catalog/linter-query/linter-query-format.js +67 -0
- package/queries/catalog/location-map-query/location-map-query-executor.d.ts +4 -0
- package/queries/catalog/location-map-query/location-map-query-executor.js +5 -1
- package/queries/catalog/location-map-query/location-map-query-format.d.ts +7 -1
- package/queries/catalog/location-map-query/location-map-query-format.js +12 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.d.ts +3 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-executor.js +3 -0
- package/queries/catalog/normalized-ast-query/normalized-ast-query-format.d.ts +1 -1
- package/queries/catalog/origin-query/origin-query-executor.d.ts +7 -1
- package/queries/catalog/origin-query/origin-query-executor.js +6 -0
- package/queries/catalog/origin-query/origin-query-format.d.ts +7 -1
- package/queries/catalog/origin-query/origin-query-format.js +17 -1
- package/queries/catalog/project-query/project-query-executor.d.ts +3 -0
- package/queries/catalog/project-query/project-query-executor.js +3 -0
- package/queries/catalog/project-query/project-query-format.d.ts +1 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.d.ts +6 -0
- package/queries/catalog/resolve-value-query/resolve-value-query-executor.js +6 -0
- package/queries/catalog/resolve-value-query/resolve-value-query-format.d.ts +7 -1
- package/queries/catalog/resolve-value-query/resolve-value-query-format.js +19 -1
- package/queries/catalog/search-query/search-query-executor.d.ts +3 -0
- package/queries/catalog/search-query/search-query-executor.js +3 -0
- package/queries/catalog/search-query/search-query-format.d.ts +1 -1
- package/queries/catalog/static-slice-query/static-slice-query-executor.d.ts +9 -0
- package/queries/catalog/static-slice-query/static-slice-query-executor.js +9 -0
- package/queries/catalog/static-slice-query/static-slice-query-format.d.ts +7 -1
- package/queries/catalog/static-slice-query/static-slice-query-format.js +17 -0
- package/queries/query-print.d.ts +20 -4
- package/queries/query-print.js +18 -2
- package/queries/query.d.ts +91 -53
- package/queries/query.js +37 -23
- package/queries/virtual-query/virtual-queries.d.ts +1 -2
- package/r-bridge/data/get.d.ts +6 -0
- package/r-bridge/data/get.js +6 -0
- package/r-bridge/lang-4.x/ast/model/collect.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/collect.js +0 -1
- package/r-bridge/lang-4.x/ast/model/model.d.ts +8 -11
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.js +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +3 -0
- package/r-bridge/lang-4.x/ast/model/operators.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +6 -7
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +6 -6
- package/r-bridge/lang-4.x/ast/model/processing/fold.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/node-id.js +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +1 -2
- package/r-bridge/lang-4.x/ast/model/processing/visitor.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/processing/visitor.js +0 -1
- package/r-bridge/lang-4.x/ast/model/type.d.ts +4 -5
- package/r-bridge/lang-4.x/ast/model/type.js +4 -5
- package/r-bridge/lang-4.x/ast/model/versions.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/model/versions.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +4 -5
- package/r-bridge/lang-4.x/ast/parser/json/parser.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/control/normalize-if-then.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/expression/normalize-expression.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-argument.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.d.ts +1 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-call.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-definition.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/functions/normalize-parameter.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-break.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-for.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-next.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-repeat.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/loops/normalize-while.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/normalize-access.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-binary.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/operators/normalize-unary.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-comment.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/other/normalize-line-directive.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-delimiter.js +3 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.d.ts +9 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-expressions.js +9 -0
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.d.ts +1 -3
- package/r-bridge/lang-4.x/ast/parser/main/internal/structure/normalize-single-node.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.d.ts +1 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-number.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-string.js +0 -1
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/internal/values/normalize-symbol.js +0 -2
- package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.d.ts +14 -5
- package/r-bridge/lang-4.x/ast/parser/main/normalize-meta.js +13 -6
- package/r-bridge/lang-4.x/convert-values.d.ts +12 -1
- package/r-bridge/lang-4.x/convert-values.js +12 -1
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.d.ts +7 -2
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-executor.js +17 -0
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.d.ts +13 -1
- package/r-bridge/lang-4.x/tree-sitter/tree-sitter-normalize.js +48 -19
- package/r-bridge/parser.d.ts +30 -2
- package/r-bridge/retriever.d.ts +16 -1
- package/r-bridge/retriever.js +15 -0
- package/r-bridge/shell-executor.d.ts +3 -3
- package/r-bridge/shell-executor.js +6 -1
- package/r-bridge/shell.d.ts +24 -23
- package/r-bridge/shell.js +37 -31
- package/reconstruct/auto-select/auto-select-defaults.d.ts +0 -1
- package/reconstruct/auto-select/magic-comments.d.ts +1 -2
- package/reconstruct/auto-select/magic-comments.js +1 -2
- package/reconstruct/reconstruct.d.ts +1 -3
- package/reconstruct/reconstruct.js +0 -2
- package/search/flowr-search-builder.d.ts +12 -5
- package/search/flowr-search-builder.js +7 -2
- package/search/flowr-search-executor.d.ts +3 -3
- package/search/flowr-search-filters.d.ts +14 -1
- package/search/flowr-search-filters.js +13 -0
- package/search/flowr-search-printer.d.ts +6 -0
- package/search/flowr-search-printer.js +6 -0
- package/search/flowr-search-traverse.d.ts +1 -1
- package/search/flowr-search.d.ts +3 -3
- package/search/search-executor/search-enrichers.d.ts +9 -6
- package/search/search-executor/search-enrichers.js +5 -1
- package/search/search-executor/search-generators.d.ts +19 -10
- package/search/search-executor/search-generators.js +49 -2
- package/search/search-executor/search-mappers.d.ts +8 -5
- package/search/search-executor/search-mappers.js +3 -0
- package/search/search-executor/search-transformer.d.ts +19 -16
- package/search/search-executor/search-transformer.js +3 -0
- package/slicing/criterion/collect-all.d.ts +10 -10
- package/slicing/criterion/parse.d.ts +4 -2
- package/slicing/criterion/parse.js +4 -2
- package/slicing/static/fingerprint.d.ts +9 -1
- package/slicing/static/fingerprint.js +8 -0
- package/slicing/static/slice-call.d.ts +2 -2
- package/slicing/static/static-slicer.d.ts +8 -4
- package/slicing/static/static-slicer.js +5 -1
- package/slicing/static/visiting-queue.d.ts +1 -1
- package/statistics/features/common-syntax-probability.d.ts +10 -1
- package/statistics/features/common-syntax-probability.js +9 -0
- package/statistics/features/feature.d.ts +0 -4
- package/statistics/features/feature.js +0 -1
- package/statistics/features/post-processing.d.ts +6 -0
- package/statistics/features/post-processing.js +6 -0
- package/statistics/features/supported/assignments/post-process.d.ts +3 -0
- package/statistics/features/supported/assignments/post-process.js +3 -0
- package/statistics/features/supported/comments/post-process.d.ts +3 -0
- package/statistics/features/supported/comments/post-process.js +3 -0
- package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
- package/statistics/features/supported/control-flow/post-process.js +3 -0
- package/statistics/features/supported/data-access/data-access.d.ts +1 -1
- package/statistics/features/supported/data-access/post-process.d.ts +3 -0
- package/statistics/features/supported/data-access/post-process.js +3 -0
- package/statistics/features/supported/defined-functions/defined-functions.d.ts +1 -1
- package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
- package/statistics/features/supported/expression-list/post-process.js +3 -0
- package/statistics/features/supported/loops/post-process.d.ts +3 -0
- package/statistics/features/supported/loops/post-process.js +3 -0
- package/statistics/features/supported/used-functions/used-functions.d.ts +1 -1
- package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
- package/statistics/features/supported/used-packages/post-process.js +3 -0
- package/statistics/features/supported/values/post-process.d.ts +3 -0
- package/statistics/features/supported/values/post-process.js +3 -0
- package/statistics/features/supported/variables/post-process.d.ts +7 -1
- package/statistics/features/supported/variables/post-process.js +6 -0
- package/statistics/meta-statistics.d.ts +8 -9
- package/statistics/output/file-provider.d.ts +5 -6
- package/statistics/output/file-provider.js +5 -6
- package/statistics/output/print-stats.d.ts +13 -1
- package/statistics/output/print-stats.js +12 -0
- package/statistics/output/statistics-file.d.ts +1 -2
- package/statistics/output/statistics-file.js +0 -1
- package/statistics/statistics.d.ts +3 -4
- package/statistics/statistics.js +1 -2
- package/statistics/summarizer/auto-detect.d.ts +3 -0
- package/statistics/summarizer/auto-detect.js +3 -0
- package/statistics/summarizer/post-process/clusterer.d.ts +3 -4
- package/statistics/summarizer/post-process/clusterer.js +0 -2
- package/statistics/summarizer/post-process/file-based-count.d.ts +0 -1
- package/statistics/summarizer/post-process/file-based-count.js +0 -1
- package/statistics/summarizer/post-process/histogram.d.ts +0 -2
- package/statistics/summarizer/post-process/histogram.js +0 -2
- package/statistics/summarizer/post-process/post-process-output.d.ts +2 -4
- package/statistics/summarizer/post-process/post-process-output.js +0 -3
- package/statistics/summarizer/second-phase/process.d.ts +5 -3
- package/statistics/summarizer/second-phase/process.js +3 -1
- package/statistics/summarizer/summarizer.d.ts +1 -2
- package/util/assert.d.ts +52 -2
- package/util/assert.js +52 -2
- package/util/collections/arrays.d.ts +10 -5
- package/util/collections/arrays.js +10 -5
- package/util/collections/defaultmap.d.ts +11 -11
- package/util/collections/defaultmap.js +11 -11
- package/util/containers.d.ts +2 -7
- package/util/containers.js +0 -5
- package/util/diff-graph.d.ts +0 -1
- package/util/diff-graph.js +0 -1
- package/util/diff.d.ts +3 -1
- package/util/diff.js +3 -1
- package/util/files.d.ts +11 -11
- package/util/files.js +10 -10
- package/util/formats/adapter.d.ts +9 -0
- package/util/formats/adapter.js +9 -0
- package/util/formats/adapters/rmd-adapter.d.ts +10 -1
- package/util/formats/adapters/rmd-adapter.js +10 -1
- package/util/html-hover-over.d.ts +5 -0
- package/util/html-hover-over.js +5 -0
- package/util/json.d.ts +13 -0
- package/util/json.js +13 -0
- package/util/log.d.ts +2 -2
- package/util/log.js +2 -2
- package/util/mermaid/ast.d.ts +3 -0
- package/util/mermaid/ast.js +3 -0
- package/util/mermaid/cfg.d.ts +1 -1
- package/util/mermaid/dfg.d.ts +12 -4
- package/util/mermaid/dfg.js +9 -1
- package/util/mermaid/mermaid.d.ts +6 -1
- package/util/mermaid/mermaid.js +6 -1
- package/util/numbers.d.ts +7 -0
- package/util/numbers.js +7 -0
- package/util/objects.d.ts +0 -2
- package/util/os.d.ts +3 -0
- package/util/os.js +3 -0
- package/util/parallel.d.ts +4 -4
- package/util/parallel.js +4 -4
- package/util/prefix.d.ts +0 -1
- package/util/prefix.js +0 -1
- package/util/quads.d.ts +14 -17
- package/util/quads.js +3 -5
- package/util/r-value.d.ts +11 -2
- package/util/r-value.js +23 -0
- package/util/random.d.ts +3 -0
- package/util/random.js +3 -0
- package/util/range.d.ts +9 -3
- package/util/range.js +15 -2
- package/util/schema.d.ts +14 -1
- package/util/schema.js +15 -2
- package/util/simple-df/dfg-view.d.ts +4 -1
- package/util/simple-df/dfg-view.js +4 -1
- package/util/summarizer.d.ts +9 -1
- package/util/summarizer.js +9 -0
- package/util/text/ansi.d.ts +3 -0
- package/util/text/ansi.js +3 -0
- package/util/text/args.d.ts +2 -4
- package/util/text/args.js +7 -5
- package/util/text/text.d.ts +4 -0
- package/util/text/text.js +4 -0
- package/util/text/time.d.ts +0 -1
- package/util/text/time.js +0 -1
- package/util/version.d.ts +26 -0
- package/util/version.js +37 -1
- package/abstract-interpretation/data-frame/domain.d.ts +0 -107
- package/abstract-interpretation/data-frame/domain.js +0 -315
- package/abstract-interpretation/domains/set-bounded-set-domain.d.ts +0 -43
- package/abstract-interpretation/domains/set-bounded-set-domain.js +0 -164
- package/cli/repl/commands/repl-lineage.d.ts +0 -15
- package/cli/repl/commands/repl-lineage.js +0 -67
- package/cli/repl/server/messages/message-lineage.d.ts +0 -17
- package/cli/repl/server/messages/message-lineage.js +0 -25
- package/queries/catalog/lineage-query/lineage-query-executor.d.ts +0 -3
- package/queries/catalog/lineage-query/lineage-query-executor.js +0 -22
- package/queries/catalog/lineage-query/lineage-query-format.d.ts +0 -22
- package/queries/catalog/lineage-query/lineage-query-format.js +0 -31
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
2
2
|
import type { FlowrSearchElements } from '../../search/flowr-search';
|
|
3
3
|
import { type MergeableRecord } from '../../util/objects';
|
|
4
4
|
import { type SourceRange } from '../../util/range';
|
|
5
|
-
import type
|
|
6
|
-
import { LintingRuleCertainty } from '../linter-format';
|
|
5
|
+
import { type LintingResult, LintingRuleCertainty } from '../linter-format';
|
|
7
6
|
import { LintingRuleTag } from '../linter-tags';
|
|
8
7
|
export interface DataFrameAccessValidationResult extends LintingResult {
|
|
9
8
|
/** The type of the data frame access ("column" or "row") */
|
|
@@ -32,7 +31,7 @@ export interface DataFrameAccessValidationMetadata extends MergeableRecord {
|
|
|
32
31
|
export declare const DATA_FRAME_ACCESS_VALIDATION: {
|
|
33
32
|
readonly createSearch: () => import("../../search/flowr-search-builder").FlowrSearchBuilder<"all", ["with"], ParentInformation, Promise<FlowrSearchElements<ParentInformation, import("../../search/flowr-search").FlowrSearchElement<ParentInformation>[]>>>;
|
|
34
33
|
readonly processSearchResult: (elements: FlowrSearchElements<ParentInformation, import("../../search/flowr-search").FlowrSearchElement<ParentInformation>[]>, config: DataFrameAccessValidationConfig, data: {
|
|
35
|
-
normalize: NormalizedAst;
|
|
34
|
+
normalize: import("../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
|
|
36
35
|
dataflow: import("../../dataflow/info").DataflowInformation;
|
|
37
36
|
cfg: import("../../control-flow/control-flow-graph").ControlFlowInformation;
|
|
38
37
|
config: import("../../config").FlowrConfigOptions;
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DATA_FRAME_ACCESS_VALIDATION = void 0;
|
|
4
4
|
const absint_info_1 = require("../../abstract-interpretation/data-frame/absint-info");
|
|
5
|
-
const domain_1 = require("../../abstract-interpretation/data-frame/domain");
|
|
6
5
|
const shape_inference_1 = require("../../abstract-interpretation/data-frame/shape-inference");
|
|
6
|
+
const satisfiable_domain_1 = require("../../abstract-interpretation/domains/satisfiable-domain");
|
|
7
7
|
const config_1 = require("../../config");
|
|
8
8
|
const extract_cfg_1 = require("../../control-flow/extract-cfg");
|
|
9
9
|
const type_1 = require("../../r-bridge/lang-4.x/ast/model/type");
|
|
10
10
|
const flowr_search_builder_1 = require("../../search/flowr-search-builder");
|
|
11
11
|
const search_enrichers_1 = require("../../search/search-executor/search-enrichers");
|
|
12
|
+
const logic_1 = require("../../util/logic");
|
|
12
13
|
const dfg_1 = require("../../util/mermaid/dfg");
|
|
13
14
|
const range_1 = require("../../util/range");
|
|
14
15
|
const linter_format_1 = require("../linter-format");
|
|
@@ -24,7 +25,7 @@ exports.DATA_FRAME_ACCESS_VALIDATION = {
|
|
|
24
25
|
});
|
|
25
26
|
const cfg = (0, extract_cfg_1.extractCfg)(data.normalize, flowrConfig, data.dataflow.graph);
|
|
26
27
|
(0, shape_inference_1.inferDataFrameShapes)(cfg, data.dataflow.graph, data.normalize, flowrConfig);
|
|
27
|
-
const accessOperations = getAccessOperations(elements
|
|
28
|
+
const accessOperations = getAccessOperations(elements);
|
|
28
29
|
const accesses = [];
|
|
29
30
|
for (const [nodeId, operations] of accessOperations) {
|
|
30
31
|
const access = { nodeId };
|
|
@@ -84,12 +85,9 @@ exports.DATA_FRAME_ACCESS_VALIDATION = {
|
|
|
84
85
|
defaultConfig: { readLoadedData: false }
|
|
85
86
|
}
|
|
86
87
|
};
|
|
87
|
-
function getAccessOperations(elements
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
return normalize.idMap.get(id);
|
|
91
|
-
}).filter(n => n !== undefined);
|
|
92
|
-
return new Map(nodes
|
|
88
|
+
function getAccessOperations(elements) {
|
|
89
|
+
return new Map(elements.getElements()
|
|
90
|
+
.map(element => element.node)
|
|
93
91
|
.filter(absint_info_1.hasDataFrameExpressionInfo)
|
|
94
92
|
.map(node => [node.info.id, node.info.dataFrame.operations
|
|
95
93
|
.filter(({ operation }) => operation === 'accessCols' || operation === 'accessRows')
|
|
@@ -101,15 +99,15 @@ function findInvalidDataFrameAccesses({ operandShape, accessedCols, accessedRows
|
|
|
101
99
|
const invalidAccesses = [];
|
|
102
100
|
if (operandShape !== undefined) {
|
|
103
101
|
for (const row of accessedRows ?? []) {
|
|
104
|
-
if (
|
|
102
|
+
if (operandShape.rows.satisfies(row, satisfiable_domain_1.NumericalComparator.LessOrEqual) === logic_1.Ternary.Never) {
|
|
105
103
|
invalidAccesses.push({ type: 'row', accessed: row });
|
|
106
104
|
}
|
|
107
105
|
}
|
|
108
106
|
for (const col of accessedCols ?? []) {
|
|
109
|
-
if (typeof col === 'string' &&
|
|
107
|
+
if (typeof col === 'string' && operandShape.colnames.satisfies([col], satisfiable_domain_1.SetComparator.SubsetOrEqual) === logic_1.Ternary.Never) {
|
|
110
108
|
invalidAccesses.push({ type: 'column', accessed: col });
|
|
111
109
|
}
|
|
112
|
-
else if (typeof col === 'number' &&
|
|
110
|
+
else if (typeof col === 'number' && operandShape.cols.satisfies(col, satisfiable_domain_1.NumericalComparator.LessOrEqual) === logic_1.Ternary.Never) {
|
|
113
111
|
invalidAccesses.push({ type: 'column', accessed: col });
|
|
114
112
|
}
|
|
115
113
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LintingResultCertainty, type LintingResult, LintingRuleCertainty } from '../linter-format';
|
|
2
|
-
import type
|
|
2
|
+
import { type SourceRange } from '../../util/range';
|
|
3
3
|
import type { MergeableRecord } from '../../util/objects';
|
|
4
4
|
import { LintingRuleTag } from '../linter-tags';
|
|
5
5
|
import { type CfgSimplificationPassName } from '../../control-flow/cfg-simplification';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LintingRuleCertainty } from '../linter-format';
|
|
2
2
|
import { LintingRuleTag } from '../linter-tags';
|
|
3
|
-
import type
|
|
3
|
+
import { type FunctionsMetadata, type FunctionsResult, type FunctionsToDetectConfig } from './function-finder-util';
|
|
4
4
|
export declare const DEPRECATED_FUNCTIONS: {
|
|
5
5
|
readonly createSearch: (config: FunctionsToDetectConfig) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"all", ["with", "filter"], import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, Promise<import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, [] | import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>>>;
|
|
6
6
|
readonly processSearchResult: <T extends import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>(elements: import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, T>, _config: FunctionsToDetectConfig, _data: {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { LintingRuleCertainty } from '../linter-format';
|
|
1
|
+
import { type LintingResult, LintingRuleCertainty } from '../linter-format';
|
|
3
2
|
import type { MergeableRecord } from '../../util/objects';
|
|
4
3
|
import type { SourceRange } from '../../util/range';
|
|
5
4
|
import type { FunctionInfo } from '../../queries/catalog/dependencies-query/function-info/function-info';
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { SourceRange } from '../../util/range';
|
|
2
2
|
import type { Identifier } from '../../dataflow/environments/identifier';
|
|
3
|
-
import type
|
|
4
|
-
import { LintingResultCertainty } from '../linter-format';
|
|
3
|
+
import { type LintingResult, LintingResultCertainty } from '../linter-format';
|
|
5
4
|
import type { FlowrSearchElement, FlowrSearchElements } from '../../search/flowr-search';
|
|
6
5
|
import type { NormalizedAst, ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
7
6
|
import type { MergeableRecord } from '../../util/objects';
|
|
@@ -2,8 +2,7 @@ import type { DataflowGraph } from '../../dataflow/graph/graph';
|
|
|
2
2
|
import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
3
3
|
import type { MergeableRecord } from '../../util/objects';
|
|
4
4
|
import type { SourceRange } from '../../util/range';
|
|
5
|
-
import type
|
|
6
|
-
import { LintingResultCertainty, LintingRuleCertainty } from '../linter-format';
|
|
5
|
+
import { type LintingResult, type LintQuickFixReplacement, LintingResultCertainty, LintingRuleCertainty } from '../linter-format';
|
|
7
6
|
import { LintingRuleTag } from '../linter-tags';
|
|
8
7
|
export declare enum CasingConvention {
|
|
9
8
|
CamelCase = "camelCase",
|
|
@@ -34,11 +33,23 @@ export interface NamingConventionMetadata extends MergeableRecord {
|
|
|
34
33
|
/** number of symbols breaking the casing convetion */
|
|
35
34
|
numBreak: number;
|
|
36
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Attempts to detect the casing convention used in the given identifier.
|
|
38
|
+
*/
|
|
37
39
|
export declare function detectCasing(identifier: string): CasingConvention;
|
|
40
|
+
/**
|
|
41
|
+
* Determines the most used casing convention in the given list of symbols.
|
|
42
|
+
*/
|
|
38
43
|
export declare function getMostUsedCasing(symbols: {
|
|
39
44
|
detectedCasing: CasingConvention;
|
|
40
45
|
}[]): CasingConvention;
|
|
46
|
+
/**
|
|
47
|
+
* Attempts to fix the casing of the given identifier to match the provided convention.
|
|
48
|
+
*/
|
|
41
49
|
export declare function fixCasing(identifier: string, convention: CasingConvention): string | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Creates quick fixes for renaming all references to the given node to match the provided replacement.
|
|
52
|
+
*/
|
|
42
53
|
export declare function createNamingConventionQuickFixes(graph: DataflowGraph, nodeId: NodeId, replacement: string, conv: CasingConvention): LintQuickFixReplacement[] | undefined;
|
|
43
54
|
export declare const NAMING_CONVENTION: {
|
|
44
55
|
readonly createSearch: (_config: NamingConventionConfig) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"all", ["filter"], import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, Promise<import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, [] | import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>>>;
|
|
@@ -25,6 +25,9 @@ var CasingConvention;
|
|
|
25
25
|
function containsAlpha(s) {
|
|
26
26
|
return /[A-Za-z]/.test(s);
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Attempts to detect the casing convention used in the given identifier.
|
|
30
|
+
*/
|
|
28
31
|
function detectCasing(identifier) {
|
|
29
32
|
if (identifier.trim() === '' || !containsAlpha(identifier)) {
|
|
30
33
|
return CasingConvention.Unknown;
|
|
@@ -68,6 +71,9 @@ function detectCasing(identifier) {
|
|
|
68
71
|
}
|
|
69
72
|
return CasingConvention.Unknown;
|
|
70
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Determines the most used casing convention in the given list of symbols.
|
|
76
|
+
*/
|
|
71
77
|
function getMostUsedCasing(symbols) {
|
|
72
78
|
if (symbols.length === 0) {
|
|
73
79
|
return CasingConvention.Unknown;
|
|
@@ -77,9 +83,12 @@ function getMostUsedCasing(symbols) {
|
|
|
77
83
|
const o = map.get(symbol.detectedCasing) ?? 0;
|
|
78
84
|
map.set(symbol.detectedCasing, o + 1);
|
|
79
85
|
}
|
|
80
|
-
// Return element with most occurances
|
|
86
|
+
// Return element with most occurances
|
|
81
87
|
return [...map].reduce((p, c) => p[1] > c[1] ? p : c)[0];
|
|
82
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Attempts to fix the casing of the given identifier to match the provided convention.
|
|
91
|
+
*/
|
|
83
92
|
function fixCasing(identifier, convention) {
|
|
84
93
|
if (!containsAlpha(identifier)) {
|
|
85
94
|
return undefined;
|
|
@@ -110,6 +119,9 @@ function fixCasing(identifier, convention) {
|
|
|
110
119
|
(0, assert_1.assertUnreachable)(convention);
|
|
111
120
|
}
|
|
112
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Creates quick fixes for renaming all references to the given node to match the provided replacement.
|
|
124
|
+
*/
|
|
113
125
|
function createNamingConventionQuickFixes(graph, nodeId, replacement, conv) {
|
|
114
126
|
const refs = (0, dfg_get_symbol_refs_1.getAllRefsToSymbol)(graph, nodeId);
|
|
115
127
|
const idMap = graph.idMap;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LintingRuleCertainty } from '../linter-format';
|
|
2
|
-
import type
|
|
2
|
+
import { type FunctionsMetadata, type FunctionsResult } from './function-finder-util';
|
|
3
3
|
import { LintingRuleTag } from '../linter-tags';
|
|
4
4
|
import type { MergeableRecord } from '../../util/objects';
|
|
5
5
|
export interface NetworkFunctionsConfig extends MergeableRecord {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { LintingResultCertainty, LintingRuleCertainty } from '../linter-format';
|
|
1
|
+
import { type LintingResult, LintingResultCertainty, LintingRuleCertainty } from '../linter-format';
|
|
3
2
|
import type { SourceRange } from '../../util/range';
|
|
4
3
|
import type { MergeableRecord } from '../../util/objects';
|
|
5
4
|
import type { Identifier } from '../../dataflow/environments/identifier';
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { LintingRuleCertainty } from '../linter-format';
|
|
1
|
+
import { type LintingResult, LintingRuleCertainty } from '../linter-format';
|
|
3
2
|
import type { MergeableRecord } from '../../util/objects';
|
|
4
|
-
import type
|
|
3
|
+
import { type SourceRange } from '../../util/range';
|
|
5
4
|
import { LintingRuleTag } from '../linter-tags';
|
|
6
5
|
import type { NormalizedAst, ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
7
6
|
export interface UnusedDefinitionResult extends LintingResult {
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { BuiltInMappingName } from '../../dataflow/environments/built-in';
|
|
2
2
|
import type { MergeableRecord } from '../../util/objects';
|
|
3
3
|
import type { SourceRange } from '../../util/range';
|
|
4
|
-
import type
|
|
5
|
-
import { LintingResultCertainty, LintingRuleCertainty } from '../linter-format';
|
|
4
|
+
import { type LintingResult, LintingResultCertainty, LintingRuleCertainty } from '../linter-format';
|
|
6
5
|
import { LintingRuleTag } from '../linter-tags';
|
|
7
6
|
export interface UselessLoopResult extends LintingResult {
|
|
8
7
|
name: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eagleoutice/flowr",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.2",
|
|
4
4
|
"description": "Static Dataflow Analyzer and Program Slicer for the R Programming Language",
|
|
5
5
|
"types": "dist/src/index.d.ts",
|
|
6
6
|
"repository": {
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
"devDependencies": {
|
|
179
179
|
"@commitlint/cli": "^19.7.1",
|
|
180
180
|
"@commitlint/config-angular": "^19.7.1",
|
|
181
|
-
"@eagleoutice/eslint-config-flowr": "^1.0.
|
|
181
|
+
"@eagleoutice/eslint-config-flowr": "^1.0.27",
|
|
182
182
|
"@eslint/eslintrc": "^3.3.1",
|
|
183
183
|
"@eslint/js": "^9.34.0",
|
|
184
184
|
"@j-ulrich/release-it-regex-bumper": "^5.3.0",
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { KnownParser } from '../../r-bridge/parser';
|
|
2
|
-
import type
|
|
3
|
-
import {
|
|
4
|
-
import type { DEFAULT_DATAFLOW_PIPELINE, TREE_SITTER_DATAFLOW_PIPELINE } from '../../core/steps/pipeline/default-pipelines';
|
|
2
|
+
import { type CacheInvalidationEvent, FlowrCache } from './flowr-cache';
|
|
3
|
+
import { type DEFAULT_DATAFLOW_PIPELINE, type TREE_SITTER_DATAFLOW_PIPELINE } from '../../core/steps/pipeline/default-pipelines';
|
|
5
4
|
import type { FlowrConfigOptions } from '../../config';
|
|
6
5
|
import type { RParseRequests } from '../../r-bridge/retriever';
|
|
7
6
|
import type { IdGenerator } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
@@ -10,6 +9,7 @@ import type { TreeSitterExecutor } from '../../r-bridge/lang-4.x/tree-sitter/tre
|
|
|
10
9
|
import type { PipelineOutput } from '../../core/steps/pipeline/pipeline';
|
|
11
10
|
import type { CfgSimplificationPassName } from '../../control-flow/cfg-simplification';
|
|
12
11
|
import type { ControlFlowInformation } from '../../control-flow/control-flow-graph';
|
|
12
|
+
import { CfgKind } from '../cfg-kind';
|
|
13
13
|
interface FlowrAnalyzerCacheOptions<Parser extends KnownParser> {
|
|
14
14
|
parser: Parser;
|
|
15
15
|
config: FlowrConfigOptions;
|
|
@@ -17,7 +17,7 @@ interface FlowrAnalyzerCacheOptions<Parser extends KnownParser> {
|
|
|
17
17
|
getId?: IdGenerator<NoInfo>;
|
|
18
18
|
overwriteFilePath?: string;
|
|
19
19
|
}
|
|
20
|
-
type AnalyzerCacheType<Parser extends KnownParser> = Parser extends TreeSitterExecutor ? Partial<PipelineOutput<typeof TREE_SITTER_DATAFLOW_PIPELINE>> : Partial<PipelineOutput<typeof DEFAULT_DATAFLOW_PIPELINE>>;
|
|
20
|
+
export type AnalyzerCacheType<Parser extends KnownParser> = Parser extends TreeSitterExecutor ? Partial<PipelineOutput<typeof TREE_SITTER_DATAFLOW_PIPELINE>> : Partial<PipelineOutput<typeof DEFAULT_DATAFLOW_PIPELINE>>;
|
|
21
21
|
/**
|
|
22
22
|
* This provides the full analyzer caching layer, please avoid using this directly
|
|
23
23
|
* and prefer the {@link FlowrAnalyzer}.
|
|
@@ -36,14 +36,12 @@ export declare class FlowrAnalyzerCache<Parser extends KnownParser> extends Flow
|
|
|
36
36
|
/**
|
|
37
37
|
* Get the parse output for the request, parsing if necessary.
|
|
38
38
|
* @param force - Do not use the cache, instead force a new parse.
|
|
39
|
-
*
|
|
40
39
|
* @see {@link FlowrAnalyzerCache#peekParse} - to get the parse output if already available without triggering a new parse.
|
|
41
40
|
*/
|
|
42
41
|
parse(force?: boolean): Promise<NonNullable<AnalyzerCacheType<Parser>['parse']>>;
|
|
43
42
|
/**
|
|
44
43
|
* Get the parse output for the request if already available, otherwise return `undefined`.
|
|
45
44
|
* This will not trigger a new parse.
|
|
46
|
-
*
|
|
47
45
|
* @see {@link FlowrAnalyzerCache#parse} - to get the parse output, parsing if necessary.
|
|
48
46
|
*/
|
|
49
47
|
peekParse(): NonNullable<AnalyzerCacheType<Parser>['parse']> | undefined;
|
|
@@ -56,38 +54,34 @@ export declare class FlowrAnalyzerCache<Parser extends KnownParser> extends Flow
|
|
|
56
54
|
/**
|
|
57
55
|
* Get the normalized abstract syntax tree for the request if already available, otherwise return `undefined`.
|
|
58
56
|
* This will not trigger a new normalization.
|
|
59
|
-
*
|
|
60
57
|
* @see {@link FlowrAnalyzerCache#normalize} - to get the normalized AST, normalizing if necessary.
|
|
61
58
|
*/
|
|
62
59
|
peekNormalize(): NonNullable<AnalyzerCacheType<Parser>['normalize']> | undefined;
|
|
63
60
|
/**
|
|
64
61
|
* Get the dataflow graph for the request, computing if necessary.
|
|
65
62
|
* @param force - Do not use the cache, instead force new analyses.
|
|
66
|
-
*
|
|
67
63
|
* @see {@link FlowrAnalyzerCache#peekDataflow} - to get the dataflow graph if already available without triggering a new computation.
|
|
68
64
|
*/
|
|
69
65
|
dataflow(force?: boolean): Promise<NonNullable<AnalyzerCacheType<Parser>['dataflow']>>;
|
|
70
66
|
/**
|
|
71
67
|
* Get the dataflow graph for the request if already available, otherwise return `undefined`.
|
|
72
68
|
* This will not trigger a new computation.
|
|
73
|
-
*
|
|
74
69
|
* @see {@link FlowrAnalyzerCache#dataflow} - to get the dataflow graph, computing if necessary.
|
|
75
70
|
*/
|
|
76
71
|
peekDataflow(): NonNullable<AnalyzerCacheType<Parser>['dataflow']> | undefined;
|
|
77
72
|
/**
|
|
78
73
|
* Get the control flow graph (CFG) for the request, computing if necessary.
|
|
79
74
|
* @param force - Do not use the cache, instead force new analyses.
|
|
80
|
-
* @param
|
|
75
|
+
* @param kind - The kind of CFG that is requested.
|
|
81
76
|
* @param simplifications - Simplification passes to be applied to the CFG.
|
|
82
77
|
*/
|
|
83
|
-
controlflow(force: boolean | undefined,
|
|
78
|
+
controlflow(force: boolean | undefined, kind: CfgKind, simplifications: readonly CfgSimplificationPassName[] | undefined): Promise<ControlFlowInformation>;
|
|
84
79
|
/**
|
|
85
80
|
* Get the control flow graph (CFG) for the request if already available, otherwise return `undefined`.
|
|
86
|
-
* @param
|
|
81
|
+
* @param kind - The kind of CFG that is requested.
|
|
87
82
|
* @param simplifications - Simplification passes to be applied to the CFG.
|
|
88
|
-
*
|
|
89
83
|
* @see {@link FlowrAnalyzerCache#controlflow} - to get the control flow graph, computing if necessary.
|
|
90
84
|
*/
|
|
91
|
-
peekControlflow(
|
|
85
|
+
peekControlflow(kind: CfgKind, simplifications: readonly CfgSimplificationPassName[] | undefined): ControlFlowInformation | undefined;
|
|
92
86
|
}
|
|
93
87
|
export {};
|
|
@@ -6,6 +6,7 @@ const default_pipelines_1 = require("../../core/steps/pipeline/default-pipelines
|
|
|
6
6
|
const assert_1 = require("../../util/assert");
|
|
7
7
|
const objectmap_1 = require("../../util/collections/objectmap");
|
|
8
8
|
const extract_cfg_1 = require("../../control-flow/extract-cfg");
|
|
9
|
+
const cfg_kind_1 = require("../cfg-kind");
|
|
9
10
|
/**
|
|
10
11
|
* This provides the full analyzer caching layer, please avoid using this directly
|
|
11
12
|
* and prefer the {@link FlowrAnalyzer}.
|
|
@@ -50,6 +51,7 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
|
|
|
50
51
|
this.receive({ type: "full" /* CacheInvalidationEventType.Full */ });
|
|
51
52
|
}
|
|
52
53
|
async runTapeUntil(force, until) {
|
|
54
|
+
(0, assert_1.guard)(this.args.request && (Array.isArray(this.args.request) ? this.args.request.length > 0 : true), 'At least one request must be set to run the analysis pipeline');
|
|
53
55
|
if (force) {
|
|
54
56
|
this.reset();
|
|
55
57
|
}
|
|
@@ -63,7 +65,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
|
|
|
63
65
|
/**
|
|
64
66
|
* Get the parse output for the request, parsing if necessary.
|
|
65
67
|
* @param force - Do not use the cache, instead force a new parse.
|
|
66
|
-
*
|
|
67
68
|
* @see {@link FlowrAnalyzerCache#peekParse} - to get the parse output if already available without triggering a new parse.
|
|
68
69
|
*/
|
|
69
70
|
async parse(force) {
|
|
@@ -73,7 +74,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
|
|
|
73
74
|
/**
|
|
74
75
|
* Get the parse output for the request if already available, otherwise return `undefined`.
|
|
75
76
|
* This will not trigger a new parse.
|
|
76
|
-
*
|
|
77
77
|
* @see {@link FlowrAnalyzerCache#parse} - to get the parse output, parsing if necessary.
|
|
78
78
|
*/
|
|
79
79
|
peekParse() {
|
|
@@ -91,7 +91,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
|
|
|
91
91
|
/**
|
|
92
92
|
* Get the normalized abstract syntax tree for the request if already available, otherwise return `undefined`.
|
|
93
93
|
* This will not trigger a new normalization.
|
|
94
|
-
*
|
|
95
94
|
* @see {@link FlowrAnalyzerCache#normalize} - to get the normalized AST, normalizing if necessary.
|
|
96
95
|
*/
|
|
97
96
|
peekNormalize() {
|
|
@@ -100,7 +99,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
|
|
|
100
99
|
/**
|
|
101
100
|
* Get the dataflow graph for the request, computing if necessary.
|
|
102
101
|
* @param force - Do not use the cache, instead force new analyses.
|
|
103
|
-
*
|
|
104
102
|
* @see {@link FlowrAnalyzerCache#peekDataflow} - to get the dataflow graph if already available without triggering a new computation.
|
|
105
103
|
*/
|
|
106
104
|
async dataflow(force) {
|
|
@@ -110,7 +108,6 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
|
|
|
110
108
|
/**
|
|
111
109
|
* Get the dataflow graph for the request if already available, otherwise return `undefined`.
|
|
112
110
|
* This will not trigger a new computation.
|
|
113
|
-
*
|
|
114
111
|
* @see {@link FlowrAnalyzerCache#dataflow} - to get the dataflow graph, computing if necessary.
|
|
115
112
|
*/
|
|
116
113
|
peekDataflow() {
|
|
@@ -119,37 +116,42 @@ class FlowrAnalyzerCache extends flowr_cache_1.FlowrCache {
|
|
|
119
116
|
/**
|
|
120
117
|
* Get the control flow graph (CFG) for the request, computing if necessary.
|
|
121
118
|
* @param force - Do not use the cache, instead force new analyses.
|
|
122
|
-
* @param
|
|
119
|
+
* @param kind - The kind of CFG that is requested.
|
|
123
120
|
* @param simplifications - Simplification passes to be applied to the CFG.
|
|
124
121
|
*/
|
|
125
|
-
async controlflow(force,
|
|
122
|
+
async controlflow(force, kind, simplifications) {
|
|
123
|
+
(0, assert_1.guard)(kind === cfg_kind_1.CfgKind.Quick ? simplifications === undefined : true, 'Cannot apply simplifications to quick CFG');
|
|
126
124
|
simplifications ??= [];
|
|
127
125
|
if (!force) {
|
|
128
|
-
const value = this.controlFlowCache.simplified.get([simplifications,
|
|
126
|
+
const value = this.controlFlowCache.simplified.get([simplifications, kind]);
|
|
129
127
|
if (value !== undefined) {
|
|
130
128
|
return value;
|
|
131
129
|
}
|
|
132
130
|
}
|
|
133
131
|
const normalized = await this.normalize(force);
|
|
134
|
-
let
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
132
|
+
let result;
|
|
133
|
+
switch (kind) {
|
|
134
|
+
case cfg_kind_1.CfgKind.WithDataflow:
|
|
135
|
+
result = (0, extract_cfg_1.extractCfg)(normalized, this.args.config, (await this.dataflow()).graph, simplifications);
|
|
136
|
+
break;
|
|
137
|
+
case cfg_kind_1.CfgKind.NoDataflow:
|
|
138
|
+
result = (0, extract_cfg_1.extractCfg)(normalized, this.args.config, undefined, simplifications);
|
|
139
|
+
break;
|
|
140
|
+
case cfg_kind_1.CfgKind.Quick:
|
|
141
|
+
result = this.peekDataflow()?.cfgQuick ?? (0, extract_cfg_1.extractCfgQuick)(normalized);
|
|
142
|
+
break;
|
|
138
143
|
}
|
|
139
|
-
|
|
140
|
-
(0, extract_cfg_1.extractCfg)(normalized, this.args.config, dataflow?.graph, simplifications);
|
|
141
|
-
this.controlFlowCache.simplified.set([simplifications, useDataflow], result);
|
|
144
|
+
this.controlFlowCache.simplified.set([simplifications, kind], result);
|
|
142
145
|
return result;
|
|
143
146
|
}
|
|
144
147
|
/**
|
|
145
148
|
* Get the control flow graph (CFG) for the request if already available, otherwise return `undefined`.
|
|
146
|
-
* @param
|
|
149
|
+
* @param kind - The kind of CFG that is requested.
|
|
147
150
|
* @param simplifications - Simplification passes to be applied to the CFG.
|
|
148
|
-
*
|
|
149
151
|
* @see {@link FlowrAnalyzerCache#controlflow} - to get the control flow graph, computing if necessary.
|
|
150
152
|
*/
|
|
151
|
-
peekControlflow(
|
|
152
|
-
return this.controlFlowCache.simplified.get([simplifications ?? [],
|
|
153
|
+
peekControlflow(kind, simplifications) {
|
|
154
|
+
return this.controlFlowCache.simplified.get([simplifications ?? [], kind]);
|
|
153
155
|
}
|
|
154
156
|
}
|
|
155
157
|
exports.FlowrAnalyzerCache = FlowrAnalyzerCache;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Denotes the kind of control flow graph (CFG).
|
|
3
|
+
*/
|
|
4
|
+
export declare enum CfgKind {
|
|
5
|
+
/**
|
|
6
|
+
* CFG with dataflow information.
|
|
7
|
+
*/
|
|
8
|
+
WithDataflow = 0,
|
|
9
|
+
/**
|
|
10
|
+
* CFG without dataflow information.
|
|
11
|
+
*/
|
|
12
|
+
NoDataflow = 1,
|
|
13
|
+
/**
|
|
14
|
+
* A CFG version that is much quicker and does not apply any simplifications or dataflow information.
|
|
15
|
+
*/
|
|
16
|
+
Quick = 2
|
|
17
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CfgKind = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Denotes the kind of control flow graph (CFG).
|
|
6
|
+
*/
|
|
7
|
+
var CfgKind;
|
|
8
|
+
(function (CfgKind) {
|
|
9
|
+
/**
|
|
10
|
+
* CFG with dataflow information.
|
|
11
|
+
*/
|
|
12
|
+
CfgKind[CfgKind["WithDataflow"] = 0] = "WithDataflow";
|
|
13
|
+
/**
|
|
14
|
+
* CFG without dataflow information.
|
|
15
|
+
*/
|
|
16
|
+
CfgKind[CfgKind["NoDataflow"] = 1] = "NoDataflow";
|
|
17
|
+
/**
|
|
18
|
+
* A CFG version that is much quicker and does not apply any simplifications or dataflow information.
|
|
19
|
+
*/
|
|
20
|
+
CfgKind[CfgKind["Quick"] = 2] = "Quick";
|
|
21
|
+
})(CfgKind || (exports.CfgKind = CfgKind = {}));
|
|
22
|
+
//# sourceMappingURL=cfg-kind.js.map
|
|
@@ -32,4 +32,8 @@ export declare abstract class AbstractFlowrAnalyzerContext<In, Out, Plugin exten
|
|
|
32
32
|
* Returns the project context this sub-context is attached to
|
|
33
33
|
*/
|
|
34
34
|
getAttachedContext(): FlowrAnalyzerContext;
|
|
35
|
+
/**
|
|
36
|
+
* Reset the context to its initial state.
|
|
37
|
+
*/
|
|
38
|
+
abstract reset(): void;
|
|
35
39
|
}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import {
|
|
3
|
-
import type
|
|
4
|
-
import { FlowrAnalyzerDependenciesContext } from './flowr-analyzer-dependencies-context';
|
|
5
|
-
import type { FlowrAnalyzerPlugin } from '../plugins/flowr-analyzer-plugin';
|
|
6
|
-
import { PluginType } from '../plugins/flowr-analyzer-plugin';
|
|
1
|
+
import { type RAnalysisRequest, type ReadOnlyFlowrAnalyzerFilesContext, FlowrAnalyzerFilesContext } from './flowr-analyzer-files-context';
|
|
2
|
+
import { type ReadOnlyFlowrAnalyzerDependenciesContext, FlowrAnalyzerDependenciesContext } from './flowr-analyzer-dependencies-context';
|
|
3
|
+
import { type FlowrAnalyzerPlugin, PluginType } from '../plugins/flowr-analyzer-plugin';
|
|
7
4
|
/**
|
|
8
5
|
* This is a read-only interface to the {@link FlowrAnalyzerContext}.
|
|
9
6
|
* It prevents you from modifying the context, but allows you to inspect it (which is probably what you want when using the {@link FlowrAnalyzer}).
|
|
@@ -37,6 +34,8 @@ export declare class FlowrAnalyzerContext implements ReadOnlyFlowrAnalyzerContex
|
|
|
37
34
|
constructor(plugins: ReadonlyMap<PluginType, readonly FlowrAnalyzerPlugin[]>);
|
|
38
35
|
/** delegate request addition */
|
|
39
36
|
addRequests(requests: readonly RAnalysisRequest[]): void;
|
|
37
|
+
/** delegate request addition */
|
|
38
|
+
addRequest(request: RAnalysisRequest): void;
|
|
40
39
|
/** this conducts all the step that can be done before the main analysis run */
|
|
41
40
|
resolvePreAnalysis(): void;
|
|
42
41
|
/**
|
|
@@ -45,4 +44,8 @@ export declare class FlowrAnalyzerContext implements ReadOnlyFlowrAnalyzerContex
|
|
|
45
44
|
* the available methods.
|
|
46
45
|
*/
|
|
47
46
|
inspect(): ReadOnlyFlowrAnalyzerContext;
|
|
47
|
+
/**
|
|
48
|
+
* Reset the context to its initial state, removing all files, dependencies, and loading orders.
|
|
49
|
+
*/
|
|
50
|
+
reset(): void;
|
|
48
51
|
}
|
|
@@ -29,6 +29,10 @@ class FlowrAnalyzerContext {
|
|
|
29
29
|
addRequests(requests) {
|
|
30
30
|
this.files.addRequests(requests);
|
|
31
31
|
}
|
|
32
|
+
/** delegate request addition */
|
|
33
|
+
addRequest(request) {
|
|
34
|
+
this.files.addRequest(request);
|
|
35
|
+
}
|
|
32
36
|
/** this conducts all the step that can be done before the main analysis run */
|
|
33
37
|
resolvePreAnalysis() {
|
|
34
38
|
this.files.computeLoadingOrder();
|
|
@@ -42,6 +46,13 @@ class FlowrAnalyzerContext {
|
|
|
42
46
|
inspect() {
|
|
43
47
|
return this;
|
|
44
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Reset the context to its initial state, removing all files, dependencies, and loading orders.
|
|
51
|
+
*/
|
|
52
|
+
reset() {
|
|
53
|
+
this.files.reset();
|
|
54
|
+
this.deps.reset();
|
|
55
|
+
}
|
|
45
56
|
}
|
|
46
57
|
exports.FlowrAnalyzerContext = FlowrAnalyzerContext;
|
|
47
58
|
//# sourceMappingURL=flowr-analyzer-context.js.map
|
|
@@ -16,7 +16,6 @@ export interface ReadOnlyFlowrAnalyzerDependenciesContext {
|
|
|
16
16
|
* Get the dependency with the given name, if it exists.
|
|
17
17
|
*
|
|
18
18
|
* If the static dependencies have not yet been loaded, this may trigger a resolution step.
|
|
19
|
-
*
|
|
20
19
|
* @param name - The name of the dependency to get.
|
|
21
20
|
* @returns The dependency with the given name, or undefined if it does not exist.
|
|
22
21
|
*/
|
|
@@ -31,6 +30,7 @@ export declare class FlowrAnalyzerDependenciesContext extends AbstractFlowrAnaly
|
|
|
31
30
|
readonly name = "flowr-analyzer-dependencies-context";
|
|
32
31
|
private dependencies;
|
|
33
32
|
private staticsLoaded;
|
|
33
|
+
reset(): void;
|
|
34
34
|
constructor(ctx: FlowrAnalyzerContext, plugins?: readonly FlowrAnalyzerPackageVersionsPlugin[]);
|
|
35
35
|
resolveStaticDependencies(): void;
|
|
36
36
|
addDependency(pkg: Package): void;
|
|
@@ -12,6 +12,10 @@ class FlowrAnalyzerDependenciesContext extends abstract_flowr_analyzer_context_1
|
|
|
12
12
|
name = 'flowr-analyzer-dependencies-context';
|
|
13
13
|
dependencies = new Map();
|
|
14
14
|
staticsLoaded = false;
|
|
15
|
+
reset() {
|
|
16
|
+
this.dependencies = new Map();
|
|
17
|
+
this.staticsLoaded = false;
|
|
18
|
+
}
|
|
15
19
|
constructor(ctx, plugins) {
|
|
16
20
|
super(ctx, flowr_analyzer_package_versions_plugin_1.FlowrAnalyzerPackageVersionsPlugin.defaultPlugin(), plugins);
|
|
17
21
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { AbstractFlowrAnalyzerContext } from './abstract-flowr-analyzer-context';
|
|
2
|
-
import type
|
|
2
|
+
import { type RParseRequest, type RParseRequestFromFile } from '../../r-bridge/retriever';
|
|
3
3
|
import type { FlowrAnalyzerLoadingOrderContext, ReadOnlyFlowrAnalyzerLoadingOrderContext } from './flowr-analyzer-loading-order-context';
|
|
4
4
|
import { FlowrAnalyzerProjectDiscoveryPlugin } from '../plugins/project-discovery/flowr-analyzer-project-discovery-plugin';
|
|
5
5
|
import { FlowrAnalyzerFilePlugin } from '../plugins/file-plugins/flowr-analyzer-file-plugin';
|
|
6
|
-
import type
|
|
7
|
-
import { SpecialFileRole } from './flowr-file';
|
|
6
|
+
import { type FlowrFile, type FlowrFileProvider, SpecialFileRole } from './flowr-file';
|
|
8
7
|
import type { FlowrDescriptionFile } from '../plugins/file-plugins/flowr-description-file';
|
|
9
8
|
/**
|
|
10
9
|
* This is a request to process a folder as a project, which will be expanded by the registered {@link FlowrAnalyzerProjectDiscoveryPlugin}s.
|
|
@@ -39,7 +38,6 @@ export interface ReadOnlyFlowrAnalyzerFilesContext {
|
|
|
39
38
|
readonly loadingOrder: ReadOnlyFlowrAnalyzerLoadingOrderContext;
|
|
40
39
|
/**
|
|
41
40
|
* Get all requests that have been added to this context.
|
|
42
|
-
*
|
|
43
41
|
* @example If you want to obtain all description files, use
|
|
44
42
|
* ```ts
|
|
45
43
|
* getFilesByRole(SpecialFileRole.Description)
|
|
@@ -59,6 +57,7 @@ export declare class FlowrAnalyzerFilesContext extends AbstractFlowrAnalyzerCont
|
|
|
59
57
|
private readonly fileLoaders;
|
|
60
58
|
private specialFiles;
|
|
61
59
|
constructor(loadingOrder: FlowrAnalyzerLoadingOrderContext, plugins: readonly FlowrAnalyzerProjectDiscoveryPlugin[], fileLoaders: readonly FlowrAnalyzerFilePlugin[]);
|
|
60
|
+
reset(): void;
|
|
62
61
|
/**
|
|
63
62
|
* Add multiple requests to the context. This is just a convenience method that calls {@link addRequest} for each request.
|
|
64
63
|
*/
|
|
@@ -49,6 +49,10 @@ class FlowrAnalyzerFilesContext extends abstract_flowr_analyzer_context_1.Abstra
|
|
|
49
49
|
this.fileLoaders = [...fileLoaders, flowr_analyzer_file_plugin_1.FlowrAnalyzerFilePlugin.defaultPlugin()];
|
|
50
50
|
this.loadingOrder = loadingOrder;
|
|
51
51
|
}
|
|
52
|
+
reset() {
|
|
53
|
+
this.loadingOrder.reset();
|
|
54
|
+
this.files = new Map();
|
|
55
|
+
}
|
|
52
56
|
/**
|
|
53
57
|
* Add multiple requests to the context. This is just a convenience method that calls {@link addRequest} for each request.
|
|
54
58
|
*/
|