[Issue 7187] Regression(head 12d62ca5): [CTFE] ICE on slicing
http://d.puremagic.com/issues/show_bug.cgi?id=7187 Denis verylonglogin@gmail.com changed: What|Removed |Added Status|RESOLVED|REOPENED Resolution|FIXED | --- Comment #2 from Denis verylonglogin@gmail.com 2012-01-01 10:59:25 MSK --- If an argument is added to `f` with head commit (227769c4): Assertion failure: '((ArrayLiteralExp *)se-e1)-ownedByCtfe' on line 6307 in file 'interpret.c' --- int[] f(int) { return [0]; } int g(int[] r) { auto t = r[0..0]; return 0; } static assert(g(f(0)) == 0); --- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 3448] __traits(compiles) returns true for a non-compilable template instantiation
http://d.puremagic.com/issues/show_bug.cgi?id=3448 Denis verylonglogin@gmail.com changed: What|Removed |Added CC||verylonglogin@gmail.com --- Comment #2 from Denis verylonglogin@gmail.com 2012-01-01 13:20:05 MSK --- Just a bit smaller testcase: --- void t()() { error; } static assert(!__traits(compiles, t!()())); // assertion fails static if(__traits(compiles, t!()())) { } // Error: undefined identifier --- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 3448] __traits(compiles) not in a function returns true for a non-compilable template instantiation
http://d.puremagic.com/issues/show_bug.cgi?id=3448 Denis verylonglogin@gmail.com changed: What|Removed |Added Summary|__traits(compiles) returns |__traits(compiles) not in a |true for a non-compilable |function returns true for a |template instantiation |non-compilable template ||instantiation --- Comment #3 from Denis verylonglogin@gmail.com 2012-01-01 13:35:40 MSK --- This bug is only for `static assert/if` not in a function: --- void t()() { error; } void f() { static assert(!__traits(compiles, t!()())); // passes static if(__traits(compiles, t!()())) { } // no errors } --- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 3616] __traits(compiles) returns true for uncompilable code due to static assert
http://d.puremagic.com/issues/show_bug.cgi?id=3616 Denis verylonglogin@gmail.com changed: What|Removed |Added Status|NEW |RESOLVED CC||verylonglogin@gmail.com Resolution||INVALID --- Comment #1 from Denis verylonglogin@gmail.com 2012-01-01 13:37:37 MSK --- Assertion in `foo` should fail because `foo` is a regular function and compiles independently of assertion in `main`. This code compiles: --- void foo()() { static assert(false); } void main() { static assert(!__traits(compiles, foo!()())); } --- Note, that due to bug 3448 __traits(compiles) works correctly only if it is in a function. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 7193] New: Regression(2.058head): ICE: delete lambda expression crashes dmd
http://d.puremagic.com/issues/show_bug.cgi?id=7193 Summary: Regression(2.058head): ICE: delete lambda expression crashes dmd Product: D Version: D2 Platform: All OS/Version: All Status: NEW Keywords: ice-on-invalid-code Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: k.hara...@gmail.com --- Comment #0 from Kenji Hara k.hara...@gmail.com 2012-01-01 02:44:35 PST --- Following code crashes dmd. void main() { delete a = a; } Output: test.d(5): Error: __lambda2 is not an lvalue ((crash)) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 965] `is(uncompilable template)` is true and doesn't gap errors if not in a function
http://d.puremagic.com/issues/show_bug.cgi?id=965 Denis verylonglogin@gmail.com changed: What|Removed |Added CC||verylonglogin@gmail.com Platform|x86 |All Version|1.005 |D1 D2 Summary|incorrect result for|`is(uncompilable |is(BadTemplate!())|template)` is true and ||doesn't gap errors if not ||in a function OS/Version|Linux |All --- Comment #3 from Denis verylonglogin@gmail.com 2012-01-01 13:59:08 MSK --- This code compiles: --- struct S() { void f() { error; } } void f() { static assert(!is(S!())); // passes static if(is(S!())) { } // no errors } --- This bug is only for `is()` not in a function: --- struct S() { void f() { error; } } static assert(!is(S!())); // assertion fails static if(is(S!())) { } // Error: undefined identifier --- (In reply to comment #1) This is happening because compiling this()'s body is not necessary to determine the type. Not sure if this is a bug or not. This is a bug because an assertion passes in a function and because of undefined identifier error with `static if`. Someone familiar with dmd internals, mark bug 3448 as a duplicate or show the difference between `is(...)` and `__traits(compiles, ...)` in context of this issue. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 7193] Regression(2.058head): ICE: delete lambda expression crashes dmd
http://d.puremagic.com/issues/show_bug.cgi?id=7193 Kenji Hara k.hara...@gmail.com changed: What|Removed |Added Keywords||patch --- Comment #1 from Kenji Hara k.hara...@gmail.com 2012-01-01 03:00:35 PST --- https://github.com/D-Programming-Language/dmd/pull/593 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 7194] New: [CTFE] Incorrect behaviour with pointers as local struct variable fields
http://d.puremagic.com/issues/show_bug.cgi?id=7194 Summary: [CTFE] Incorrect behaviour with pointers as local struct variable fields Product: D Version: D1 D2 Platform: Other OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: verylonglogin@gmail.com --- Comment #0 from Denis verylonglogin@gmail.com 2012-01-01 14:15:04 MSK --- --- struct S { int* p, p2; } int f() { assert(S().p == null); // passes assert(!S().p); // passes assert(S().p == S().p2); // passes auto s = S(); assert(!s.p); // passes, note: `s.p` also passes assert(s.p == null); // fails assert(s.p == s.p2); // fails return 0; } int g() { auto s = S(); assert(s.p); // passes but should fail return 0; } void t()() { enum e = g(); } // const for D1 static assert(f() == 0); // static assert is in a function because of @@@BUG3448@@@ aka @@@BUG965@@@ void f3448() { static assert(!__traits(compiles, t!()())); } // is(typeof()) for D1 --- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 5103] Container Documentation missing syntax
http://d.puremagic.com/issues/show_bug.cgi?id=5103 Nick Treleaven ntrel-pub...@yahoo.co.uk changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED --- Comment #6 from Nick Treleaven ntrel-pub...@yahoo.co.uk 2012-01-01 05:28:39 PST --- This bug got fixed when the main site changed to d-p-l.org. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 7135] [tdpl] Multiple delegate-related issues (literal syntax, @system deduction)
http://d.puremagic.com/issues/show_bug.cgi?id=7135 --- Comment #8 from Kenji Hara k.hara...@gmail.com 2012-01-01 05:56:47 PST --- (In reply to comment #7) One more thing - the example in the book reads: obj.addMethod(sayHello, Variant(Dynamic, Variant[]...) { writeln(Hello, world!); return Variant(); }); That doesn't work. The compilable version reads: obj.addMethod(sayHello, delegate Variant(Dynamic, Variant[]...) { writeln(Hello, world!); return Variant(); }); Can we arrange things such that the delegate or function keywords aren't require in the literal definition? From past, omission of delegate keyword + specification of return type has been wrong syntax. So Variant(Dynamic, Varinat[]...) { ... } couldn't compile. And recent commit https://github.com/D-Programming-Language/dmd/commit/c50eb5f5726a65efa1224ff0f0fd60acbb6e3027 has been disallowed optional parameter names, because of parameter type inference. From these matters, current TDPL code never become valid. Today, following literal notations has been allowed with current dmd. delegate Variant(Dynamic self, Variant[] args...) {...} delegate (Dynamic self, Variant[] args...) {...} (Dynamic self, Variant[] args...) {...} Note: Unfortunately, current dmd does not support parameter type inference + type-safe variadisc like follows. //delegate (self, args...) {...} //(self, args...) {...} Because args could have three kind of infer targets. T[N] args...// T is the element type of args T[] args... // T is the element type of args T args... // T is class type, and args is translated to new T(args) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 7190] Tuple length incorrect
http://d.puremagic.com/issues/show_bug.cgi?id=7190 --- Comment #1 from Kenji Hara k.hara...@gmail.com 2012-01-01 06:37:02 PST --- This is a forward reference bug. Workaround in core/Model.d: class SqlitePersister(T) { +static assert(T.sizeof); // force running semantic of T + // to resolve sizeof property static assert(T.tupleof.length 0, T.stringof ~ `(` ~ (T.tupleof.length + '0') ~ `): ` ~ T.tupleof.stringof); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 7190] Tuple length incorrect
http://d.puremagic.com/issues/show_bug.cgi?id=7190 Kenji Hara k.hara...@gmail.com changed: What|Removed |Added Keywords||patch Platform|Other |All --- Comment #2 from Kenji Hara k.hara...@gmail.com 2012-01-01 07:23:02 PST --- https://github.com/D-Programming-Language/dmd/pull/595 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 2411] Reference Tuple Foreach
http://d.puremagic.com/issues/show_bug.cgi?id=2411 Kenji Hara k.hara...@gmail.com changed: What|Removed |Added Keywords||patch --- Comment #4 from Kenji Hara k.hara...@gmail.com 2012-01-01 08:28:16 PST --- https://github.com/D-Programming-Language/dmd/pull/596 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 2411] Reference Tuple Foreach
http://d.puremagic.com/issues/show_bug.cgi?id=2411 --- Comment #5 from Kenji Hara k.hara...@gmail.com 2012-01-01 08:31:04 PST --- My patch requires explicit 'ref'. void main() { S s; // foreach(element; s.tupleof) // doesn't work foreach(ref element; s.tupleof) // OK element = 2; assert(s.foo == 2); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 7169] [CTFE] Assertion failure with inner struct
http://d.puremagic.com/issues/show_bug.cgi?id=7169 Don clugd...@yahoo.com.au changed: What|Removed |Added Keywords||ice-on-invalid-code CC||clugd...@yahoo.com.au --- Comment #1 from Don clugd...@yahoo.com.au 2012-01-01 11:43:28 PST --- According to the spec, I don't think this is supposed to work. expression.html says: Nested structs cannot be used as fields or as the element type of an array: void foo() { int i = 7; struct SS { int x,y; int bar() { return x + i + 1; } } struct DD { SS s; // error, cannot be field } } So creating such a struct by passing the nested struct as a template parameter shouldn't work either. But, the compiler accepts the examples that the spec says are errors. So I'm not sure if the bug is in the spec or the compiler. The ICE is a variation of bug 6419, but where the nested struct is part of a struct literal. Here's a test case with the same ICE, but this time where it's part of an array. void func2(T)(T t){ T[2] s; s[0] = t; } static assert({ struct InnerStruct{ void func(){} } func2(InnerStruct()); return true; }()); -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 5467] library-based typedef
http://d.puremagic.com/issues/show_bug.cgi?id=5467 Stewart Gordon s...@iname.com changed: What|Removed |Added CC||s...@iname.com --- Comment #3 from Stewart Gordon s...@iname.com 2012-01-01 13:50:10 PST --- (In reply to comment #0) ParallelTypdef!(double, allow_arithmetic, allow_mixed:*,/,%) Miles; This leaves much to be desired: we want to allow Miles * double but not Miles * Miles, and Miles + Miles but not Miles + double. Moreover, Miles / Miles wants to return double. Maybe we need a more specialised version of ParallelTypedef that does primitive units checking. opMul and opDiv would themselves be templates therein. Maybe I'll have a go at implementing something when I have a bit more time 2. Opaque handle types that can be used with overloading. The base type of the typedef is just the storage strategy: So it's basically a struct wrapper. 3. Proper subtype. Create a true subtype of a type that allows explicit initialization from the type and implicit conversion to the type. This seems the closest to how typedefs behave at the moment. 4. Proper supertype. The base type implicitly converts to the introduced type, but not vice versa. Makes sense, but I'm not sure what practical it would have -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 314] [module] Static, renamed, and selective imports are always public
http://d.puremagic.com/issues/show_bug.cgi?id=314 Walter Bright bugzi...@digitalmars.com changed: What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED --- Comment #35 from Walter Bright bugzi...@digitalmars.com 2012-01-01 14:26:53 PST --- https://github.com/D-Programming-Language/dmd/commit/ff9fa25f3f7f3091787f7459e1950add6cff50b2 https://github.com/D-Programming-Language/dmd/commit/93a643aba6f62db1b7658c2bfb51f9d0b576c337 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 7195] New: remove in std.algorithm documentation quick links goes to wrong remove
http://d.puremagic.com/issues/show_bug.cgi?id=7195 Summary: remove in std.algorithm documentation quick links goes to wrong remove Product: D Version: unspecified Platform: Other OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: websites AssignedTo: nob...@puremagic.com ReportedBy: e...@gnuk.net --- Comment #0 from Brad Anderson e...@gnuk.net 2012-01-01 15:19:56 PST --- It gets linked to remove member of the EditOps enum rather than one of the remove functions. I don't know DDoc enough (or at all) to resolve this but I did take a look. It's just using $(MYREF remove) in the quick links which I guess just uses the first remove it sees (EditOps appears earlier in the file than remove()). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 7195] remove in std.algorithm documentation quick links goes to wrong remove
http://d.puremagic.com/issues/show_bug.cgi?id=7195 Jonathan M Davis jmdavisp...@gmx.com changed: What|Removed |Added CC||jmdavisp...@gmx.com --- Comment #1 from Jonathan M Davis jmdavisp...@gmx.com 2012-01-01 15:33:57 PST --- It's not really fixable. The only thing that could be done would be to reorder the declarations. At present, ddoc produces anchors which have no understanding of hierarchy or overloading. So, all symbols with the same name have the same anchor, and so it's always the first one which gets linked to. In order to fix this, ddoc needs to be improved. There has been talk of doing it, but no one has actually done it yet. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 7195] remove in std.algorithm documentation quick links goes to wrong remove
http://d.puremagic.com/issues/show_bug.cgi?id=7195 Jonathan M Davis jmdavisp...@gmx.com changed: What|Removed |Added Status|NEW |RESOLVED Resolution||DUPLICATE --- Comment #2 from Jonathan M Davis jmdavisp...@gmx.com 2012-01-01 15:36:08 PST --- *** This issue has been marked as a duplicate of issue 6017 *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 6017] std.algorithm.remove has a wrong link
http://d.puremagic.com/issues/show_bug.cgi?id=6017 Jonathan M Davis jmdavisp...@gmx.com changed: What|Removed |Added CC||e...@gnuk.net --- Comment #11 from Jonathan M Davis jmdavisp...@gmx.com 2012-01-01 15:36:08 PST --- *** Issue 7195 has been marked as a duplicate of this issue. *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 314] [module] Static, renamed, and selective imports are always public
http://d.puremagic.com/issues/show_bug.cgi?id=314 --- Comment #36 from Leandro Lucarella llu...@gmail.com 2012-01-01 16:04:19 PST --- And the most voted bug from all times (41 votes, the next most voted have 28 votes) finally get fixed. Thanks for the persistence, ckamm!!! :) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 6170] Undefined reference for methods without body implemented in derived class
http://d.puremagic.com/issues/show_bug.cgi?id=6170 Leandro Lucarella llu...@gmail.com changed: What|Removed |Added Attachment #1001|application/octet-stream|text/plain mime type|| -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 6058] Contract inheritance causes compiler error
http://d.puremagic.com/issues/show_bug.cgi?id=6058 Leandro Lucarella llu...@gmail.com changed: What|Removed |Added Attachment #990|application/octet-stream|text/plain mime type|| -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 5467] library-based typedef
http://d.puremagic.com/issues/show_bug.cgi?id=5467 Robert Clipsham rob...@octarineparrot.com changed: What|Removed |Added CC||rob...@octarineparrot.com --- Comment #4 from Robert Clipsham rob...@octarineparrot.com 2012-01-02 00:15:40 GMT --- (In reply to comment #0) 1. Something that's just like another type yet parallel with it. This is good for abstractions that encode different units of measurement that aren't supposed to be mixed. ParallelTypedef!double Miles; Such a type should accept explicit initialization from a regular double: auto dist = Miles(3.2); However it shouldn't accept initialization from another parallel typedef: ParallelTypedef!double Kms; auto dist1 = Kms(4); auto dist2 = Miles(dist1); // no bikeshed This needs a better name, parallel is transitive, so Miles(dist1) should work (if there are 3 things, A, B and C, A is parallel to B and B is parallel to C, then A is parallel to C). /bikeshed -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 7190] Tuple length incorrect
http://d.puremagic.com/issues/show_bug.cgi?id=7190 Walter Bright bugzi...@digitalmars.com changed: What|Removed |Added Status|NEW |RESOLVED CC||bugzi...@digitalmars.com Resolution||FIXED --- Comment #3 from Walter Bright bugzi...@digitalmars.com 2012-01-01 17:14:27 PST --- https://github.com/D-Programming-Language/dmd/commit/39124548bdab79769afe5699c50fe6e79421bcda https://github.com/D-Programming-Language/dmd/commit/3d4b0b6d6f82bd03ce57e581cbe16e8fb4af0d7a -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 7196] New: Unfair function address overload resolution
http://d.puremagic.com/issues/show_bug.cgi?id=7196 Summary: Unfair function address overload resolution Product: D Version: unspecified Platform: Other OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: timon.g...@gmx.ch --- Comment #0 from timon.g...@gmx.ch 2012-01-01 17:25:50 PST --- Tested with DMD 2.057 auto foo(int x){return x;} auto foo(double x){return x;} void main() { auto x = (foo)(1); // ok auto y = (foo)(1.0); // fail } Error: cannot implicitly convert expression (1) of type double to int The code should either compile, or both lines should fail. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 7197] New: enum string doesn't work with CTFE
http://d.puremagic.com/issues/show_bug.cgi?id=7197 Summary: enum string doesn't work with CTFE Product: D Version: D2 Platform: Other OS/Version: Mac OS X Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: and...@metalanguage.com --- Comment #0 from Andrei Alexandrescu and...@metalanguage.com 2012-01-01 17:44:07 PST --- import std.stdio; string toConcatenatedForm(string m, string[] args...) { string result = q{; for (;;) { if (!m.length) { return result ~ '}'; } if (m[0] != '$') { result ~= m[0]; m = m[1 .. $]; continue; } if (m[1] = '1' m[1] = '9') { result ~= } ~ ; result ~= expand!(q{ ~ args[m[1] - '1'] ~ }) ~ q{; m = m[2 .. $]; continue; } } } template expand(string m, args...) { enum string expand = mixin(toConcatenatedForm(m, args)); } unittest { enum string s = expand!($1, abc); writeln(s); writeln(expand!($1, s)); } void main(){} The code above causes an ICE: Assertion failed: (v-ctfeAdrOnStack = 0 v-ctfeAdrOnStack stackPointer()), function setValue, file interpret.c, line 100. Replacing the first line in the unittest with static immutable string s = expand!($1, abc); makes the code work. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 7197] enum string doesn't work with CTFE
http://d.puremagic.com/issues/show_bug.cgi?id=7197 bearophile_h...@eml.cc changed: What|Removed |Added CC||bearophile_h...@eml.cc --- Comment #1 from bearophile_h...@eml.cc 2012-01-01 18:15:19 PST --- Reduced a bit: int foo(int[] x...) { return 0; } template bar(y...) { enum int bar = foo(y); } enum int z = 1; enum int w = bar!(z); void main() {} -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 5628] std.math unittest disabled
http://d.puremagic.com/issues/show_bug.cgi?id=5628 --- Comment #2 from Brad Roberts bra...@puremagic.com 2012-01-01 21:24:28 PST --- The bug in comment 1 is fixed. There are 3 asserts left that fail w/in std.math: assert(pow(xd, neg2) == 1 / (x * x)); assert(pow(xf, neg8) == 1 / ((x * x) * (x * x) * (x * x) * (x * x))); assert(feqrel(real.min_normal/8,real.min_normal/17)==3); They're currently versioned out for x86_64 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 4523] [tdpl] .remove method for Associative Arrays returns void in all cases
http://d.puremagic.com/issues/show_bug.cgi?id=4523 Kenji Hara k.hara...@gmail.com changed: What|Removed |Added Keywords||patch --- Comment #4 from Kenji Hara k.hara...@gmail.com 2012-01-01 22:57:46 PST --- https://github.com/D-Programming-Language/dmd/pull/597 https://github.com/D-Programming-Language/druntime/pull/111 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---