@eagleoutice/flowr 1.5.2 → 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
|
@@ -1,43 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.initializeCleanEnvironments = exports.GLOBAL_ENV_NAME = exports.BuiltInEnvironment = exports.Environment = exports.makeAllMaybe = exports.makeReferenceMaybe = void 0;
|
|
4
|
+
const built_in_1 = require("./built-in");
|
|
4
5
|
const resolve_by_name_1 = require("./resolve-by-name");
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
function makeReferenceMaybe(ref, graph, environments, includeDefs, defaultCd = undefined) {
|
|
7
|
+
const node = graph.get(ref.nodeId, true);
|
|
8
|
+
if (includeDefs) {
|
|
9
|
+
const definitions = ref.name ? (0, resolve_by_name_1.resolveByName)(ref.name, environments) : undefined;
|
|
10
|
+
for (const definition of definitions ?? []) {
|
|
11
|
+
if (definition.kind !== 'built-in-function' && definition.kind !== 'built-in-value') {
|
|
12
|
+
if (definition.controlDependencies && defaultCd && !definition.controlDependencies.includes(defaultCd)) {
|
|
13
|
+
definition.controlDependencies.push(defaultCd);
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
definition.controlDependencies = defaultCd ? [defaultCd] : [];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
18
20
|
}
|
|
19
|
-
if (
|
|
20
|
-
|
|
21
|
+
if (node) {
|
|
22
|
+
if (node[0].controlDependencies && defaultCd && !node[0].controlDependencies.includes(defaultCd)) {
|
|
23
|
+
node[0].controlDependencies.push(defaultCd);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
node[0].controlDependencies = defaultCd ? [defaultCd] : [];
|
|
27
|
+
}
|
|
21
28
|
}
|
|
29
|
+
return { ...ref, controlDependencies: [...ref.controlDependencies ?? [], ...(defaultCd ? [defaultCd] : [])] };
|
|
22
30
|
}
|
|
23
|
-
exports.
|
|
24
|
-
function makeAllMaybe(references, graph, environments) {
|
|
31
|
+
exports.makeReferenceMaybe = makeReferenceMaybe;
|
|
32
|
+
function makeAllMaybe(references, graph, environments, includeDefs, defaultCd = undefined) {
|
|
25
33
|
if (references === undefined) {
|
|
26
34
|
return [];
|
|
27
35
|
}
|
|
28
|
-
return references.map(ref =>
|
|
29
|
-
const node = graph.get(ref.nodeId, true);
|
|
30
|
-
const definitions = (0, resolve_by_name_1.resolveByName)(ref.name, scopes_1.LocalScope, environments);
|
|
31
|
-
for (const definition of definitions ?? []) {
|
|
32
|
-
if (definition.kind !== 'built-in-function') {
|
|
33
|
-
definition.used = 'maybe';
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
if (node) {
|
|
37
|
-
node[0].when = 'maybe';
|
|
38
|
-
}
|
|
39
|
-
return { ...ref, used: 'maybe' };
|
|
40
|
-
});
|
|
36
|
+
return references.map(ref => makeReferenceMaybe(ref, graph, environments, includeDefs, defaultCd));
|
|
41
37
|
}
|
|
42
38
|
exports.makeAllMaybe = makeAllMaybe;
|
|
43
39
|
let environmentIdCounter = 0;
|
|
@@ -53,117 +49,15 @@ class Environment {
|
|
|
53
49
|
}
|
|
54
50
|
}
|
|
55
51
|
exports.Environment = Environment;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
used: 'always',
|
|
61
|
-
definedAt: exports.BuiltIn,
|
|
62
|
-
name: 'return',
|
|
63
|
-
nodeId: exports.BuiltIn
|
|
64
|
-
}]],
|
|
65
|
-
['cat', [{
|
|
66
|
-
kind: 'built-in-function',
|
|
67
|
-
scope: scopes_1.GlobalScope,
|
|
68
|
-
used: 'always',
|
|
69
|
-
definedAt: exports.BuiltIn,
|
|
70
|
-
name: 'cat',
|
|
71
|
-
nodeId: exports.BuiltIn
|
|
72
|
-
}]],
|
|
73
|
-
['print', [{
|
|
74
|
-
kind: 'built-in-function',
|
|
75
|
-
scope: scopes_1.GlobalScope,
|
|
76
|
-
used: 'always',
|
|
77
|
-
definedAt: exports.BuiltIn,
|
|
78
|
-
name: 'print',
|
|
79
|
-
nodeId: exports.BuiltIn
|
|
80
|
-
}]],
|
|
81
|
-
['source', [{
|
|
82
|
-
kind: 'built-in-function',
|
|
83
|
-
scope: scopes_1.GlobalScope,
|
|
84
|
-
used: 'always',
|
|
85
|
-
definedAt: exports.BuiltIn,
|
|
86
|
-
name: 'source',
|
|
87
|
-
nodeId: exports.BuiltIn
|
|
88
|
-
}]]
|
|
89
|
-
]);
|
|
52
|
+
/* the built-in environment is the root of all environments */
|
|
53
|
+
exports.BuiltInEnvironment = new Environment('built-in', undefined);
|
|
54
|
+
exports.BuiltInEnvironment.memory = built_in_1.BuiltInMemory;
|
|
55
|
+
exports.GLOBAL_ENV_NAME = 'global';
|
|
90
56
|
function initializeCleanEnvironments() {
|
|
91
|
-
const global = new Environment(scopes_1.GlobalScope);
|
|
92
|
-
// use a copy
|
|
93
|
-
global.memory = new Map(exports.DefaultEnvironmentMemory);
|
|
94
57
|
return {
|
|
95
|
-
current:
|
|
58
|
+
current: new Environment(exports.GLOBAL_ENV_NAME, exports.BuiltInEnvironment),
|
|
96
59
|
level: 0
|
|
97
60
|
};
|
|
98
61
|
}
|
|
99
62
|
exports.initializeCleanEnvironments = initializeCleanEnvironments;
|
|
100
|
-
function diffEnvironment(a, b, info) {
|
|
101
|
-
if (a === undefined || b === undefined) {
|
|
102
|
-
if (a !== b) {
|
|
103
|
-
info.report.addComment(`${info.position}Different environments. ${info.leftname}: ${JSON.stringify(a, json_1.jsonReplacer)} vs. ${info.rightname}: ${JSON.stringify(b, json_1.jsonReplacer)}`);
|
|
104
|
-
}
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
if (a.name !== b.name) {
|
|
108
|
-
info.report.addComment(`${info.position}Different environment names. ${info.leftname}: ${JSON.stringify(a, json_1.jsonReplacer)} vs. ${info.rightname}: ${JSON.stringify(b, json_1.jsonReplacer)}`);
|
|
109
|
-
}
|
|
110
|
-
if (a.memory.size !== b.memory.size) {
|
|
111
|
-
info.report.addComment(`${info.position}Different environment sizes. ${info.leftname}: ${JSON.stringify(a, json_1.jsonReplacer)} vs. ${info.rightname}: ${JSON.stringify(b, json_1.jsonReplacer)}`);
|
|
112
|
-
(0, diff_1.setDifference)(new Set([...a.memory.keys()]), new Set([...b.memory.keys()]), { ...info, position: `${info.position}Key comparison. ` });
|
|
113
|
-
}
|
|
114
|
-
for (const [key, value] of a.memory) {
|
|
115
|
-
const value2 = b.memory.get(key);
|
|
116
|
-
if (value2 === undefined || value.length !== value2.length) {
|
|
117
|
-
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)}`);
|
|
118
|
-
continue;
|
|
119
|
-
}
|
|
120
|
-
for (let i = 0; i < value.length; ++i) {
|
|
121
|
-
const aVal = value[i];
|
|
122
|
-
const bVal = value2[i];
|
|
123
|
-
if (aVal.name !== bVal.name) {
|
|
124
|
-
info.report.addComment(`${info.position}Different names for ${key}. ${info.leftname}: ${aVal.name} vs. ${info.rightname}: ${bVal.name}`);
|
|
125
|
-
}
|
|
126
|
-
if (aVal.nodeId !== bVal.nodeId) {
|
|
127
|
-
info.report.addComment(`${info.position}Different ids for ${key}. ${info.leftname}: ${aVal.nodeId} vs. ${info.rightname}: ${bVal.nodeId}`);
|
|
128
|
-
}
|
|
129
|
-
if (aVal.scope !== bVal.scope) {
|
|
130
|
-
info.report.addComment(`${info.position}Different scopes for ${key}. ${info.leftname}: ${aVal.scope} vs. ${info.rightname}: ${bVal.scope}`);
|
|
131
|
-
}
|
|
132
|
-
if (aVal.used !== bVal.used) {
|
|
133
|
-
info.report.addComment(`${info.position}Different used for ${key}. ${info.leftname}: ${aVal.used} vs. ${info.rightname}: ${bVal.used}`);
|
|
134
|
-
}
|
|
135
|
-
if (aVal.definedAt !== bVal.definedAt) {
|
|
136
|
-
info.report.addComment(`${info.position}Different definition ids (definedAt) for ${key}. ${info.leftname}: ${aVal.definedAt} vs. ${info.rightname}: ${bVal.definedAt}`);
|
|
137
|
-
}
|
|
138
|
-
if (aVal.kind !== bVal.kind) {
|
|
139
|
-
info.report.addComment(`${info.position}Different kinds for ${key}. ${info.leftname}: ${aVal.kind} vs. ${info.rightname}: ${bVal.kind}`);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
diffEnvironment(a.parent, b.parent, { ...info, position: `${info.position}Parents of ${a.id} & ${b.id}. ` });
|
|
144
|
-
}
|
|
145
|
-
exports.diffEnvironment = diffEnvironment;
|
|
146
|
-
function diffEnvironments(a, b, info) {
|
|
147
|
-
if (a === undefined || b === undefined) {
|
|
148
|
-
info.report.addComment(`${info.position}Different environments: ${JSON.stringify(a, json_1.jsonReplacer)} vs. ${JSON.stringify(b, json_1.jsonReplacer)}`);
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
diffEnvironment(a.current, b.current, info);
|
|
152
|
-
}
|
|
153
|
-
exports.diffEnvironments = diffEnvironments;
|
|
154
|
-
function cloneEnvironment(environment, recurseParents) {
|
|
155
|
-
if (environment === undefined) {
|
|
156
|
-
return undefined;
|
|
157
|
-
}
|
|
158
|
-
const clone = new Environment(environment.name, recurseParents ? cloneEnvironment(environment.parent, recurseParents) : environment.parent);
|
|
159
|
-
clone.memory = new Map(JSON.parse(JSON.stringify([...environment.memory])));
|
|
160
|
-
return clone;
|
|
161
|
-
}
|
|
162
|
-
function cloneEnvironments(environment, recurseParents = true) {
|
|
163
|
-
return {
|
|
164
|
-
current: cloneEnvironment(environment.current, recurseParents),
|
|
165
|
-
level: environment.level
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
exports.cloneEnvironments = cloneEnvironments;
|
|
169
63
|
//# sourceMappingURL=environment.js.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { BuiltInIdentifierConstant, BuiltInIdentifierDefinition } from './built-in';
|
|
2
|
+
import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
3
|
+
export type Identifier = string & {
|
|
4
|
+
__brand?: 'identifier';
|
|
5
|
+
};
|
|
6
|
+
interface InGraphIdentifierDefinition extends IdentifierReference {
|
|
7
|
+
kind: 'function' | 'variable' | 'parameter' | 'argument';
|
|
8
|
+
/** The assignment (or whatever, like `assign` function call) node which ultimately defined this identifier */
|
|
9
|
+
definedAt: NodeId;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Stores the definition of an identifier within an {@link IEnvironment}
|
|
13
|
+
*/
|
|
14
|
+
export type IdentifierDefinition = InGraphIdentifierDefinition | BuiltInIdentifierDefinition | BuiltInIdentifierConstant;
|
|
15
|
+
/**
|
|
16
|
+
* Something like `a` in `b <- a`.
|
|
17
|
+
* Without any surrounding information, `a` will produce the identifier reference `a`.
|
|
18
|
+
* Similarly, `b` will create a reference.
|
|
19
|
+
*/
|
|
20
|
+
export interface IdentifierReference {
|
|
21
|
+
/** Node which represents the reference in the AST */
|
|
22
|
+
readonly nodeId: NodeId;
|
|
23
|
+
/** Name the reference is identified by (e.g., the name of the variable), undefined if the reference is "artificial" (e.g., anonymous) */
|
|
24
|
+
readonly name: Identifier | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* If the reference is only effective if, e.g. an if-then-else condition is true, this references the root of the `if`.
|
|
27
|
+
* As a hackey intermediate solution (until we have pointer-analysis), an empty array may indicate a `maybe` which is due to pointer access (e.g., in `a[x] <- 3`).
|
|
28
|
+
*/
|
|
29
|
+
controlDependencies: NodeId[] | undefined;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { REnvironmentInformation, IEnvironment } from './environment';
|
|
2
2
|
export declare function overwriteIEnvironmentWith(base: IEnvironment | undefined, next: IEnvironment | undefined, includeParent?: boolean): IEnvironment;
|
|
3
|
-
export declare function
|
|
4
|
-
export declare function
|
|
5
|
-
export declare function
|
|
6
|
-
export declare function
|
|
3
|
+
export declare function overwriteEnvironment(base: REnvironmentInformation, next: REnvironmentInformation | undefined): REnvironmentInformation;
|
|
4
|
+
export declare function overwriteEnvironment(base: REnvironmentInformation | undefined, next: REnvironmentInformation): REnvironmentInformation;
|
|
5
|
+
export declare function overwriteEnvironment(base: undefined, next: undefined): undefined;
|
|
6
|
+
export declare function overwriteEnvironment(base: REnvironmentInformation | undefined, next: REnvironmentInformation | undefined): REnvironmentInformation | undefined;
|
|
@@ -1,29 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.overwriteEnvironment = exports.overwriteIEnvironmentWith = void 0;
|
|
4
4
|
const assert_1 = require("../../util/assert");
|
|
5
5
|
const environment_1 = require("./environment");
|
|
6
|
-
function
|
|
6
|
+
function anyIsMaybeOrEmpty(values) {
|
|
7
7
|
if (values.length === 0) {
|
|
8
8
|
return true;
|
|
9
9
|
}
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
return true;
|
|
13
|
-
}
|
|
14
|
-
let same = true;
|
|
15
|
-
for (let i = 1; i < values.length; i++) {
|
|
16
|
-
const used = values[i].used;
|
|
17
|
-
if (used === 'maybe') {
|
|
10
|
+
for (const val of values) {
|
|
11
|
+
if (val.controlDependencies !== undefined) {
|
|
18
12
|
return true;
|
|
19
13
|
}
|
|
20
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- in case we want to add more attributes in the future
|
|
21
|
-
if (used !== attr) {
|
|
22
|
-
same = false;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (!same) {
|
|
26
|
-
throw new Error('all values must have either a maybe or are all the same');
|
|
27
14
|
}
|
|
28
15
|
return false;
|
|
29
16
|
}
|
|
@@ -32,7 +19,7 @@ function overwriteIEnvironmentWith(base, next, includeParent = true) {
|
|
|
32
19
|
(0, assert_1.guard)(base.name === next.name, 'cannot overwrite environments with different names');
|
|
33
20
|
const map = new Map(base.memory);
|
|
34
21
|
for (const [key, values] of next.memory) {
|
|
35
|
-
const hasMaybe =
|
|
22
|
+
const hasMaybe = anyIsMaybeOrEmpty(values);
|
|
36
23
|
if (hasMaybe) {
|
|
37
24
|
const old = map.get(key);
|
|
38
25
|
// we need to make a copy to avoid side effects for old reference in other environments
|
|
@@ -51,7 +38,7 @@ function overwriteIEnvironmentWith(base, next, includeParent = true) {
|
|
|
51
38
|
}
|
|
52
39
|
let parent;
|
|
53
40
|
if (includeParent) {
|
|
54
|
-
parent = base.parent ===
|
|
41
|
+
parent = base.parent.id === environment_1.BuiltInEnvironment.id ? environment_1.BuiltInEnvironment : overwriteIEnvironmentWith(base.parent, next.parent);
|
|
55
42
|
}
|
|
56
43
|
else {
|
|
57
44
|
parent = base.parent;
|
|
@@ -63,9 +50,9 @@ function overwriteIEnvironmentWith(base, next, includeParent = true) {
|
|
|
63
50
|
exports.overwriteIEnvironmentWith = overwriteIEnvironmentWith;
|
|
64
51
|
/**
|
|
65
52
|
* Assumes, that all definitions within next replace those within base (given the same name).
|
|
66
|
-
* <b>But</b> if all definitions within next are maybe, then they are appended to the base definitions (updating them to be `maybe` from now on as well), similar to {@link
|
|
53
|
+
* <b>But</b> if all definitions within next are maybe, then they are appended to the base definitions (updating them to be `maybe` from now on as well), similar to {@link appendEnvironment}.
|
|
67
54
|
*/
|
|
68
|
-
function
|
|
55
|
+
function overwriteEnvironment(base, next) {
|
|
69
56
|
if (base === undefined) {
|
|
70
57
|
return next;
|
|
71
58
|
}
|
|
@@ -78,5 +65,5 @@ function overwriteEnvironments(base, next) {
|
|
|
78
65
|
level: base.level
|
|
79
66
|
};
|
|
80
67
|
}
|
|
81
|
-
exports.
|
|
68
|
+
exports.overwriteEnvironment = overwriteEnvironment;
|
|
82
69
|
//# sourceMappingURL=overwrite.js.map
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { REnvironmentInformation } from './environment';
|
|
2
|
+
import type { Ternary } from '../../util/logic';
|
|
3
|
+
import type { Identifier, IdentifierDefinition } from './identifier';
|
|
3
4
|
/**
|
|
4
5
|
* Resolves a given identifier name to a list of its possible definition location using R scoping and resolving rules.
|
|
5
6
|
*
|
|
6
|
-
* @param name
|
|
7
|
-
* @param
|
|
8
|
-
* @param environments - The current environments used for name resolution
|
|
7
|
+
* @param name - The name of the identifier to resolve
|
|
8
|
+
* @param environment - The current environment used for name resolution
|
|
9
9
|
*
|
|
10
10
|
* @returns A list of possible definitions of the identifier (one if the definition location is exactly and always known), or `undefined` if the identifier is undefined in the current scope/with the current environment information.
|
|
11
11
|
*/
|
|
12
|
-
export declare function resolveByName(name: Identifier,
|
|
12
|
+
export declare function resolveByName(name: Identifier, environment: REnvironmentInformation): IdentifierDefinition[] | undefined;
|
|
13
|
+
export declare function resolvesToBuiltInConstant(name: Identifier | undefined, environment: REnvironmentInformation, wantedValue: unknown): Ternary;
|
|
@@ -1,35 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveByName = void 0;
|
|
4
|
-
const
|
|
5
|
-
const scopes_1 = require("./scopes");
|
|
3
|
+
exports.resolvesToBuiltInConstant = exports.resolveByName = void 0;
|
|
4
|
+
const environment_1 = require("./environment");
|
|
6
5
|
/**
|
|
7
6
|
* Resolves a given identifier name to a list of its possible definition location using R scoping and resolving rules.
|
|
8
7
|
*
|
|
9
|
-
* @param name
|
|
10
|
-
* @param
|
|
11
|
-
* @param environments - The current environments used for name resolution
|
|
8
|
+
* @param name - The name of the identifier to resolve
|
|
9
|
+
* @param environment - The current environment used for name resolution
|
|
12
10
|
*
|
|
13
11
|
* @returns A list of possible definitions of the identifier (one if the definition location is exactly and always known), or `undefined` if the identifier is undefined in the current scope/with the current environment information.
|
|
14
12
|
*/
|
|
15
|
-
function resolveByName(name,
|
|
16
|
-
|
|
17
|
-
throw new Error('Non-local scoping is not yet supported');
|
|
18
|
-
}
|
|
19
|
-
return resolve(name, withinScope, environments);
|
|
20
|
-
}
|
|
21
|
-
exports.resolveByName = resolveByName;
|
|
22
|
-
function resolve(name, withinScope, environments) {
|
|
23
|
-
index_1.dataflowLogger.trace(`Resolving local identifier ${name} (scope name: ${withinScope}, local stack size: ${environments.level})`);
|
|
24
|
-
let current = environments.current;
|
|
13
|
+
function resolveByName(name, environment) {
|
|
14
|
+
let current = environment.current;
|
|
25
15
|
do {
|
|
26
16
|
const definition = current.memory.get(name);
|
|
27
17
|
if (definition !== undefined) {
|
|
28
18
|
return definition;
|
|
29
19
|
}
|
|
30
20
|
current = current.parent;
|
|
31
|
-
} while (current !==
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
} while (current.id !== environment_1.BuiltInEnvironment.id);
|
|
22
|
+
return current.memory.get(name);
|
|
23
|
+
}
|
|
24
|
+
exports.resolveByName = resolveByName;
|
|
25
|
+
function resolvesToBuiltInConstant(name, environment, wantedValue) {
|
|
26
|
+
if (name === undefined) {
|
|
27
|
+
return 'never';
|
|
28
|
+
}
|
|
29
|
+
const definition = resolveByName(name, environment);
|
|
30
|
+
if (definition === undefined) {
|
|
31
|
+
return 'never';
|
|
32
|
+
}
|
|
33
|
+
let all = true;
|
|
34
|
+
let some = false;
|
|
35
|
+
for (const def of definition) {
|
|
36
|
+
if (def.kind === 'built-in-value' && def.value === wantedValue) {
|
|
37
|
+
some = true;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
all = false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (all) {
|
|
44
|
+
return 'always';
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return some ? 'maybe' : 'never';
|
|
48
|
+
}
|
|
34
49
|
}
|
|
50
|
+
exports.resolvesToBuiltInConstant = resolvesToBuiltInConstant;
|
|
35
51
|
//# sourceMappingURL=resolve-by-name.js.map
|
|
@@ -3,13 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.popLocalEnvironment = exports.pushLocalEnvironment = void 0;
|
|
4
4
|
const environment_1 = require("./environment");
|
|
5
5
|
const assert_1 = require("../../util/assert");
|
|
6
|
-
const scopes_1 = require("./scopes");
|
|
7
6
|
/** Add a new local environment scope to the stack, returns the modified variant - sharing the original environments in the stack (no deep-clone) */
|
|
8
7
|
function pushLocalEnvironment(base) {
|
|
9
|
-
const local = new environment_1.Environment(scopes_1.LocalScope);
|
|
10
|
-
local.parent = base.current;
|
|
11
8
|
return {
|
|
12
|
-
current: local,
|
|
9
|
+
current: new environment_1.Environment('local', base.current),
|
|
13
10
|
level: base.level + 1
|
|
14
11
|
};
|
|
15
12
|
}
|
package/dataflow/extractor.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
5
|
-
export declare
|
|
6
|
-
export declare function
|
|
1
|
+
import type { DataflowInformation } from './info';
|
|
2
|
+
import type { DataflowProcessors } from './processor';
|
|
3
|
+
import type { NormalizedAst, ParentInformation } from '../r-bridge/lang-4.x/ast/model/processing/decorate';
|
|
4
|
+
import type { RParseRequest } from '../r-bridge/retriever';
|
|
5
|
+
export declare const processors: DataflowProcessors<ParentInformation>;
|
|
6
|
+
export declare function produceDataFlowGraph<OtherInfo>(request: RParseRequest, ast: NormalizedAst<OtherInfo & ParentInformation>): DataflowInformation;
|
package/dataflow/extractor.js
CHANGED
|
@@ -1,68 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const r_bridge_1 = require("../r-bridge");
|
|
3
|
+
exports.produceDataFlowGraph = exports.processors = void 0;
|
|
5
4
|
const processor_1 = require("./processor");
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
["
|
|
27
|
-
["
|
|
28
|
-
["
|
|
29
|
-
["
|
|
30
|
-
["
|
|
31
|
-
["
|
|
32
|
-
["
|
|
33
|
-
["
|
|
34
|
-
["
|
|
35
|
-
["
|
|
36
|
-
["
|
|
37
|
-
["
|
|
38
|
-
["
|
|
39
|
-
["
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
5
|
+
const process_uninteresting_leaf_1 = require("./internal/process/process-uninteresting-leaf");
|
|
6
|
+
const process_symbol_1 = require("./internal/process/process-symbol");
|
|
7
|
+
const default_call_handling_1 = require("./internal/process/functions/call/default-call-handling");
|
|
8
|
+
const process_parameter_1 = require("./internal/process/functions/process-parameter");
|
|
9
|
+
const process_argument_1 = require("./internal/process/functions/process-argument");
|
|
10
|
+
const process_named_call_1 = require("./internal/process/process-named-call");
|
|
11
|
+
const process_value_1 = require("./internal/process/process-value");
|
|
12
|
+
const named_call_handling_1 = require("./internal/process/functions/call/named-call-handling");
|
|
13
|
+
const make_argument_1 = require("./internal/process/functions/call/argument/make-argument");
|
|
14
|
+
const range_1 = require("../util/range");
|
|
15
|
+
const retriever_1 = require("../r-bridge/retriever");
|
|
16
|
+
const environment_1 = require("./environments/environment");
|
|
17
|
+
exports.processors = {
|
|
18
|
+
["RNumber" /* RType.Number */]: process_value_1.processValue,
|
|
19
|
+
["RString" /* RType.String */]: process_value_1.processValue,
|
|
20
|
+
["RLogical" /* RType.Logical */]: process_value_1.processValue,
|
|
21
|
+
["RComment" /* RType.Comment */]: process_uninteresting_leaf_1.processUninterestingLeaf,
|
|
22
|
+
["RLineDirective" /* RType.LineDirective */]: process_uninteresting_leaf_1.processUninterestingLeaf,
|
|
23
|
+
["RSymbol" /* RType.Symbol */]: process_symbol_1.processSymbol,
|
|
24
|
+
["RAccess" /* RType.Access */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.operator, [n.accessed, ...n.access]),
|
|
25
|
+
["RBinaryOp" /* RType.BinaryOp */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.operator, [n.lhs, n.rhs]),
|
|
26
|
+
["RPipe" /* RType.Pipe */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, [n.lhs, n.rhs]),
|
|
27
|
+
["RUnaryOp" /* RType.UnaryOp */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.operator, [n.operand]),
|
|
28
|
+
["RForLoop" /* RType.ForLoop */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, [n.variable, n.vector, n.body]),
|
|
29
|
+
["RWhileLoop" /* RType.WhileLoop */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, [n.condition, n.body]),
|
|
30
|
+
["RRepeatLoop" /* RType.RepeatLoop */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, [n.body]),
|
|
31
|
+
["RIfThenElse" /* RType.IfThenElse */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, [n.condition, n.then, n.otherwise]),
|
|
32
|
+
["RBreak" /* RType.Break */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, []),
|
|
33
|
+
["RNext" /* RType.Next */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, []),
|
|
34
|
+
["RFunctionCall" /* RType.FunctionCall */]: default_call_handling_1.processFunctionCall,
|
|
35
|
+
["RFunctionDefinition" /* RType.FunctionDefinition */]: (n, d) => (0, process_named_call_1.processAsNamedCall)(n, d, n.lexeme, [...n.parameters, n.body]),
|
|
36
|
+
["RParameter" /* RType.Parameter */]: process_parameter_1.processFunctionParameter,
|
|
37
|
+
["RArgument" /* RType.Argument */]: process_argument_1.processFunctionArgument,
|
|
38
|
+
["RExpressionList" /* RType.ExpressionList */]: (n, d) => (0, named_call_handling_1.processNamedCall)({
|
|
39
|
+
type: "RSymbol" /* RType.Symbol */,
|
|
40
|
+
info: n.info,
|
|
41
|
+
content: n.grouping?.[0].content ?? '{',
|
|
42
|
+
lexeme: n.grouping?.[0].lexeme ?? '{',
|
|
43
|
+
location: n.location ?? (0, range_1.rangeFrom)(-1, -1, -1, -1),
|
|
44
|
+
namespace: n.grouping?.[0].content ? undefined : 'base'
|
|
45
|
+
}, (0, make_argument_1.wrapArgumentsUnnamed)(n.children, d.completeAst.idMap), n.info.id, d)
|
|
47
46
|
};
|
|
48
|
-
function produceDataFlowGraph(request, ast
|
|
47
|
+
function produceDataFlowGraph(request, ast) {
|
|
49
48
|
return (0, processor_1.processDataflowFor)(ast.ast, {
|
|
50
49
|
completeAst: ast,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
processors: processors,
|
|
50
|
+
environment: (0, environment_1.initializeCleanEnvironments)(),
|
|
51
|
+
processors: exports.processors,
|
|
54
52
|
currentRequest: request,
|
|
55
|
-
|
|
53
|
+
controlDependencies: undefined,
|
|
54
|
+
referenceChain: [(0, retriever_1.requestFingerprint)(request)]
|
|
56
55
|
});
|
|
57
56
|
}
|
|
58
57
|
exports.produceDataFlowGraph = produceDataFlowGraph;
|
|
59
|
-
function processBinaryOp(node, data) {
|
|
60
|
-
if (node.flavor === 'assignment') {
|
|
61
|
-
return (0, assignment_1.processAssignment)(node, data);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
return (0, non_assignment_binary_op_1.processNonAssignmentBinaryOp)(node, data);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
exports.processBinaryOp = processBinaryOp;
|
|
68
58
|
//# sourceMappingURL=extractor.js.map
|
package/dataflow/graph/diff.d.ts
CHANGED
|
@@ -1,18 +1,35 @@
|
|
|
1
|
-
import type { NodeId } from '../../r-bridge';
|
|
2
1
|
import type { DataflowGraph, FunctionArgument, OutgoingEdges } from './graph';
|
|
3
|
-
import type { GenericDifferenceInformation,
|
|
2
|
+
import type { GenericDifferenceInformation, WriteableDifferenceReport } from '../../util/diff';
|
|
3
|
+
import type { NodeId } from '../../r-bridge/lang-4.x/ast/model/processing/node-id';
|
|
4
|
+
interface ProblematicVertex {
|
|
5
|
+
tag: 'vertex';
|
|
6
|
+
id: NodeId;
|
|
7
|
+
}
|
|
8
|
+
interface ProblematicEdge {
|
|
9
|
+
tag: 'edge';
|
|
10
|
+
from: NodeId;
|
|
11
|
+
to: NodeId;
|
|
12
|
+
}
|
|
13
|
+
export type ProblematicDiffInfo = ProblematicVertex | ProblematicEdge;
|
|
14
|
+
export declare class DataflowDifferenceReport implements WriteableDifferenceReport {
|
|
15
|
+
_comments: string[] | undefined;
|
|
16
|
+
_problematic: ProblematicDiffInfo[] | undefined;
|
|
17
|
+
addComment(comment: string, ...related: ProblematicDiffInfo[]): void;
|
|
18
|
+
comments(): readonly string[] | undefined;
|
|
19
|
+
problematic(): readonly ProblematicDiffInfo[] | undefined;
|
|
20
|
+
isEqual(): boolean;
|
|
21
|
+
}
|
|
4
22
|
export interface NamedGraph {
|
|
5
23
|
name: string;
|
|
6
24
|
graph: DataflowGraph;
|
|
7
25
|
}
|
|
8
|
-
interface DataflowDiffContext extends GenericDifferenceInformation {
|
|
26
|
+
interface DataflowDiffContext extends GenericDifferenceInformation<DataflowDifferenceReport> {
|
|
9
27
|
left: DataflowGraph;
|
|
10
28
|
right: DataflowGraph;
|
|
11
29
|
}
|
|
12
|
-
export declare function diffOfDataflowGraphs(left: NamedGraph, right: NamedGraph):
|
|
13
|
-
export declare function
|
|
14
|
-
export declare function
|
|
15
|
-
export declare function diffFunctionArguments(a: false | FunctionArgument[], b: false | FunctionArgument[], ctx: GenericDifferenceInformation): void;
|
|
30
|
+
export declare function diffOfDataflowGraphs(left: NamedGraph, right: NamedGraph): DataflowDifferenceReport;
|
|
31
|
+
export declare function equalFunctionArguments(fn: NodeId, a: false | readonly FunctionArgument[], b: false | readonly FunctionArgument[]): boolean;
|
|
32
|
+
export declare function diffFunctionArguments(fn: NodeId, a: false | readonly FunctionArgument[], b: false | readonly FunctionArgument[], ctx: GenericDifferenceInformation<DataflowDifferenceReport>): void;
|
|
16
33
|
export declare function diffVertices(ctx: DataflowDiffContext): void;
|
|
17
34
|
export declare function diffEdges(ctx: DataflowDiffContext, id: NodeId, lEdges: OutgoingEdges | undefined, rEdges: OutgoingEdges | undefined): void;
|
|
18
35
|
export {};
|