swift
2619c19d - [Sema] Restrict derived conformances.

Commit
6 years ago
[Sema] Restrict derived conformances. Do not derive conformances to `AdditiveArithmetic` or `VectorNumeric` for types with any `let` stored properties with an initial value. Similarly for `Differentiable`, do not derive conformances for types with any `let` stored properties not marked with `@noDerivative` with an initial value. This restriction is important for expected behavior regarding memberwise initializers. Without this restriction, `T.zero` may return an instance of `T` where default-initialized `let` stored properties have a non-zero value. This restriction may be lifted later with support for "true" memberwise initializers that initialize all stored properties, including ones with initial values. Add tests, including first runtime derived conformances tests. Addresses SR-9684 via restriction. May be changed later.
Author
Committer
Parents
  • lib/Sema
    • File
      DerivedConformanceAdditiveArithmeticVectorNumeric.cpp
    • File
      DerivedConformanceDifferentiable.cpp
  • test
    • AutoDiff
      • File
        derived_conformances.swift
    • Sema
      • File
        struct_differentiable.swift