Skip to content

Improve resolver safety and docs#25

Merged
hainayanda merged 6 commits into
mainfrom
feature/llm-improvement
Jan 15, 2026
Merged

Improve resolver safety and docs#25
hainayanda merged 6 commits into
mainfrom
feature/llm-improvement

Conversation

@hainayanda
Copy link
Copy Markdown
Owner

Problem

Resolver behavior and public API documentation needed clarification, and README/test hygiene had small inconsistencies.

Solution

  • Make resolver access safer and clearer: synchronize singleton/weak resolver access, simplify transient resolve casting, and guard weak resolver usage with an assertion for non-class values.
  • Protect reads with an atomic lookup to avoid races.
  • Expand API docs across the public surface and macros; improve README usage guidance (including weak reference constraints).
  • Clean up tests and fix SwiftUI import typo.
  • Add repository guidelines file.

Testing

  • Test Suite 'All tests' started at 2026-01-15 07:28:11.456.
    Test Suite 'SwiftEnvironmentPackageTests.xctest' started at 2026-01-15 07:28:11.457.
    Test Suite 'IntegrationTests' started at 2026-01-15 07:28:11.457.
    Test Case '-[SwiftEnvironmentTests.IntegrationTests test_givenConnectedInjection_whenGet_shouldAlwaysReturnSameValue]' started.
    Test Case '-[SwiftEnvironmentTests.IntegrationTests test_givenConnectedInjection_whenGet_shouldAlwaysReturnSameValue]' passed (0.003 seconds).
    Test Case '-[SwiftEnvironmentTests.IntegrationTests test_givenConnectedInjection_whenGet_shouldReturnDefault]' started.
    Test Case '-[SwiftEnvironmentTests.IntegrationTests test_givenConnectedInjection_whenGet_shouldReturnDefault]' passed (0.000 seconds).
    Test Case '-[SwiftEnvironmentTests.IntegrationTests test_givenSendableInjection_whenGet_shouldAlwaysReturnNewValue]' started.
    Test Case '-[SwiftEnvironmentTests.IntegrationTests test_givenSendableInjection_whenGet_shouldAlwaysReturnNewValue]' passed (0.000 seconds).
    Test Case '-[SwiftEnvironmentTests.IntegrationTests test_givenThreeConnectedInjection_whenGet_shouldAlwaysReturnSameValue]' started.
    Test Case '-[SwiftEnvironmentTests.IntegrationTests test_givenThreeConnectedInjection_whenGet_shouldAlwaysReturnSameValue]' passed (0.000 seconds).
    Test Case '-[SwiftEnvironmentTests.IntegrationTests test_givenTransientInjection_whenGet_shouldAlwaysReturnNewValue]' started.
    Test Case '-[SwiftEnvironmentTests.IntegrationTests test_givenTransientInjection_whenGet_shouldAlwaysReturnNewValue]' passed (0.000 seconds).
    Test Case '-[SwiftEnvironmentTests.IntegrationTests test_givenTwoConnectedInjection_whenGet_shouldAlwaysReturnSameValue]' started.
    Test Case '-[SwiftEnvironmentTests.IntegrationTests test_givenTwoConnectedInjection_whenGet_shouldAlwaysReturnSameValue]' passed (0.000 seconds).
    Test Suite 'IntegrationTests' passed at 2026-01-15 07:28:11.461.
    Executed 6 tests, with 0 failures (0 unexpected) in 0.004 (0.005) seconds
    Test Suite 'MacroTests' started at 2026-01-15 07:28:11.461.
    Test Case '-[SwiftEnvironmentTests.MacroTests test_givenBasicEntry_whenExpanded_shouldUseBasicExpansion]' started.
    Test Case '-[SwiftEnvironmentTests.MacroTests test_givenBasicEntry_whenExpanded_shouldUseBasicExpansion]' passed (0.017 seconds).
    Test Suite 'MacroTests' passed at 2026-01-15 07:28:11.479.
    Executed 1 test, with 0 failures (0 unexpected) in 0.017 (0.017) seconds
    Test Suite 'SingletonInstanceResolverTests' started at 2026-01-15 07:28:11.479.
    Test Case '-[SwiftEnvironmentTests.SingletonInstanceResolverTests test_givenQueue_whenResolve_shouldDoItInGivenQueue]' started.
    Test Case '-[SwiftEnvironmentTests.SingletonInstanceResolverTests test_givenQueue_whenResolve_shouldDoItInGivenQueue]' passed (0.000 seconds).
    Test Case '-[SwiftEnvironmentTests.SingletonInstanceResolverTests test_givenResolver_whenResolve_shouldReturnSameInstance]' started.
    Test Case '-[SwiftEnvironmentTests.SingletonInstanceResolverTests test_givenResolver_whenResolve_shouldReturnSameInstance]' passed (0.001 seconds).
    Test Case '-[SwiftEnvironmentTests.SingletonInstanceResolverTests test_givenValue_whenResolveWrongType_shouldReturnNil]' started.
    Test Case '-[SwiftEnvironmentTests.SingletonInstanceResolverTests test_givenValue_whenResolveWrongType_shouldReturnNil]' passed (0.000 seconds).
    Test Suite 'SingletonInstanceResolverTests' passed at 2026-01-15 07:28:11.480.
    Executed 3 tests, with 0 failures (0 unexpected) in 0.001 (0.001) seconds
    Test Suite 'TransientInstanceResolverTests' started at 2026-01-15 07:28:11.480.
    Test Case '-[SwiftEnvironmentTests.TransientInstanceResolverTests test_givenQueue_whenResolve_shouldDoItInGivenQueue]' started.
    Test Case '-[SwiftEnvironmentTests.TransientInstanceResolverTests test_givenQueue_whenResolve_shouldDoItInGivenQueue]' passed (0.000 seconds).
    Test Case '-[SwiftEnvironmentTests.TransientInstanceResolverTests test_givenResolver_whenResolve_shouldReturnDifferentInstance]' started.
    Test Case '-[SwiftEnvironmentTests.TransientInstanceResolverTests test_givenResolver_whenResolve_shouldReturnDifferentInstance]' passed (0.000 seconds).
    Test Case '-[SwiftEnvironmentTests.TransientInstanceResolverTests test_givenValue_whenResolveWrongType_shouldReturnNil]' started.
    Test Case '-[SwiftEnvironmentTests.TransientInstanceResolverTests test_givenValue_whenResolveWrongType_shouldReturnNil]' passed (0.000 seconds).
    Test Suite 'TransientInstanceResolverTests' passed at 2026-01-15 07:28:11.480.
    Executed 3 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds
    Test Suite 'WeakInstanceResolverTests' started at 2026-01-15 07:28:11.481.
    Test Case '-[SwiftEnvironmentTests.WeakInstanceResolverTests test_givenQueue_whenResolve_shouldDoItInGivenQueue]' started.
    Test Case '-[SwiftEnvironmentTests.WeakInstanceResolverTests test_givenQueue_whenResolve_shouldDoItInGivenQueue]' passed (0.000 seconds).
    Test Case '-[SwiftEnvironmentTests.WeakInstanceResolverTests test_givenResolver_whenResolve_shouldReturnSameInstance]' started.
    Test Case '-[SwiftEnvironmentTests.WeakInstanceResolverTests test_givenResolver_whenResolve_shouldReturnSameInstance]' passed (0.000 seconds).
    Test Case '-[SwiftEnvironmentTests.WeakInstanceResolverTests test_givenValue_whenResolveAfterReleased_shouldReturnNewInstance]' started.
    Test Case '-[SwiftEnvironmentTests.WeakInstanceResolverTests test_givenValue_whenResolveAfterReleased_shouldReturnNewInstance]' passed (0.000 seconds).
    Test Case '-[SwiftEnvironmentTests.WeakInstanceResolverTests test_givenValue_whenResolveWrongType_shouldReturnNil]' started.
    Test Case '-[SwiftEnvironmentTests.WeakInstanceResolverTests test_givenValue_whenResolveWrongType_shouldReturnNil]' passed (0.000 seconds).
    Test Suite 'WeakInstanceResolverTests' passed at 2026-01-15 07:28:11.481.
    Executed 4 tests, with 0 failures (0 unexpected) in 0.000 (0.001) seconds
    Test Suite 'SwiftEnvironmentPackageTests.xctest' passed at 2026-01-15 07:28:11.481.
    Executed 17 tests, with 0 failures (0 unexpected) in 0.023 (0.025) seconds
    Test Suite 'All tests' passed at 2026-01-15 07:28:11.481.
    Executed 17 tests, with 0 failures (0 unexpected) in 0.023 (0.026) seconds
    􀟈 Test run started.
    􀄵 Testing Library Version: 1501
    􀄵 Target Platform: arm64e-apple-macos14.0
    􁁛 Test run with 0 tests in 0 suites passed after 0.001 seconds.

Docs

  • Updated

@hainayanda hainayanda merged commit a905c99 into main Jan 15, 2026
2 of 3 checks passed
@hainayanda hainayanda deleted the feature/llm-improvement branch January 15, 2026 00:40
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.

1 participant