@eagleoutice/flowr 1.5.1 → 2.0.0
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/abstract-interpretation/handler/binop/binop.d.ts +3 -4
- package/abstract-interpretation/handler/binop/binop.js +4 -2
- package/abstract-interpretation/handler/binop/operators.d.ts +2 -2
- package/abstract-interpretation/handler/binop/operators.js +14 -28
- package/abstract-interpretation/processor.d.ts +3 -2
- package/abstract-interpretation/processor.js +2 -2
- package/benchmark/slicer.d.ts +101 -0
- package/benchmark/slicer.js +214 -0
- package/benchmark/stats/print.d.ts +7 -0
- package/benchmark/stats/print.js +151 -0
- package/benchmark/stats/stats.d.ts +42 -0
- package/benchmark/stats/stats.js +6 -0
- package/benchmark/stopwatch.d.ts +35 -0
- package/benchmark/stopwatch.js +79 -0
- package/benchmark/summarizer/data.d.ts +54 -0
- package/benchmark/summarizer/first-phase/input.d.ts +3 -0
- package/benchmark/summarizer/first-phase/input.js +76 -0
- package/benchmark/summarizer/first-phase/process.d.ts +11 -0
- package/benchmark/summarizer/first-phase/process.js +205 -0
- package/benchmark/summarizer/second-phase/graph.d.ts +2 -0
- package/benchmark/summarizer/second-phase/graph.js +54 -0
- package/benchmark/summarizer/second-phase/process.d.ts +6 -0
- package/benchmark/summarizer/second-phase/process.js +127 -0
- package/benchmark/summarizer/summarizer.d.ts +31 -0
- package/benchmark/summarizer/summarizer.js +58 -0
- package/cli/benchmark-app.d.ts +10 -0
- package/cli/benchmark-app.js +67 -0
- package/cli/benchmark-helper-app.d.ts +9 -0
- package/cli/benchmark-helper-app.js +69 -0
- package/cli/common/features.d.ts +3 -0
- package/cli/common/features.js +30 -0
- package/cli/common/options.d.ts +20 -0
- package/cli/common/options.js +85 -0
- package/cli/common/script.d.ts +21 -0
- package/cli/common/script.js +61 -0
- package/cli/common/scripts-info.d.ts +25 -0
- package/cli/common/scripts-info.js +83 -0
- package/cli/export-quads-app.d.ts +7 -0
- package/cli/export-quads-app.js +43 -0
- package/cli/flowr.d.ts +29 -0
- package/cli/flowr.js +141 -0
- package/cli/repl/commands/cfg.d.ts +3 -0
- package/cli/repl/commands/cfg.js +37 -0
- package/cli/repl/commands/commands.d.ts +13 -0
- package/cli/repl/commands/commands.js +142 -0
- package/cli/repl/commands/dataflow.d.ts +3 -0
- package/cli/repl/commands/dataflow.js +34 -0
- package/cli/repl/commands/execute.d.ts +4 -0
- package/cli/repl/commands/execute.js +27 -0
- package/cli/repl/commands/main.d.ts +39 -0
- package/cli/repl/commands/main.js +14 -0
- package/cli/repl/commands/normalize.d.ts +3 -0
- package/cli/repl/commands/normalize.js +34 -0
- package/cli/repl/commands/parse.d.ts +2 -0
- package/cli/repl/commands/parse.js +110 -0
- package/cli/repl/commands/quit.d.ts +2 -0
- package/cli/repl/commands/quit.js +15 -0
- package/cli/repl/commands/version.d.ts +16 -0
- package/cli/repl/commands/version.js +28 -0
- package/cli/repl/core.d.ts +36 -0
- package/cli/repl/core.js +174 -0
- package/cli/repl/execute.d.ts +28 -0
- package/cli/repl/execute.js +79 -0
- package/cli/repl/print-version.d.ts +2 -0
- package/cli/repl/print-version.js +10 -0
- package/cli/repl/prompt.d.ts +2 -0
- package/cli/repl/prompt.js +9 -0
- package/cli/repl/server/connection.d.ts +21 -0
- package/cli/repl/server/connection.js +218 -0
- package/cli/repl/server/messages/analysis.d.ts +72 -0
- package/cli/repl/server/messages/analysis.js +21 -0
- package/cli/repl/server/messages/error.d.ts +11 -0
- package/{core/input.js → cli/repl/server/messages/error.js} +1 -1
- package/cli/repl/server/messages/hello.d.ts +20 -0
- package/{core/output.js → cli/repl/server/messages/hello.js} +1 -1
- package/cli/repl/server/messages/messages.d.ts +35 -0
- package/cli/repl/server/messages/messages.js +40 -0
- package/cli/repl/server/messages/repl.d.ts +33 -0
- package/cli/repl/server/messages/repl.js +37 -0
- package/cli/repl/server/messages/slice.d.ts +26 -0
- package/cli/repl/server/messages/slice.js +37 -0
- package/cli/repl/server/net.d.ts +49 -0
- package/cli/repl/server/net.js +63 -0
- package/cli/repl/server/send.d.ts +4 -0
- package/cli/repl/server/send.js +18 -0
- package/cli/repl/server/server.d.ts +20 -0
- package/cli/repl/server/server.js +66 -0
- package/cli/repl/server/validate.d.ts +15 -0
- package/cli/repl/server/validate.js +34 -0
- package/cli/slicer-app.d.ts +11 -0
- package/cli/slicer-app.js +83 -0
- package/cli/statistics-app.d.ts +11 -0
- package/cli/statistics-app.js +99 -0
- package/cli/statistics-helper-app.d.ts +11 -0
- package/cli/statistics-helper-app.js +87 -0
- package/cli/summarizer-app.d.ts +18 -0
- package/cli/summarizer-app.js +66 -0
- package/core/pipeline-executor.d.ts +154 -0
- package/core/pipeline-executor.js +221 -0
- package/core/print/dataflow-printer.d.ts +3 -4
- package/core/print/dataflow-printer.js +5 -5
- package/core/print/normalize-printer.d.ts +1 -1
- package/core/print/normalize-printer.js +3 -3
- package/core/print/parse-printer.js +3 -3
- package/core/print/print.d.ts +13 -4
- package/core/print/print.js +13 -2
- package/core/print/slice-diff-ansi.d.ts +3 -2
- package/core/print/slice-diff-ansi.js +4 -4
- package/core/steps/all/core/00-parse.d.ts +28 -0
- package/core/steps/all/core/00-parse.js +24 -0
- package/core/steps/all/core/10-normalize.d.ts +29 -0
- package/core/steps/all/core/10-normalize.js +26 -0
- package/core/steps/all/core/20-dataflow.d.ts +27 -0
- package/core/steps/all/core/20-dataflow.js +29 -0
- package/core/steps/all/static-slicing/00-slice.d.ts +28 -0
- package/core/steps/all/static-slicing/00-slice.js +21 -0
- package/core/steps/all/static-slicing/10-reconstruct.d.ts +25 -0
- package/core/steps/all/static-slicing/10-reconstruct.js +21 -0
- package/core/steps/pipeline/create-pipeline.d.ts +6 -0
- package/core/steps/pipeline/create-pipeline.js +130 -0
- package/core/steps/pipeline/default-pipelines.d.ts +251 -0
- package/core/steps/pipeline/default-pipelines.js +18 -0
- package/core/steps/pipeline/invalid-pipeline-error.d.ts +6 -0
- package/core/steps/pipeline/invalid-pipeline-error.js +14 -0
- package/core/steps/pipeline/pipeline.d.ts +60 -0
- package/core/steps/pipeline/pipeline.js +28 -0
- package/core/steps/pipeline-step.d.ts +85 -0
- package/core/steps/pipeline-step.js +8 -0
- package/dataflow/environments/append.d.ts +4 -4
- package/dataflow/environments/append.js +4 -4
- package/dataflow/environments/built-in.d.ts +25 -0
- package/dataflow/environments/built-in.js +123 -0
- package/dataflow/environments/clone.d.ts +2 -0
- package/dataflow/environments/clone.js +23 -0
- package/dataflow/environments/{register.d.ts → define.d.ts} +3 -3
- package/dataflow/environments/define.js +51 -0
- package/dataflow/environments/diff.d.ts +6 -0
- package/dataflow/environments/diff.js +85 -0
- package/dataflow/environments/environment.d.ts +10 -43
- package/dataflow/environments/environment.js +32 -138
- package/dataflow/environments/identifier.d.ts +31 -0
- package/dataflow/environments/identifier.js +3 -0
- package/dataflow/environments/overwrite.d.ts +4 -4
- package/dataflow/environments/overwrite.js +9 -22
- package/dataflow/environments/resolve-by-name.d.ts +7 -6
- package/dataflow/environments/resolve-by-name.js +35 -19
- package/dataflow/environments/scoping.js +1 -4
- package/dataflow/extractor.d.ts +6 -6
- package/dataflow/extractor.js +47 -57
- package/dataflow/graph/diff.d.ts +24 -7
- package/dataflow/graph/diff.js +114 -74
- package/dataflow/graph/edge.d.ts +66 -20
- package/dataflow/graph/edge.js +73 -27
- package/dataflow/graph/graph.d.ts +53 -29
- package/dataflow/graph/graph.js +84 -89
- package/dataflow/graph/quads.js +2 -2
- package/dataflow/graph/vertex.d.ts +37 -34
- package/dataflow/info.d.ts +49 -0
- package/dataflow/info.js +29 -0
- package/dataflow/internal/linker.d.ts +11 -10
- package/dataflow/internal/linker.js +64 -90
- package/dataflow/internal/process/functions/call/argument/make-argument.d.ts +6 -0
- package/dataflow/internal/process/functions/call/argument/make-argument.js +31 -0
- package/dataflow/internal/process/functions/call/argument/unpack-argument.d.ts +3 -0
- package/dataflow/internal/process/functions/call/argument/unpack-argument.js +18 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-access.d.ts +9 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-access.js +82 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.d.ts +29 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-assignment.js +167 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.d.ts +11 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-expression-list.js +165 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-for-loop.js +97 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-function-definition.js +165 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-get.js +36 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-if-then-else.js +100 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-library.js +32 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-logical-bin-op.d.ts +9 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-logical-bin-op.js +35 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-pipe.js +35 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.d.ts +9 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-quote.js +29 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-repeat-loop.js +32 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.d.ts +12 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-replacement.js +45 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-source.d.ts +11 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-source.js +72 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.d.ts +7 -0
- package/dataflow/internal/process/functions/call/built-in/built-in-while-loop.js +61 -0
- package/dataflow/internal/process/functions/call/common.d.ts +35 -0
- package/dataflow/internal/process/functions/call/common.js +70 -0
- package/dataflow/internal/process/functions/call/default-call-handling.d.ts +5 -0
- package/dataflow/internal/process/functions/call/default-call-handling.js +15 -0
- package/dataflow/internal/process/functions/call/known-call-handling.d.ts +26 -0
- package/dataflow/internal/process/functions/call/known-call-handling.js +62 -0
- package/dataflow/internal/process/functions/call/named-call-handling.d.ts +7 -0
- package/dataflow/internal/process/functions/call/named-call-handling.js +53 -0
- package/dataflow/internal/process/functions/call/unnamed-call-handling.d.ts +6 -0
- package/dataflow/internal/process/functions/call/unnamed-call-handling.js +58 -0
- package/dataflow/internal/process/functions/process-argument.d.ts +9 -0
- package/dataflow/internal/process/functions/{argument.js → process-argument.js} +25 -20
- package/dataflow/internal/process/functions/{parameter.d.ts → process-parameter.d.ts} +3 -2
- package/dataflow/internal/process/functions/{parameter.js → process-parameter.js} +10 -13
- package/dataflow/internal/process/process-named-call.d.ts +6 -0
- package/dataflow/internal/process/process-named-call.js +17 -0
- package/dataflow/internal/process/process-symbol.d.ts +5 -0
- package/dataflow/internal/process/process-symbol.js +26 -0
- package/dataflow/internal/process/process-uninteresting-leaf.d.ts +4 -0
- package/dataflow/internal/process/process-uninteresting-leaf.js +9 -0
- package/dataflow/internal/process/process-value.d.ts +4 -0
- package/dataflow/internal/process/process-value.js +22 -0
- package/dataflow/logger.d.ts +1 -0
- package/dataflow/logger.js +6 -0
- package/dataflow/processor.d.ts +18 -13
- package/dataflow/processor.js +1 -1
- package/package.json +48 -85
- package/r-bridge/data/data.d.ts +603 -0
- package/r-bridge/data/data.js +753 -0
- package/r-bridge/data/get.d.ts +19 -0
- package/r-bridge/data/get.js +51 -0
- package/r-bridge/data/print.d.ts +1 -0
- package/r-bridge/data/print.js +58 -0
- package/r-bridge/data/types.d.ts +33 -0
- package/r-bridge/data/types.js +3 -0
- package/r-bridge/init.d.ts +3 -0
- package/r-bridge/init.js +22 -0
- package/r-bridge/lang-4.x/ast/model/collect.d.ts +2 -1
- package/r-bridge/lang-4.x/ast/model/collect.js +2 -2
- package/r-bridge/lang-4.x/ast/model/model.d.ts +26 -5
- package/r-bridge/lang-4.x/ast/model/nodes/r-access.d.ts +4 -3
- package/r-bridge/lang-4.x/ast/model/nodes/r-argument.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-binary-op.d.ts +0 -17
- package/r-bridge/lang-4.x/ast/model/nodes/r-expression-list.d.ts +3 -1
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.d.ts +6 -4
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-call.js +2 -0
- package/r-bridge/lang-4.x/ast/model/nodes/r-function-definition.d.ts +2 -3
- package/r-bridge/lang-4.x/ast/model/nodes/r-number.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/nodes/r-string.d.ts +1 -1
- package/r-bridge/lang-4.x/ast/model/nodes/r-symbol.js +2 -2
- package/r-bridge/lang-4.x/ast/model/nodes/r-unary-op.d.ts +0 -11
- package/r-bridge/lang-4.x/ast/model/operators.d.ts +6 -18
- package/r-bridge/lang-4.x/ast/model/operators.js +36 -48
- package/r-bridge/lang-4.x/ast/model/processing/decorate.d.ts +19 -15
- package/r-bridge/lang-4.x/ast/model/processing/decorate.js +59 -54
- package/r-bridge/lang-4.x/ast/model/processing/node-id.d.ts +8 -0
- package/r-bridge/lang-4.x/ast/model/processing/node-id.js +18 -0
- package/r-bridge/lang-4.x/ast/model/processing/role.d.ts +2 -2
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.d.ts +28 -17
- package/r-bridge/lang-4.x/ast/model/processing/stateful-fold.js +7 -34
- package/r-bridge/lang-4.x/ast/model/processing/visitor.js +5 -2
- package/r-bridge/lang-4.x/ast/model/type.js +13 -6
- package/r-bridge/lang-4.x/ast/parser/json/format.d.ts +4 -1
- package/r-bridge/lang-4.x/ast/parser/json/format.js +9 -2
- package/r-bridge/lang-4.x/ast/parser/json/parser.d.ts +5 -5
- package/r-bridge/lang-4.x/ast/parser/json/parser.js +22 -27
- package/r-bridge/lang-4.x/ast/parser/xml/input-format.d.ts +10 -7
- package/r-bridge/lang-4.x/ast/parser/xml/input-format.js +19 -11
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then-else.d.ts → normalize-if-then-else.d.ts} +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then-else.js → normalize-if-then-else.js} +10 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.d.ts → normalize-if-then.d.ts} +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/{if-then.js → normalize-if-then.js} +9 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/normalize-expression.js +64 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.d.ts → normalize-argument.d.ts} +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{argument.js → normalize-argument.js} +13 -17
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.d.ts → normalize-call.d.ts} +6 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{call.js → normalize-call.js} +24 -29
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/normalize-definition.d.ts +12 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{definition.js → normalize-definition.js} +14 -19
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.d.ts → normalize-parameter.d.ts} +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/{parameter.js → normalize-parameter.js} +12 -16
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-break.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{break.js → normalize-break.js} +6 -8
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-for.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{for.js → normalize-for.js} +18 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-next.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{next.js → normalize-next.js} +6 -8
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-repeat.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{repeat.js → normalize-repeat.js} +13 -16
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/normalize-while.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/{while.js → normalize-while.js} +10 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/{access.d.ts → normalize-access.d.ts} +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/{access.js → normalize-access.js} +44 -45
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.d.ts → normalize-binary.d.ts} +3 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/{binary.js → normalize-binary.js} +23 -73
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/normalize-unary.js +47 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-comment.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/{comment.js → normalize-comment.js} +5 -10
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/normalize-line-directive.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/{line-directive.js → normalize-line-directive.js} +7 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.d.ts +3 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-delimiter.js +15 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.d.ts +10 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-expressions.js +182 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.d.ts +4 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-root.js +34 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.d.ts +13 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/normalize-single-node.js +59 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-number.d.ts +16 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{number.js → normalize-number.js} +12 -18
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/normalize-string.d.ts +11 -0
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{string.js → normalize-string.js} +7 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.d.ts → normalize-symbol.d.ts} +4 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/{symbol.js → normalize-symbol.js} +12 -15
- package/r-bridge/lang-4.x/ast/parser/xml/{internal/meta.d.ts → normalize-meta.d.ts} +5 -3
- package/r-bridge/lang-4.x/ast/parser/xml/{internal/meta.js → normalize-meta.js} +8 -8
- package/r-bridge/lang-4.x/ast/parser/xml/{data.d.ts → normalizer-data.d.ts} +1 -5
- package/r-bridge/lang-4.x/ast/parser/xml/normalizer-data.js +3 -0
- package/r-bridge/lang-4.x/{values.d.ts → convert-values.d.ts} +2 -2
- package/r-bridge/lang-4.x/{values.js → convert-values.js} +5 -5
- package/r-bridge/retriever.d.ts +5 -5
- package/r-bridge/retriever.js +11 -24
- package/r-bridge/shell-executor.d.ts +0 -1
- package/r-bridge/shell-executor.js +7 -12
- package/r-bridge/shell.d.ts +14 -12
- package/r-bridge/shell.js +52 -47
- package/reconstruct/reconstruct.d.ts +4 -2
- package/reconstruct/reconstruct.js +193 -185
- package/slicing/criterion/collect-all.d.ts +4 -3
- package/slicing/criterion/collect-all.js +5 -1
- package/slicing/criterion/filters/all-variables.js +14 -22
- package/slicing/criterion/parse.d.ts +4 -2
- package/slicing/criterion/parse.js +13 -11
- package/slicing/static/fingerprint.d.ts +5 -0
- package/slicing/static/fingerprint.js +17 -0
- package/slicing/static/slice-call.d.ts +10 -0
- package/slicing/static/slice-call.js +86 -0
- package/slicing/static/slicer-types.d.ts +33 -0
- package/slicing/static/slicer-types.js +3 -0
- package/slicing/static/static-slicer.d.ts +6 -24
- package/slicing/static/static-slicer.js +54 -155
- package/slicing/static/visiting-queue.d.ts +23 -0
- package/slicing/static/visiting-queue.js +53 -0
- package/statistics/features/common-syntax-probability.d.ts +29 -0
- package/statistics/features/common-syntax-probability.js +159 -0
- package/statistics/features/feature.d.ts +182 -0
- package/statistics/features/feature.js +39 -0
- package/statistics/features/post-processing.d.ts +12 -0
- package/statistics/features/post-processing.js +21 -0
- package/statistics/features/supported/assignments/assignments.d.ts +12 -0
- package/statistics/features/supported/assignments/assignments.js +55 -0
- package/statistics/features/supported/assignments/post-process.d.ts +3 -0
- package/statistics/features/supported/assignments/post-process.js +124 -0
- package/statistics/features/supported/comments/comments.d.ts +18 -0
- package/statistics/features/supported/comments/comments.js +133 -0
- package/statistics/features/supported/comments/post-process.d.ts +3 -0
- package/statistics/features/supported/comments/post-process.js +49 -0
- package/statistics/features/supported/control-flow/control-flow.d.ts +17 -0
- package/statistics/features/supported/control-flow/control-flow.js +68 -0
- package/statistics/features/supported/control-flow/post-process.d.ts +3 -0
- package/statistics/features/supported/control-flow/post-process.js +64 -0
- package/statistics/features/supported/data-access/data-access.d.ts +15 -0
- package/statistics/features/supported/data-access/data-access.js +120 -0
- package/statistics/features/supported/data-access/post-process.d.ts +3 -0
- package/statistics/features/supported/data-access/post-process.js +106 -0
- package/statistics/features/supported/defined-functions/defined-functions.d.ts +34 -0
- package/statistics/features/supported/defined-functions/defined-functions.js +142 -0
- package/statistics/features/supported/defined-functions/post-process.d.ts +6 -0
- package/statistics/features/supported/defined-functions/post-process.js +169 -0
- package/statistics/features/supported/expression-list/expression-list.d.ts +9 -0
- package/statistics/features/supported/expression-list/expression-list.js +36 -0
- package/statistics/features/supported/expression-list/post-process.d.ts +3 -0
- package/statistics/features/supported/expression-list/post-process.js +43 -0
- package/statistics/features/supported/loops/loops.d.ts +20 -0
- package/statistics/features/supported/loops/loops.js +79 -0
- package/statistics/features/supported/loops/post-process.d.ts +3 -0
- package/statistics/features/supported/loops/post-process.js +71 -0
- package/statistics/features/supported/used-functions/post-process.d.ts +6 -0
- package/statistics/features/supported/used-functions/post-process.js +178 -0
- package/statistics/features/supported/used-functions/used-functions.d.ts +24 -0
- package/statistics/features/supported/used-functions/used-functions.js +97 -0
- package/statistics/features/supported/used-packages/post-process.d.ts +3 -0
- package/statistics/features/supported/used-packages/post-process.js +120 -0
- package/statistics/features/supported/used-packages/used-packages.d.ts +16 -0
- package/statistics/features/supported/used-packages/used-packages.js +130 -0
- package/statistics/features/supported/values/post-process.d.ts +3 -0
- package/statistics/features/supported/values/post-process.js +71 -0
- package/statistics/features/supported/values/values.d.ts +14 -0
- package/statistics/features/supported/values/values.js +101 -0
- package/statistics/features/supported/variables/post-process.d.ts +9 -0
- package/statistics/features/supported/variables/post-process.js +121 -0
- package/statistics/features/supported/variables/variables.d.ts +15 -0
- package/statistics/features/supported/variables/variables.js +60 -0
- package/statistics/meta-statistics.d.ts +33 -0
- package/statistics/meta-statistics.js +17 -0
- package/statistics/output/file-provider.d.ts +37 -0
- package/statistics/output/file-provider.js +97 -0
- package/statistics/output/print-stats.d.ts +17 -0
- package/statistics/output/print-stats.js +69 -0
- package/statistics/output/statistics-file.d.ts +37 -0
- package/statistics/output/statistics-file.js +69 -0
- package/statistics/statistics.d.ts +28 -0
- package/statistics/statistics.js +108 -0
- package/statistics/summarizer/auto-detect.d.ts +2 -0
- package/statistics/summarizer/auto-detect.js +32 -0
- package/statistics/summarizer/first-phase/process.d.ts +6 -0
- package/statistics/summarizer/first-phase/process.js +81 -0
- package/statistics/summarizer/post-process/clusterer.d.ts +26 -0
- package/statistics/summarizer/post-process/clusterer.js +43 -0
- package/statistics/summarizer/post-process/file-based-count.d.ts +17 -0
- package/statistics/summarizer/post-process/file-based-count.js +49 -0
- package/statistics/summarizer/post-process/histogram.d.ts +59 -0
- package/statistics/summarizer/post-process/histogram.js +128 -0
- package/statistics/summarizer/post-process/post-process-output.d.ts +16 -0
- package/statistics/summarizer/post-process/post-process-output.js +105 -0
- package/statistics/summarizer/second-phase/process.d.ts +11 -0
- package/statistics/summarizer/second-phase/process.js +116 -0
- package/statistics/summarizer/summarizer.d.ts +35 -0
- package/statistics/summarizer/summarizer.js +135 -0
- package/util/ansi.d.ts +2 -2
- package/util/ansi.js +2 -2
- package/util/arrays.d.ts +11 -1
- package/util/arrays.js +34 -1
- package/util/assert.d.ts +1 -0
- package/util/assert.js +5 -1
- package/util/cfg/cfg.d.ts +3 -2
- package/util/cfg/cfg.js +17 -28
- package/util/cfg/visitor.d.ts +1 -1
- package/util/defaultmap.d.ts +1 -1
- package/util/defaultmap.js +1 -1
- package/util/diff.d.ts +4 -4
- package/util/files.d.ts +2 -2
- package/util/files.js +1 -1
- package/util/log.d.ts +1 -0
- package/util/log.js +7 -1
- package/util/logic.d.ts +1 -0
- package/util/logic.js +3 -0
- package/util/mermaid/ast.d.ts +1 -1
- package/util/mermaid/ast.js +2 -2
- package/util/mermaid/cfg.d.ts +1 -1
- package/util/mermaid/dfg.d.ts +34 -8
- package/util/mermaid/dfg.js +99 -70
- package/util/mermaid/mermaid.d.ts +1 -1
- package/util/mermaid/mermaid.js +6 -7
- package/util/objects.js +4 -0
- package/util/quads.d.ts +3 -3
- package/util/quads.js +0 -1
- package/util/range.d.ts +27 -14
- package/util/range.js +31 -27
- package/util/version.js +1 -1
- package/core/index.d.ts +0 -4
- package/core/index.js +0 -23
- package/core/input.d.ts +0 -42
- package/core/output.d.ts +0 -15
- package/core/slicer.d.ts +0 -124
- package/core/slicer.js +0 -227
- package/core/steps.d.ts +0 -508
- package/core/steps.js +0 -100
- package/dataflow/environments/index.d.ts +0 -7
- package/dataflow/environments/index.js +0 -23
- package/dataflow/environments/register.js +0 -40
- package/dataflow/environments/scopes.d.ts +0 -6
- package/dataflow/environments/scopes.js +0 -6
- package/dataflow/graph/index.d.ts +0 -4
- package/dataflow/graph/index.js +0 -21
- package/dataflow/index.d.ts +0 -5
- package/dataflow/index.js +0 -24
- package/dataflow/internal/info.d.ts +0 -21
- package/dataflow/internal/info.js +0 -16
- package/dataflow/internal/process/access.d.ts +0 -4
- package/dataflow/internal/process/access.js +0 -53
- package/dataflow/internal/process/expression-list.d.ts +0 -8
- package/dataflow/internal/process/expression-list.js +0 -144
- package/dataflow/internal/process/functions/argument.d.ts +0 -8
- package/dataflow/internal/process/functions/exit-points.d.ts +0 -2
- package/dataflow/internal/process/functions/exit-points.js +0 -121
- package/dataflow/internal/process/functions/function-call.d.ts +0 -5
- package/dataflow/internal/process/functions/function-call.js +0 -105
- package/dataflow/internal/process/functions/function-definition.d.ts +0 -4
- package/dataflow/internal/process/functions/function-definition.js +0 -176
- package/dataflow/internal/process/functions/source.d.ts +0 -8
- package/dataflow/internal/process/functions/source.js +0 -81
- package/dataflow/internal/process/if-then-else.d.ts +0 -4
- package/dataflow/internal/process/if-then-else.js +0 -56
- package/dataflow/internal/process/loops/for-loop.d.ts +0 -4
- package/dataflow/internal/process/loops/for-loop.js +0 -54
- package/dataflow/internal/process/loops/repeat-loop.d.ts +0 -4
- package/dataflow/internal/process/loops/repeat-loop.js +0 -21
- package/dataflow/internal/process/loops/while-loop.d.ts +0 -4
- package/dataflow/internal/process/loops/while-loop.js +0 -31
- package/dataflow/internal/process/operators/assignment.d.ts +0 -4
- package/dataflow/internal/process/operators/assignment.js +0 -129
- package/dataflow/internal/process/operators/non-assignment-binary-op.d.ts +0 -4
- package/dataflow/internal/process/operators/non-assignment-binary-op.js +0 -25
- package/dataflow/internal/process/operators/pipe.d.ts +0 -4
- package/dataflow/internal/process/operators/pipe.js +0 -46
- package/dataflow/internal/process/operators/unary-op.d.ts +0 -4
- package/dataflow/internal/process/operators/unary-op.js +0 -10
- package/dataflow/internal/process/symbol.d.ts +0 -4
- package/dataflow/internal/process/symbol.js +0 -21
- package/dataflow/internal/process/uninteresting-leaf.d.ts +0 -3
- package/dataflow/internal/process/uninteresting-leaf.js +0 -9
- package/index.d.ts +0 -4
- package/index.js +0 -21
- package/r-bridge/index.d.ts +0 -11
- package/r-bridge/index.js +0 -28
- package/r-bridge/lang-4.x/ast/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/index.js +0 -22
- package/r-bridge/lang-4.x/ast/model/index.d.ts +0 -6
- package/r-bridge/lang-4.x/ast/model/index.js +0 -23
- package/r-bridge/lang-4.x/ast/model/nodes/index.d.ts +0 -21
- package/r-bridge/lang-4.x/ast/model/nodes/index.js +0 -38
- package/r-bridge/lang-4.x/ast/model/nodes/info/index.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/model/nodes/info/index.js +0 -27
- package/r-bridge/lang-4.x/ast/model/processing/index.d.ts +0 -5
- package/r-bridge/lang-4.x/ast/model/processing/index.js +0 -22
- package/r-bridge/lang-4.x/ast/parser/xml/hooks.d.ts +0 -292
- package/r-bridge/lang-4.x/ast/parser/xml/hooks.js +0 -136
- package/r-bridge/lang-4.x/ast/parser/xml/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/parser/xml/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/xml/internal/control/index.js +0 -19
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.d.ts +0 -10
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/expression.js +0 -65
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/xml/internal/expression/index.js +0 -18
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/definition.d.ts +0 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.d.ts +0 -2
- package/r-bridge/lang-4.x/ast/parser/xml/internal/functions/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/index.d.ts +0 -9
- package/r-bridge/lang-4.x/ast/parser/xml/internal/index.js +0 -26
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/break.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/for.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.d.ts +0 -5
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/index.js +0 -22
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/next.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/repeat.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/loops/while.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.d.ts +0 -6
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/special.js +0 -24
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/operators/unary.js +0 -59
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/comment.d.ts +0 -11
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.d.ts +0 -1
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/index.js +0 -18
- package/r-bridge/lang-4.x/ast/parser/xml/internal/other/line-directive.d.ts +0 -12
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.d.ts +0 -10
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/elements.js +0 -159
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.d.ts +0 -4
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/root.js +0 -33
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/structure/single-element.js +0 -64
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.d.ts +0 -3
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/index.js +0 -20
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/number.d.ts +0 -13
- package/r-bridge/lang-4.x/ast/parser/xml/internal/values/string.d.ts +0 -11
- package/r-bridge/lang-4.x/index.d.ts +0 -2
- package/r-bridge/lang-4.x/index.js +0 -19
- package/slicing/criterion/filters/index.d.ts +0 -1
- package/slicing/criterion/filters/index.js +0 -18
- package/slicing/criterion/index.d.ts +0 -3
- package/slicing/criterion/index.js +0 -20
- package/slicing/index.d.ts +0 -3
- package/slicing/index.js +0 -20
- package/slicing/static/index.d.ts +0 -1
- package/slicing/static/index.js +0 -18
- package/util/mermaid/index.d.ts +0 -3
- package/util/mermaid/index.js +0 -20
- /package/{r-bridge/lang-4.x/ast/parser/xml → benchmark/summarizer}/data.js +0 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defines the {@link IPipelineStep} interface which specifies all data available for a single step.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { MergeableRecord } from '../../util/objects';
|
|
7
|
+
import type { InternalStepPrinter, IPipelineStepPrinter, StepOutputFormat } from '../print/print';
|
|
8
|
+
/**
|
|
9
|
+
* This represents the format of a step processor which retrieves two things:
|
|
10
|
+
*
|
|
11
|
+
* 1) the input configuration as passed to the {@link PipelineExecutor}.
|
|
12
|
+
* 2) the output produced by the previous steps.
|
|
13
|
+
*
|
|
14
|
+
* Please be aware, that if the respective information is available is not ensured by the type system but rather
|
|
15
|
+
* ensured at runtime by your dependencies. If you want to make sure, that the information is present,
|
|
16
|
+
* list all steps that you require as your {@link IPipelineStepOrder#dependencies|dependencies}, even if they would be
|
|
17
|
+
* already covered transitively.
|
|
18
|
+
*/
|
|
19
|
+
export type StepProcessingFunction = (results: Record<string, unknown>, input: Record<string, unknown>) => unknown;
|
|
20
|
+
/**
|
|
21
|
+
* This represents the required execution frequency of a step.
|
|
22
|
+
*/
|
|
23
|
+
export declare const enum PipelineStepStage {
|
|
24
|
+
/** This step has to be executed once per file */
|
|
25
|
+
OncePerFile = 0,
|
|
26
|
+
/** This step has to be executed once per request (e.g., slice for a given variable) */
|
|
27
|
+
OncePerRequest = 1
|
|
28
|
+
}
|
|
29
|
+
/** Name of a single {@link IPipelineStep|step} in a pipeline (branded to avoid type-mishaps). */
|
|
30
|
+
export type PipelineStepName = string & {
|
|
31
|
+
__brand?: 'StepName';
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Contains the data to specify the order of {@link IPipelineStep|steps} in a pipeline.
|
|
35
|
+
*/
|
|
36
|
+
export interface IPipelineStepOrder<Name extends PipelineStepName = PipelineStepName> {
|
|
37
|
+
/**
|
|
38
|
+
* Name of the respective step, it does not have to be unique in general but only unique per-pipeline.
|
|
39
|
+
* In other words, you can have multiple steps with a name like `parse` as long as you use only one of them in a given pipeline.
|
|
40
|
+
* This is, because these names are required in the {@link IPipelineStep#dependencies} field to refer to other steps this one relies on.
|
|
41
|
+
*/
|
|
42
|
+
readonly name: Name;
|
|
43
|
+
/**
|
|
44
|
+
* Give the names of other steps this one requires to be completed as a prerequisite (e.g., to gain access to their input).
|
|
45
|
+
* Does not have to be transitive, this will be checked by the scheduler of the pipeline.
|
|
46
|
+
*/
|
|
47
|
+
readonly dependencies: readonly PipelineStepName[];
|
|
48
|
+
readonly executed: PipelineStepStage;
|
|
49
|
+
/**
|
|
50
|
+
* This is similar to {@link dependencies}, but is used to say that a given step _decorates_ another one.
|
|
51
|
+
* This imbues two requirements:
|
|
52
|
+
* The step must take the output of the decorated step as input, and produce the same output as the decorated step.
|
|
53
|
+
*
|
|
54
|
+
* If so, it is ensured that _this_ step is executed _after_ the step it decorates, but before any step that depends on it.
|
|
55
|
+
*/
|
|
56
|
+
readonly decorates?: PipelineStepName;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Defines what is to be known of a single step in a pipeline.
|
|
60
|
+
* It wraps around a single {@link IPipelineStep#processor|processor} function, providing additional information.
|
|
61
|
+
* Steps will be executed synchronously, in-sequence, based on their {@link IPipelineStep#dependencies|dependencies}.
|
|
62
|
+
*/
|
|
63
|
+
export interface IPipelineStep<Name extends PipelineStepName = PipelineStepName, Fn extends StepProcessingFunction = (...args: any[]) => any> extends MergeableRecord, IPipelineStepOrder<Name> {
|
|
64
|
+
/** Human-readable name of this step */
|
|
65
|
+
readonly humanReadableName: string;
|
|
66
|
+
/** Human-readable description of this step */
|
|
67
|
+
readonly description: string;
|
|
68
|
+
/** The main processor that essentially performs the logic of this step */
|
|
69
|
+
readonly processor: (...input: Parameters<Fn>) => ReturnType<Fn>;
|
|
70
|
+
/**
|
|
71
|
+
* How to visualize the results of the respective step to the user?
|
|
72
|
+
*/
|
|
73
|
+
readonly printer: {
|
|
74
|
+
[K in StepOutputFormat]?: IPipelineStepPrinter<Fn, K, never[]>;
|
|
75
|
+
} & {
|
|
76
|
+
[StepOutputFormat.Internal]: InternalStepPrinter<Fn>;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Input configuration required to perform the respective steps.
|
|
80
|
+
* Required inputs of dependencies do not have to, but can be repeated.
|
|
81
|
+
* <p>
|
|
82
|
+
* Use the pattern `undefined as unknown as T` to indicate that the value is required but not provided.
|
|
83
|
+
*/
|
|
84
|
+
readonly requiredInput: object;
|
|
85
|
+
}
|
|
@@ -2,7 +2,7 @@ import type { REnvironmentInformation } from './environment';
|
|
|
2
2
|
/**
|
|
3
3
|
* Adds all writes of `next` to `base` (i.e., the operations of `next` *might* happen).
|
|
4
4
|
*/
|
|
5
|
-
export declare function
|
|
6
|
-
export declare function
|
|
7
|
-
export declare function
|
|
8
|
-
export declare function
|
|
5
|
+
export declare function appendEnvironment(base: REnvironmentInformation, next: REnvironmentInformation | undefined): REnvironmentInformation;
|
|
6
|
+
export declare function appendEnvironment(base: REnvironmentInformation | undefined, next: REnvironmentInformation): REnvironmentInformation;
|
|
7
|
+
export declare function appendEnvironment(base: undefined, next: undefined): undefined;
|
|
8
|
+
export declare function appendEnvironment(base: REnvironmentInformation | undefined, next: REnvironmentInformation | undefined): REnvironmentInformation | undefined;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.appendEnvironment = void 0;
|
|
4
4
|
const assert_1 = require("../../util/assert");
|
|
5
5
|
const environment_1 = require("./environment");
|
|
6
6
|
function uniqueMergeValues(old, value) {
|
|
@@ -26,12 +26,12 @@ function appendIEnvironmentWith(base, next) {
|
|
|
26
26
|
map.set(key, value);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
const parent = base.parent ===
|
|
29
|
+
const parent = base.parent === environment_1.BuiltInEnvironment ? environment_1.BuiltInEnvironment : appendIEnvironmentWith(base.parent, next.parent);
|
|
30
30
|
const out = new environment_1.Environment(base.name, parent);
|
|
31
31
|
out.memory = map;
|
|
32
32
|
return out;
|
|
33
33
|
}
|
|
34
|
-
function
|
|
34
|
+
function appendEnvironment(base, next) {
|
|
35
35
|
if (base === undefined) {
|
|
36
36
|
return next;
|
|
37
37
|
}
|
|
@@ -44,5 +44,5 @@ function appendEnvironments(base, next) {
|
|
|
44
44
|
level: base.level,
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
|
-
exports.
|
|
47
|
+
exports.appendEnvironment = appendEnvironment;
|
|
48
48
|
//# sourceMappingURL=append.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { DataflowProcessorInformation } from '../processor';
|
|
2
|
+
import type { DataflowInformation } from '../info';
|
|
3
|
+
import type { Identifier, IdentifierDefinition, IdentifierReference } from './identifier';
|
|
4
|
+
import type { ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
5
|
+
import type { RFunctionArgument } from '../../r-bridge/lang-4.x/ast/model/nodes/r-function-call';
|
|
6
|
+
import type { RSymbol } from '../../r-bridge/lang-4.x/ast/model/nodes/r-symbol';
|
|
7
|
+
import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
8
|
+
export declare const BuiltIn = "built-in";
|
|
9
|
+
export type BuiltInIdentifierProcessor = <OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>) => DataflowInformation;
|
|
10
|
+
export type BuiltInIdentifierProcessorWithConfig<Config> = <OtherInfo>(name: RSymbol<OtherInfo & ParentInformation>, args: readonly RFunctionArgument<OtherInfo & ParentInformation>[], rootId: NodeId, data: DataflowProcessorInformation<OtherInfo & ParentInformation>, config: Config) => DataflowInformation;
|
|
11
|
+
export interface BuiltInIdentifierDefinition extends IdentifierReference {
|
|
12
|
+
kind: 'built-in-function';
|
|
13
|
+
definedAt: typeof BuiltIn;
|
|
14
|
+
processor: BuiltInIdentifierProcessor;
|
|
15
|
+
}
|
|
16
|
+
export interface BuiltInIdentifierConstant<T = unknown> extends IdentifierReference {
|
|
17
|
+
kind: 'built-in-value';
|
|
18
|
+
definedAt: typeof BuiltIn;
|
|
19
|
+
value: T;
|
|
20
|
+
}
|
|
21
|
+
export declare function registerBuiltInFunctions<Config, Proc extends BuiltInIdentifierProcessorWithConfig<Config>>(names: readonly Identifier[], processor: Proc, config: Config): void;
|
|
22
|
+
export declare function registerReplacementFunctions(standardConfig: {
|
|
23
|
+
makeMaybe?: boolean;
|
|
24
|
+
}, assignments: readonly ('<-' | '<<-')[], ...prefixes: readonly Identifier[]): void;
|
|
25
|
+
export declare const BuiltInMemory: Map<Identifier, IdentifierDefinition[]>;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BuiltInMemory = exports.registerReplacementFunctions = exports.registerBuiltInFunctions = exports.BuiltIn = void 0;
|
|
4
|
+
const known_call_handling_1 = require("../internal/process/functions/call/known-call-handling");
|
|
5
|
+
const built_in_source_1 = require("../internal/process/functions/call/built-in/built-in-source");
|
|
6
|
+
const built_in_access_1 = require("../internal/process/functions/call/built-in/built-in-access");
|
|
7
|
+
const built_in_if_then_else_1 = require("../internal/process/functions/call/built-in/built-in-if-then-else");
|
|
8
|
+
const built_in_assignment_1 = require("../internal/process/functions/call/built-in/built-in-assignment");
|
|
9
|
+
const built_in_logical_bin_op_1 = require("../internal/process/functions/call/built-in/built-in-logical-bin-op");
|
|
10
|
+
const built_in_pipe_1 = require("../internal/process/functions/call/built-in/built-in-pipe");
|
|
11
|
+
const built_in_for_loop_1 = require("../internal/process/functions/call/built-in/built-in-for-loop");
|
|
12
|
+
const built_in_repeat_loop_1 = require("../internal/process/functions/call/built-in/built-in-repeat-loop");
|
|
13
|
+
const built_in_while_loop_1 = require("../internal/process/functions/call/built-in/built-in-while-loop");
|
|
14
|
+
const assert_1 = require("../../util/assert");
|
|
15
|
+
const built_in_replacement_1 = require("../internal/process/functions/call/built-in/built-in-replacement");
|
|
16
|
+
const built_in_quote_1 = require("../internal/process/functions/call/built-in/built-in-quote");
|
|
17
|
+
const built_in_function_definition_1 = require("../internal/process/functions/call/built-in/built-in-function-definition");
|
|
18
|
+
const built_in_expression_list_1 = require("../internal/process/functions/call/built-in/built-in-expression-list");
|
|
19
|
+
const built_in_get_1 = require("../internal/process/functions/call/built-in/built-in-get");
|
|
20
|
+
const built_in_library_1 = require("../internal/process/functions/call/built-in/built-in-library");
|
|
21
|
+
exports.BuiltIn = 'built-in';
|
|
22
|
+
function defaultBuiltInProcessor(name, args, rootId, data, config) {
|
|
23
|
+
const { information: res, processedArguments } = (0, known_call_handling_1.processKnownFunctionCall)({ name, args, rootId, data });
|
|
24
|
+
if (config.returnsNthArgument !== undefined) {
|
|
25
|
+
const arg = config.returnsNthArgument === 'last' ? processedArguments[args.length - 1] : processedArguments[config.returnsNthArgument];
|
|
26
|
+
if (arg !== undefined) {
|
|
27
|
+
res.graph.addEdge(rootId, arg.entryPoint, { type: 8 /* EdgeType.Returns */ });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (config.readAllArguments) {
|
|
31
|
+
for (const arg of processedArguments) {
|
|
32
|
+
if (arg) {
|
|
33
|
+
res.graph.addEdge(rootId, arg.entryPoint, { type: 1 /* EdgeType.Reads */ });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (config.cfg !== undefined) {
|
|
38
|
+
res.exitPoints = [...res.exitPoints, { type: config.cfg, nodeId: rootId, controlDependencies: data.controlDependencies }];
|
|
39
|
+
}
|
|
40
|
+
return res;
|
|
41
|
+
}
|
|
42
|
+
function registerBuiltInFunctions(names, processor, config) {
|
|
43
|
+
for (const name of names) {
|
|
44
|
+
(0, assert_1.guard)(!exports.BuiltInMemory.has(name), `Built-in ${name} already defined`);
|
|
45
|
+
exports.BuiltInMemory.set(name, [{
|
|
46
|
+
kind: 'built-in-function',
|
|
47
|
+
definedAt: exports.BuiltIn,
|
|
48
|
+
controlDependencies: undefined,
|
|
49
|
+
processor: (name, args, rootId, data) => processor(name, args, rootId, data, config),
|
|
50
|
+
name,
|
|
51
|
+
nodeId: exports.BuiltIn
|
|
52
|
+
}]);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.registerBuiltInFunctions = registerBuiltInFunctions;
|
|
56
|
+
/* registers all combinations of replacements */
|
|
57
|
+
function registerReplacementFunctions(standardConfig, assignments, ...prefixes) {
|
|
58
|
+
for (const assignment of assignments) {
|
|
59
|
+
for (const prefix of prefixes) {
|
|
60
|
+
const effectiveName = `${prefix}${assignment}`;
|
|
61
|
+
(0, assert_1.guard)(!exports.BuiltInMemory.has(effectiveName), `Built-in ${effectiveName} already defined`);
|
|
62
|
+
exports.BuiltInMemory.set(effectiveName, [{
|
|
63
|
+
kind: 'built-in-function',
|
|
64
|
+
definedAt: exports.BuiltIn,
|
|
65
|
+
processor: (name, args, rootId, data) => (0, built_in_replacement_1.processReplacementFunction)(name, args, rootId, data, { ...standardConfig, assignmentOperator: assignment }),
|
|
66
|
+
name: effectiveName,
|
|
67
|
+
controlDependencies: undefined,
|
|
68
|
+
nodeId: exports.BuiltIn
|
|
69
|
+
}]);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.registerReplacementFunctions = registerReplacementFunctions;
|
|
74
|
+
function registerSimpleFunctions(...names) {
|
|
75
|
+
registerBuiltInFunctions(names, defaultBuiltInProcessor, { readAllArguments: true });
|
|
76
|
+
}
|
|
77
|
+
function registerBuiltInConstant(name, value) {
|
|
78
|
+
(0, assert_1.guard)(!exports.BuiltInMemory.has(name), `Built-in ${name} already defined`);
|
|
79
|
+
exports.BuiltInMemory.set(name, [{
|
|
80
|
+
kind: 'built-in-value',
|
|
81
|
+
definedAt: exports.BuiltIn,
|
|
82
|
+
controlDependencies: undefined,
|
|
83
|
+
value,
|
|
84
|
+
name,
|
|
85
|
+
nodeId: exports.BuiltIn
|
|
86
|
+
}]);
|
|
87
|
+
}
|
|
88
|
+
exports.BuiltInMemory = new Map();
|
|
89
|
+
registerBuiltInConstant('NULL', null);
|
|
90
|
+
registerBuiltInConstant('NA', null);
|
|
91
|
+
registerBuiltInConstant('TRUE', true);
|
|
92
|
+
registerBuiltInConstant('T', true);
|
|
93
|
+
registerBuiltInConstant('FALSE', false);
|
|
94
|
+
registerBuiltInConstant('F', false);
|
|
95
|
+
registerSimpleFunctions('~', '+', '-', '*', '/', '^', '!', '?', '**', '==', '!=', '>', '<', '>=', '<=', '%%', '%/%', '%*%', ':', 'list');
|
|
96
|
+
registerBuiltInFunctions(['cat', 'switch'], defaultBuiltInProcessor, {}); /* returns null */
|
|
97
|
+
registerBuiltInFunctions(['print', '('], defaultBuiltInProcessor, { returnsNthArgument: 0 });
|
|
98
|
+
registerBuiltInFunctions(['return'], defaultBuiltInProcessor, { returnsNthArgument: 0, cfg: 1 /* ExitPointType.Return */ });
|
|
99
|
+
registerBuiltInFunctions(['break'], defaultBuiltInProcessor, { cfg: 2 /* ExitPointType.Break */ });
|
|
100
|
+
registerBuiltInFunctions(['next'], defaultBuiltInProcessor, { cfg: 3 /* ExitPointType.Next */ });
|
|
101
|
+
registerBuiltInFunctions(['{'], built_in_expression_list_1.processExpressionList, {});
|
|
102
|
+
registerBuiltInFunctions(['source'], built_in_source_1.processSourceCall, {});
|
|
103
|
+
registerBuiltInFunctions(['[', '[['], built_in_access_1.processAccess, { treatIndicesAsString: false });
|
|
104
|
+
registerBuiltInFunctions(['$', '@'], built_in_access_1.processAccess, { treatIndicesAsString: true });
|
|
105
|
+
registerBuiltInFunctions(['if'], built_in_if_then_else_1.processIfThenElse, {});
|
|
106
|
+
registerBuiltInFunctions(['get'], built_in_get_1.processGet, {});
|
|
107
|
+
registerBuiltInFunctions(['library'], built_in_library_1.processLibrary, {});
|
|
108
|
+
registerBuiltInFunctions(['<-', '='], built_in_assignment_1.processAssignment, { canBeReplacement: true });
|
|
109
|
+
registerBuiltInFunctions([':=', 'assign'], built_in_assignment_1.processAssignment, {});
|
|
110
|
+
registerBuiltInFunctions(['delayedAssign'], built_in_assignment_1.processAssignment, { quoteSource: true });
|
|
111
|
+
registerBuiltInFunctions(['<<-'], built_in_assignment_1.processAssignment, { superAssignment: true, canBeReplacement: true });
|
|
112
|
+
registerBuiltInFunctions(['->'], built_in_assignment_1.processAssignment, { swapSourceAndTarget: true, canBeReplacement: true });
|
|
113
|
+
registerBuiltInFunctions(['->>'], built_in_assignment_1.processAssignment, { superAssignment: true, swapSourceAndTarget: true, canBeReplacement: true });
|
|
114
|
+
registerBuiltInFunctions(['&&', '||', '&', '|'], built_in_logical_bin_op_1.processSpecialBinOp, { lazy: true });
|
|
115
|
+
registerBuiltInFunctions(['|>', '%>%'], built_in_pipe_1.processPipe, {});
|
|
116
|
+
registerBuiltInFunctions(['function', '\\'], built_in_function_definition_1.processFunctionDefinition, {});
|
|
117
|
+
registerBuiltInFunctions(['quote', 'substitute', 'bquote'], built_in_quote_1.processQuote, { quoteArgumentsWithIndex: 0 });
|
|
118
|
+
registerBuiltInFunctions(['for'], built_in_for_loop_1.processForLoop, {});
|
|
119
|
+
registerBuiltInFunctions(['repeat'], built_in_repeat_loop_1.processRepeatLoop, {});
|
|
120
|
+
registerBuiltInFunctions(['while'], built_in_while_loop_1.processWhileLoop, {});
|
|
121
|
+
/* they are all mapped to `<-` but we separate super assignments */
|
|
122
|
+
registerReplacementFunctions({ makeMaybe: true }, ['<-', '<<-'], '[', '[[', '$', '@', 'names', 'dimnames', 'attributes', 'attr', 'class', 'levels', 'rownames', 'colnames');
|
|
123
|
+
//# sourceMappingURL=built-in.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cloneEnvironmentInformation = void 0;
|
|
4
|
+
const environment_1 = require("./environment");
|
|
5
|
+
function cloneEnvironment(environment, recurseParents) {
|
|
6
|
+
if (environment === undefined) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
else if (environment.id === environment_1.BuiltInEnvironment.id) {
|
|
10
|
+
return environment_1.BuiltInEnvironment;
|
|
11
|
+
}
|
|
12
|
+
const clone = new environment_1.Environment(environment.name, recurseParents ? cloneEnvironment(environment.parent, recurseParents) : environment.parent);
|
|
13
|
+
clone.memory = new Map(JSON.parse(JSON.stringify([...environment.memory])));
|
|
14
|
+
return clone;
|
|
15
|
+
}
|
|
16
|
+
function cloneEnvironmentInformation(environment, recurseParents = true) {
|
|
17
|
+
return {
|
|
18
|
+
current: cloneEnvironment(environment.current, recurseParents),
|
|
19
|
+
level: environment.level
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
exports.cloneEnvironmentInformation = cloneEnvironmentInformation;
|
|
23
|
+
//# sourceMappingURL=clone.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { REnvironmentInformation } from './environment';
|
|
2
|
+
import type { IdentifierDefinition } from './identifier';
|
|
3
3
|
/**
|
|
4
4
|
* Insert the given `definition` --- defined within the given scope --- into the passed along `environments` will take care of propagation.
|
|
5
5
|
* Does not modify the passed along `environments` in-place! It returns the new reference.
|
|
6
6
|
*/
|
|
7
|
-
export declare function define(definition: IdentifierDefinition,
|
|
7
|
+
export declare function define(definition: IdentifierDefinition, superAssign: boolean | undefined, environment: REnvironmentInformation): REnvironmentInformation;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.define = void 0;
|
|
4
|
+
const assert_1 = require("../../util/assert");
|
|
5
|
+
const environment_1 = require("./environment");
|
|
6
|
+
const clone_1 = require("./clone");
|
|
7
|
+
function defInEnv(newEnvironments, name, definition) {
|
|
8
|
+
const existing = newEnvironments.memory.get(name);
|
|
9
|
+
// check if it is maybe or not
|
|
10
|
+
if (existing === undefined || definition.controlDependencies === undefined) {
|
|
11
|
+
newEnvironments.memory.set(name, [definition]);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
existing.push(definition);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Insert the given `definition` --- defined within the given scope --- into the passed along `environments` will take care of propagation.
|
|
19
|
+
* Does not modify the passed along `environments` in-place! It returns the new reference.
|
|
20
|
+
*/
|
|
21
|
+
function define(definition, superAssign, environment) {
|
|
22
|
+
const name = definition.name;
|
|
23
|
+
(0, assert_1.guard)(name !== undefined, () => `Name must be defined, but isn't for ${JSON.stringify(definition)}`);
|
|
24
|
+
let newEnvironment;
|
|
25
|
+
if (superAssign) {
|
|
26
|
+
newEnvironment = (0, clone_1.cloneEnvironmentInformation)(environment, true);
|
|
27
|
+
let current = newEnvironment.current;
|
|
28
|
+
let last = undefined;
|
|
29
|
+
let found = false;
|
|
30
|
+
do {
|
|
31
|
+
if (current.memory.has(name)) {
|
|
32
|
+
current.memory.set(name, [definition]);
|
|
33
|
+
found = true;
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
last = current;
|
|
37
|
+
current = current.parent;
|
|
38
|
+
} while (current.id !== environment_1.BuiltInEnvironment.id);
|
|
39
|
+
if (!found) {
|
|
40
|
+
(0, assert_1.guard)(last !== undefined, () => `Could not find global scope for ${name}`);
|
|
41
|
+
last.memory.set(name, [definition]);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
newEnvironment = (0, clone_1.cloneEnvironmentInformation)(environment, false);
|
|
46
|
+
defInEnv(newEnvironment.current, name, definition);
|
|
47
|
+
}
|
|
48
|
+
return newEnvironment;
|
|
49
|
+
}
|
|
50
|
+
exports.define = define;
|
|
51
|
+
//# sourceMappingURL=define.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { GenericDifferenceInformation, WriteableDifferenceReport } from '../../util/diff';
|
|
2
|
+
import type { IEnvironment, REnvironmentInformation } from './environment';
|
|
3
|
+
import type { IdentifierReference } from './identifier';
|
|
4
|
+
export declare function diffIdentifierReferences<Report extends WriteableDifferenceReport>(a: IdentifierReference | undefined, b: IdentifierReference | undefined, info: GenericDifferenceInformation<Report>): void;
|
|
5
|
+
export declare function diffEnvironment<Report extends WriteableDifferenceReport>(a: IEnvironment | undefined, b: IEnvironment | undefined, info: GenericDifferenceInformation<Report>): void;
|
|
6
|
+
export declare function diffEnvironmentInformation<Report extends WriteableDifferenceReport>(a: REnvironmentInformation | undefined, b: REnvironmentInformation | undefined, info: GenericDifferenceInformation<Report>): void;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.diffEnvironmentInformation = exports.diffEnvironment = exports.diffIdentifierReferences = void 0;
|
|
4
|
+
const diff_1 = require("../../util/diff");
|
|
5
|
+
const json_1 = require("../../util/json");
|
|
6
|
+
const arrays_1 = require("../../util/arrays");
|
|
7
|
+
function diffIdentifierReferences(a, b, info) {
|
|
8
|
+
if (a === undefined || b === undefined) {
|
|
9
|
+
if (a !== b) {
|
|
10
|
+
info.report.addComment(`${info.position}Different identifier references: ${info.leftname}: ${JSON.stringify(a, json_1.jsonReplacer)} vs. ${info.rightname}: ${JSON.stringify(b, json_1.jsonReplacer)}`);
|
|
11
|
+
}
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (a.name !== b.name) {
|
|
15
|
+
info.report.addComment(`${info.position}Different identifier names: ${info.leftname}: ${a.name} vs. ${info.rightname}: ${b.name}`);
|
|
16
|
+
}
|
|
17
|
+
if (a.nodeId !== b.nodeId) {
|
|
18
|
+
info.report.addComment(`${info.position}Different nodeIds: ${info.leftname}: ${a.nodeId} vs. ${info.rightname}: ${b.nodeId}`);
|
|
19
|
+
}
|
|
20
|
+
if (!(0, arrays_1.arrayEqual)(a.controlDependencies, b.controlDependencies)) {
|
|
21
|
+
info.report.addComment(`${info.position}Different control dependency: ${info.leftname}: ${JSON.stringify(a.controlDependencies)} vs. ${info.rightname}: ${JSON.stringify(b.controlDependencies)}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.diffIdentifierReferences = diffIdentifierReferences;
|
|
25
|
+
function diffMemory(a, b, info) {
|
|
26
|
+
for (const [key, value] of a.memory) {
|
|
27
|
+
const value2 = b.memory.get(key);
|
|
28
|
+
if (value2 === undefined || value.length !== value2.length) {
|
|
29
|
+
info.report.addComment(`${info.position}Different definitions for ${key}. ${info.leftname}: ${JSON.stringify(value, json_1.jsonReplacer)} vs. ${info.rightname}: ${JSON.stringify(value2, json_1.jsonReplacer)}`);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
// we sort both value arrays by their id so that we have no problems with differently ordered arrays (which have no impact)
|
|
33
|
+
const sorted = [...value].sort((a, b) => String(a.nodeId).localeCompare(String(b.nodeId)));
|
|
34
|
+
const sorted2 = [...value2].sort((a, b) => String(a.nodeId).localeCompare(String(b.nodeId)));
|
|
35
|
+
for (let i = 0; i < value.length; ++i) {
|
|
36
|
+
const aVal = sorted[i];
|
|
37
|
+
const bVal = sorted2[i];
|
|
38
|
+
if (aVal.name !== bVal.name) {
|
|
39
|
+
info.report.addComment(`${info.position}Different names for ${key}. ${info.leftname}: ${aVal.name} vs. ${info.rightname}: ${bVal.name}`);
|
|
40
|
+
}
|
|
41
|
+
if (aVal.nodeId !== bVal.nodeId) {
|
|
42
|
+
info.report.addComment(`${info.position}Different ids for ${key}. ${info.leftname}: ${aVal.nodeId} vs. ${info.rightname}: ${bVal.nodeId}`);
|
|
43
|
+
}
|
|
44
|
+
if (!(0, arrays_1.arrayEqual)(aVal.controlDependencies, bVal.controlDependencies)) {
|
|
45
|
+
info.report.addComment(`${info.position}Different controlDependency for ${key} (${aVal.nodeId}). ${info.leftname}: ${JSON.stringify(aVal.controlDependencies)} vs. ${info.rightname}: ${JSON.stringify(bVal.controlDependencies)}`);
|
|
46
|
+
}
|
|
47
|
+
if (aVal.definedAt !== bVal.definedAt) {
|
|
48
|
+
info.report.addComment(`${info.position}Different definition ids (definedAt) for ${key} (${aVal.nodeId}). ${info.leftname}: ${aVal.definedAt} vs. ${info.rightname}: ${bVal.definedAt}`);
|
|
49
|
+
}
|
|
50
|
+
if (aVal.kind !== bVal.kind) {
|
|
51
|
+
info.report.addComment(`${info.position}Different kinds for ${key} (${aVal.nodeId}). ${info.leftname}: ${aVal.kind} vs. ${info.rightname}: ${bVal.kind}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function diffEnvironment(a, b, info) {
|
|
57
|
+
if (a === undefined || b === undefined) {
|
|
58
|
+
if (a !== b) {
|
|
59
|
+
info.report.addComment(`${info.position}Different environments. ${info.leftname}: ${a !== undefined ? 'present' : 'undefined'} vs. ${info.rightname}: ${b !== undefined ? 'present' : 'undefined'}`);
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (a.name !== b.name) {
|
|
64
|
+
info.report.addComment(`${info.position}Different environment names. ${info.leftname}: ${a.name} vs. ${info.rightname}: ${b.name}`);
|
|
65
|
+
}
|
|
66
|
+
if (a.memory.size !== b.memory.size) {
|
|
67
|
+
info.report.addComment(`${info.position}Different environment sizes. ${info.leftname}: ${a.memory.size} vs. ${info.rightname}: ${b.memory.size}`);
|
|
68
|
+
(0, diff_1.setDifference)(new Set([...a.memory.keys()]), new Set([...b.memory.keys()]), {
|
|
69
|
+
...info,
|
|
70
|
+
position: `${info.position}Key comparison. `
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
diffMemory(a, b, info);
|
|
74
|
+
diffEnvironment(a.parent, b.parent, { ...info, position: `${info.position}Parents of ${a.id} & ${b.id}. ` });
|
|
75
|
+
}
|
|
76
|
+
exports.diffEnvironment = diffEnvironment;
|
|
77
|
+
function diffEnvironmentInformation(a, b, info) {
|
|
78
|
+
if (a === undefined || b === undefined) {
|
|
79
|
+
info.report.addComment(`${info.position}Different environments: ${JSON.stringify(a, json_1.jsonReplacer)} vs. ${JSON.stringify(b, json_1.jsonReplacer)}`);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
diffEnvironment(a.current, b.current, info);
|
|
83
|
+
}
|
|
84
|
+
exports.diffEnvironmentInformation = diffEnvironmentInformation;
|
|
85
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -4,48 +4,17 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @module
|
|
6
6
|
*/
|
|
7
|
-
import type {
|
|
8
|
-
import type { DataflowGraph
|
|
9
|
-
import type {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export type Identifier = string & {
|
|
13
|
-
__brand?: 'identifier';
|
|
14
|
-
};
|
|
15
|
-
export declare const BuiltIn = "built-in";
|
|
16
|
-
/**
|
|
17
|
-
* Stores the definition of an identifier within an {@link IEnvironment}
|
|
18
|
-
*/
|
|
19
|
-
export interface IdentifierDefinition extends IdentifierReference {
|
|
20
|
-
kind: 'function' | 'variable' | 'parameter' | 'unknown' | 'built-in-function' | 'argument';
|
|
21
|
-
/** The assignment (or whatever, like `assign` function call) node which ultimately defined this identifier */
|
|
22
|
-
definedAt: NodeId;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Something like `a` in `b <- a`.
|
|
26
|
-
* Without any surrounding information, `a` will produce the
|
|
27
|
-
* identifier reference `a` in the current scope (like the global environment).
|
|
28
|
-
* Similarly, `b` will create a reference.
|
|
29
|
-
*/
|
|
30
|
-
export interface IdentifierReference {
|
|
31
|
-
name: Identifier;
|
|
32
|
-
scope: DataflowScopeName;
|
|
33
|
-
/** Node which represents the reference in the AST */
|
|
34
|
-
nodeId: NodeId;
|
|
35
|
-
/**
|
|
36
|
-
* Is this reference used in every execution path of the program or only if some of them. This can be too-conservative regarding `maybe`.
|
|
37
|
-
* For example, if we can not detect `if(FALSE)`, this will be `maybe` even if we could statically determine, that the `then` branch is never executed.
|
|
38
|
-
*/
|
|
39
|
-
used: DataflowGraphEdgeAttribute;
|
|
40
|
-
}
|
|
41
|
-
export declare function diffIdentifierReferences(a: IdentifierReference, b: IdentifierReference, info: GenericDifferenceInformation): void;
|
|
42
|
-
export declare function makeAllMaybe(references: IdentifierReference[] | undefined, graph: DataflowGraph, environments: REnvironmentInformation): IdentifierReference[];
|
|
7
|
+
import type { Identifier, IdentifierDefinition, IdentifierReference } from './identifier';
|
|
8
|
+
import type { DataflowGraph } from '../graph/graph';
|
|
9
|
+
import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
10
|
+
export declare function makeReferenceMaybe(ref: IdentifierReference, graph: DataflowGraph, environments: REnvironmentInformation, includeDefs: boolean, defaultCd?: NodeId | undefined): IdentifierReference;
|
|
11
|
+
export declare function makeAllMaybe(references: readonly IdentifierReference[] | undefined, graph: DataflowGraph, environments: REnvironmentInformation, includeDefs: boolean, defaultCd?: NodeId | undefined): IdentifierReference[];
|
|
43
12
|
export interface IEnvironment {
|
|
44
13
|
/** unique and internally generated identifier -- will not be used for comparison but assists debugging for tracking identities */
|
|
45
14
|
readonly id: string;
|
|
46
15
|
readonly name: string;
|
|
47
16
|
/** Lexical parent of the environment, if any (can be manipulated by R code) */
|
|
48
|
-
parent
|
|
17
|
+
parent: IEnvironment;
|
|
49
18
|
/**
|
|
50
19
|
* Maps to exactly one definition of an identifier if the source is known, otherwise to a list of all possible definitions
|
|
51
20
|
*/
|
|
@@ -54,9 +23,9 @@ export interface IEnvironment {
|
|
|
54
23
|
export declare class Environment implements IEnvironment {
|
|
55
24
|
readonly name: string;
|
|
56
25
|
readonly id: string;
|
|
57
|
-
parent
|
|
26
|
+
parent: IEnvironment;
|
|
58
27
|
memory: Map<Identifier, IdentifierDefinition[]>;
|
|
59
|
-
constructor(name: string, parent
|
|
28
|
+
constructor(name: string, parent: IEnvironment);
|
|
60
29
|
}
|
|
61
30
|
/**
|
|
62
31
|
* First of all, yes, R stores its environments differently, potentially even with a different differentiation between
|
|
@@ -71,8 +40,6 @@ export interface REnvironmentInformation {
|
|
|
71
40
|
/** nesting level of the environment, will be `0` for the global/root environment */
|
|
72
41
|
readonly level: number;
|
|
73
42
|
}
|
|
74
|
-
export declare const
|
|
43
|
+
export declare const BuiltInEnvironment: Environment;
|
|
44
|
+
export declare const GLOBAL_ENV_NAME = "global";
|
|
75
45
|
export declare function initializeCleanEnvironments(): REnvironmentInformation;
|
|
76
|
-
export declare function diffEnvironment(a: IEnvironment | undefined, b: IEnvironment | undefined, info: GenericDifferenceInformation): void;
|
|
77
|
-
export declare function diffEnvironments(a: REnvironmentInformation | undefined, b: REnvironmentInformation | undefined, info: GenericDifferenceInformation): void;
|
|
78
|
-
export declare function cloneEnvironments(environment: REnvironmentInformation, recurseParents?: boolean): REnvironmentInformation;
|