realm / realm/SwiftLint

Unintuitive behavior for parent and child configurations w.r.t. implicit overwrites

Open
#5,724 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

discussion enhancement
Dominant language
Swift
Stars
19.7k
Forks
2.3k
Avg merge
1d 1h
Merged PRs (30d)
11

Description

All options possible in a configuration have a default value which is implicitly set even if an option is not mentioned in a certain configuration. Together with the rule that child configurations specialize parent configurations, all options set in the parent are overridden by the values in the child even if they are not explicitly set therein.

One example is strict which is false by default. Setting strict: true in the parent, but not mentioning it at all in the child resets it to its default value false. This is most likely not the intention of the user.

We should change the behavior to something more intuitive. This would definitely be a breaking change which needs to be properly communicated. The new logic must be well thought out and needs to consider parent_config and child_config.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the configuration handling for parent_config and child_config, focusing on how implicit default values override parent settings. Define the intended inheritance behavior, cover the strict example and other options, and communicate the resulting breaking change.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.