www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Deprecation bug?

reply Jack Applegame <japplegame gmail.com> writes:
 struct A {
    void opAssign(int v) const {}
 }
 
 struct B {
     enum a = A();
     alias a this;
 }
 
 enum BB = B();
 
 void main() {
     BB = 10; // Deprecation: Cannot use alias this to partially 
 initialize variable B() of type B. Use a.opAssign
 }
If you change `enum a = A()` to `immutable a = A()`, the deprecation disappears.
Nov 13 2020
parent Jack Applegame <japplegame gmail.com> writes:
On Friday, 13 November 2020 at 10:08:47 UTC, Jack Applegame wrote:
 struct A {
    void opAssign(int v) const {}
 }
 
 struct B {
     enum a = A();
     alias a this;
 }
 
 enum BB = B();
 
 void main() {
     BB = 10; // Deprecation: Cannot use alias this to 
 partially initialize variable B() of type B. Use a.opAssign
 }
If you change `enum a = A()` to `immutable a = A()`, the deprecation disappears.
But if you change `enum a = A()` to `static immutable a = A()`, the deprecation remains.
Nov 13 2020