Skip to content

feat: FlowrConfig helper, setInConfig and FlowrAnalyzerBuilder::configure#2376

Merged
EagleoutIce merged 8 commits intomainfrom
2375-provide-type-safe-object-set-and-get-for-flowr-config
Feb 28, 2026
Merged

feat: FlowrConfig helper, setInConfig and FlowrAnalyzerBuilder::configure#2376
EagleoutIce merged 8 commits intomainfrom
2375-provide-type-safe-object-set-and-get-for-flowr-config

Conversation

@EagleoutIce
Copy link
Copy Markdown
Member

@EagleoutIce EagleoutIce commented Feb 28, 2026

Also dropped the Options suffix from the config type name

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR modernizes flowR configuration handling by introducing a FlowrConfig helper (default config, schema, cloning/amending, and path-based setters) and wiring it through the analyzer builder, CLI, queries, engines, and tests. It also updates the generated wiki/README outputs to reflect the new config API.

Changes:

  • Introduce FlowrConfig helper object (default config + Joi schema + parse/fromFile + amend/clone + setInConfig helpers) and migrate call sites from defaultConfigOptions/getConfig/getEngineConfig.
  • Add type-safe dot-path configuration support via ObjectPath/ObjectPathValue and FlowrAnalyzerBuilder.configure(...).
  • Regenerate wiki/README artifacts and update tests to use the new config API; add object-path dependency.

Reviewed changes

Copilot reviewed 68 out of 70 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
wiki/Core.md Regenerated core wiki output (version/R engine + snippets).
wiki/Capabilities.md Regenerated capabilities wiki output (counts/timings).
wiki/Analyzer.md Regenerated analyzer wiki output reflecting new config types/methods.
test/functionality/statistics/statistics.ts Switch tests to FlowrConfig.default().
test/functionality/statistics/statistics-post-process.test.ts Use FlowrConfig.default() for post-processing test.
test/functionality/slicing/backward/static-backward-program-slices/simple.test.ts Replace defaultConfigOptions with FlowrConfig.default().
test/functionality/slicing/backward/static-backward-program-slices/alias-tracking.test.ts Use FlowrConfig.default().solver.variables in alias tracking test.
test/functionality/project/plugin/news-file.test.ts Update context creation to FlowrConfig.default().
test/functionality/project/plugin/namespace-file.test.ts Update context creation to FlowrConfig.default().
test/functionality/project/plugin/license-file.test.ts Update context creation to FlowrConfig.default().
test/functionality/project/plugin/description-file.test.ts Update context creation to FlowrConfig.default().
test/functionality/project/context/flowr-analyzer-environment-context.test.ts Use FlowrConfig.default() for environment context test.
test/functionality/project/cache/flowr-analyzer-cache.test.ts Use FlowrConfig.default() when creating analyzer context.
test/functionality/dataflow/main/functions/dataflow-source.test.ts Replace manual amend/merge with FlowrConfig.setInConfig(...).
test/functionality/dataflow/environments/resolve.test.ts Use FlowrConfig.default().solver.variables.
test/functionality/control-flow/semantic-cfg-visitor.test.ts Use FlowrConfig.default() for CFG visitor tests.
test/functionality/control-flow/cfg-visit.test.ts Use FlowrConfig.default() in CFG visit tests.
test/functionality/benchmark/slicer.test.ts Use FlowrConfig.default() for benchmark slicer tests.
test/functionality/abstract-interpretation/data-frame/data-frame.ts Migrate absint test config to FlowrConfig + setInConfig.
test/functionality/_helper/shell.ts Replace config helpers with FlowrConfig.default() / FlowrConfig.clone(...).
test/functionality/_helper/repl.ts Update REPL helper signatures and defaults to FlowrConfig.
test/functionality/_helper/net.ts Update fake server to pass FlowrConfig.default().
test/functionality/_helper/linter.ts Use builder .configure(...) instead of manual config amendment.
test/functionality/_helper/dataflow/environment-builder.ts Use FlowrConfig.default() in environment builder helper.
test/functionality/_helper/controlflow/assert-control-flow-graph.ts Use FlowrConfig.default() instead of clone+default options.
src/util/objects.ts Add ObjectPath / ObjectPathValue type utilities.
src/statistics/statistics.ts Update statistics extraction API to accept FlowrConfig.
src/r-bridge/lang-4.x/ast/parser/json/parser.ts Use FlowrConfig.default() and FlowrConfig.getForEngine(...).
src/queries/query.ts Update query completer/parser config parameter type to FlowrConfig.
src/queries/catalog/static-slice-query/static-slice-query-format.ts Update parser signature to FlowrConfig.
src/queries/catalog/resolve-value-query/resolve-value-query-format.ts Update parser signature to FlowrConfig.
src/queries/catalog/origin-query/origin-query-format.ts Update parser signature to FlowrConfig.
src/queries/catalog/location-map-query/location-map-query-format.ts Update parser signature to FlowrConfig.
src/queries/catalog/linter-query/linter-query-format.ts Update parser/completer signature to FlowrConfig.
src/queries/catalog/inspect-recursion-query/inspect-recursion-query-format.ts Update parser signature to FlowrConfig.
src/queries/catalog/inspect-higher-order-query/inspect-higher-order-query-format.ts Update parser signature to FlowrConfig.
src/queries/catalog/inspect-exceptions-query/inspect-exception-query-format.ts Update parser signature to FlowrConfig.
src/queries/catalog/files-query/files-query-format.ts Update parser/completer signature to FlowrConfig.
src/queries/catalog/does-call-query/does-call-query-format.ts Update parser signature to FlowrConfig.
src/queries/catalog/df-shape-query/df-shape-query-format.ts Update parser signature to FlowrConfig.
src/queries/catalog/dependencies-query/dependencies-query-executor.ts Update executor to accept FlowrConfig.
src/queries/catalog/config-query/config-query-format.ts Update config query types to FlowrConfig.
src/project/flowr-analyzer.ts Rename analyzer config type to FlowrConfig.
src/project/flowr-analyzer-builder.ts Add configure(...) API and migrate builder config handling to FlowrConfig.
src/project/context/flowr-analyzer-files-context.ts Update docs to reference FlowrConfig.
src/project/context/flowr-analyzer-context.ts Migrate context config type/defaults to FlowrConfig.default().
src/linter/rules/dataframe-access-validation.ts Use FlowrConfig.amend(...) for temporary config adjustments.
src/engines.ts Switch to FlowrConfig.getForEngine(...).
src/documentation/wiki-interface.ts Use FlowrConfig.Schema and update docs around config helper usage.
src/documentation/wiki-core.ts Update example to use builder .configure(...).
src/documentation/wiki-analyzer.ts Document FlowrConfig + builder .configure(...) and update engine link generation.
src/dataflow/internal/process/functions/call/built-in/built-in-eval.ts Update config type to FlowrConfig.
src/core/steps/pipeline-step.ts Update step processing config type to FlowrConfig.
src/config.ts Introduce FlowrConfig helper object and replace legacy config exports/functions.
src/cli/statistics-helper-app.ts Load config via FlowrConfig.fromFile().
src/cli/statistics-app.ts Load config via FlowrConfig.fromFile().
src/cli/slicer-app.ts Load config via FlowrConfig.fromFile(); update engine config access.
src/cli/script-core/statistics-helper-core.ts Use FlowrConfig.getForEngine(...) and new config type.
src/cli/script-core/statistics-core.ts Update script signature to accept FlowrConfig.
src/cli/repl/server/server.ts Update server to store FlowrConfig.
src/cli/repl/server/connection.ts Update connection to store FlowrConfig.
src/cli/repl/core.ts Update REPL helper signatures to accept FlowrConfig.
src/cli/flowr.ts Use FlowrConfig.parse/fromFile/amend instead of legacy config helpers.
src/cli/export-quads-app.ts Use FlowrConfig.fromFile() + getForEngine(...).
src/cli/benchmark-helper-app.ts Use FlowrConfig.fromFile() and minor cleanup (Number.parseInt).
src/benchmark/slicer.ts Update slicer init signature and engine config retrieval to FlowrConfig.
package.json Add object-path and @types/object-path.
package-lock.json Lockfile updates for new deps.
README.md Regenerated README snippets/timings and mermaid clipboard output lines.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/config.ts Outdated
Comment thread src/config.ts
Comment thread src/config.ts Outdated
Comment thread src/config.ts Outdated
Comment thread wiki/Analyzer.md
Comment thread src/config.ts
Comment thread src/config.ts Outdated
Comment thread src/project/flowr-analyzer-builder.ts Outdated
Comment thread wiki/Analyzer.md Outdated
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 68 out of 70 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/util/objects.ts
Comment thread src/config.ts
Comment thread src/project/flowr-analyzer-builder.ts
Comment thread wiki/Analyzer.md
@EagleoutIce EagleoutIce merged commit e55ef42 into main Feb 28, 2026
19 checks passed
@EagleoutIce EagleoutIce deleted the 2375-provide-type-safe-object-set-and-get-for-flowr-config branch February 28, 2026 20:46
@EagleoutIce
Copy link
Copy Markdown
Member Author

This pull request is included in v2.9.13 (see Release v2.9.13 (FlowrConfig helper, General Bug-Fixes)).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Provide type-safe object set and get for flowr config

2 participants