[Issue 4241] New: duplicate union initialization error doesn't give a file location
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu May 27 10:48:59 PDT 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4241
Summary: duplicate union initialization error doesn't give a
file location
Product: D
Version: 2.041
Platform: Other
OS/Version: Windows
Status: NEW
Keywords: diagnostic
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: mrmocool at gmx.de
--- Comment #0 from Trass3r <mrmocool at gmx.de> 2010-05-27 10:48:54 PDT ---
import std.typetuple;
/// repeat a type count times
template Repeat(T, int count)
{
static if (!count)
alias TypeTuple!() Repeat;
else
alias TypeTuple!(T, Repeat!(T, count-1)) Repeat;
}
struct Vector(T, int dim)
{
static assert (dim >= 2 && dim <= 4);
union
{
// including these gives more errors of the same kind
// T[dim] cell; /// array access
// Repeat!(T, dim) tuple; /// for tuple access
/// normal struct element access
struct
{
static if (dim >= 1) union { T x; T r; }
static if (dim >= 2) union { T y; T g; }
static if (dim >= 3) union { T z; T b; }
static if (dim >= 4) union { T w; T a; }
}
}
// these constructors are workarounds for the "overlapping initialization
for _tuple_field_0" problem
static if (dim == 2)
this(T ax, T ay)
{
x = ax;
y = ay;
}
static if (dim == 3)
this(T ax, T ay, T az)
{
x = ax;
y = ay;
z = az;
}
static if (dim == 4)
this(T ax, T ay, T az, T aw)
{
x = ax;
y = ay;
z = az;
w = aw;
}
static if (2 == dim) const static Vector zero = Vector(0, 0);
static if (3 == dim) const static Vector zero = Vector(0, 0, 0);
static if (4 == dim) const static Vector zero = Vector(0, 0, 0, 0);
}
alias Vector!(float, 2) Vector2f; ///
alias Vector!(float, 3) Vector3f; ///
alias Vector!(float, 4) Vector4f; ///
yields:
Error: duplicate union initialization for r
Error: duplicate union initialization for g
Error: duplicate union initialization for r
Error: duplicate union initialization for g
Error: duplicate union initialization for b
Error: duplicate union initialization for r
Error: duplicate union initialization for g
Error: duplicate union initialization for b
Error: duplicate union initialization for a
It would be helpful to have a file location.
Unfortunately for some reason loc is null in StructLiteralExp::toDt(dt_t **pdt)
where the error occurs.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list