[Issue 18232] Union methods fail to initialize local variables to .init

2018-01-14 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=18232

--- Comment #6 from github-bugzi...@puremagic.com ---
Commits pushed to master at https://github.com/dlang/dmd

https://github.com/dlang/dmd/commit/29c1e309be359f871d4052c025f7f3144005d092
Fix issue 18232: local vars in union member functions needs initializer.

The `isunion` condition is too broad, because it also excludes local
variables declared inside union member functions. Moreoever, it is not
necessary, because the `fd` condition later on already excludes union
fields, since they would not be inside a function declaration.

https://github.com/dlang/dmd/commit/4cf228eb33ee8e2b4b6856fa7c08990217039ac7
Merge pull request #7687 from quickfur/issue18232

Fix issue 18232: local vars in union member functions needs initializer.
merged-on-behalf-of: Sebastian Wilzbach 

--


[Issue 18232] Union methods fail to initialize local variables to .init

2018-01-14 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=18232

github-bugzi...@puremagic.com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--


[Issue 18232] Union methods fail to initialize local variables to .init

2018-01-12 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=18232

hst...@quickfur.ath.cx changed:

   What|Removed |Added

   Keywords||pull

--- Comment #5 from hst...@quickfur.ath.cx ---
https://github.com/dlang/dmd/pull/7687

--


[Issue 18232] Union methods fail to initialize local variables to .init

2018-01-12 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=18232

--- Comment #4 from hst...@quickfur.ath.cx ---
More interesting clues: running a union method inside CTFE containing a local
variable without an explicit initializer causes a CTFE error "cannot modify
variable at compile time", whereas explicitly initializing the local variable
works.

--
union U {
int method() {
int x; // causes CTFE failure unless explicitly initialized
return x;
}
}
enum y = U.init.method();
--

--


[Issue 18232] Union methods fail to initialize local variables to .init

2018-01-12 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=18232

--- Comment #3 from hst...@quickfur.ath.cx ---
Minimized code:
--
union U {
int method() {
int x;
return x;
}
}
--

The disassembly shows that x is never initialized to 0, and a garbage value is
returned.

--


[Issue 18232] Union methods fail to initialize local variables to .init

2018-01-12 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=18232

hst...@quickfur.ath.cx changed:

   What|Removed |Added

Summary|string variable in toString |Union methods fail to
   |method of Union: invalid|initialize local variables
   |code (crash/segfault)   |to .init

--