[Issue 14361] DMD should compile SDC test0158.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14361

--- Comment #7 from Ketmar Dark  ---
and space to. and absense of chars altogether. to be honest, everything is just
a "0" or "1". so i wonder why you are using such unnecessary complex things as
high-level languages instead of entering binary codes with switches, as real
men do.

--


[Issue 14361] DMD should compile SDC test0158.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14361

--- Comment #6 from deadalnix  ---
(In reply to Ketmar Dark from comment #5)
> and it always was. it's the indentifier which denotes type.

Well then 3 always was as well. It is the "indentifier" which denotes value.
Good to see you agree with me.

--


[Issue 14361] DMD should compile SDC test0158.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14361

--- Comment #5 from Ketmar Dark  ---
and it always was. it's the indentifier which denotes type.

--


[Issue 14361] DMD should compile SDC test0158.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14361

deadalnix  changed:

   What|Removed |Added

 CC||deadal...@gmail.com

--- Comment #4 from deadalnix  ---
alias foo = int;

Is int an identifier now ?

--


[Issue 14363] DMD should compile SDC test0165.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14363

--- Comment #3 from Kenji Hara  ---
(In reply to Shammah Chancellor from comment #2)
> Your code has a bug?
> 
> return new B(5);
> 
> Should be:
> 
> return new B();

Yes. Sorry.

> With that, your example compiles and works just fine on SDC.

Hmm, interesting. SDC might use a thunk to get valid context pointer for base
classes from the instantiated context.
But it would need some runtime cost and additional vtbl entry. I don't have any
knowledge about the SDC backend, but the ABI around nested classes would be
different from dmd's.

--


[Issue 14359] DMD does not compile SDC test0154.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14359

--- Comment #1 from Kenji Hara  ---
How SDC works for following codes?

auto foo(T u, T)() {
   return typeof(u).stringof;
}

pragma(msg, foo(1)); // T is deduced to int ... it's reasonable.

pragma(msg, foo(1, int));// typeof(1) is int by default, so it might be
accepted

pragma(msg, foo(1, long));   // typeof(u) will be long, or conflict happens?
pragma(msg, foo(1, double)); // typeof(u) will be double, or conflict happens?

pragma(msg, foo(1, string)); // definitely conflicts

--


[Issue 14363] DMD should compile SDC test0165.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14363

--- Comment #2 from Shammah Chancellor  ---
Your code has a bug?

return new B(5);

Should be:

return new B();


With that, your example compiles and works just fine on SDC.


(In reply to Kenji Hara from comment #1)
> I'm not sure why SDC accepts the code.
> 
> The following reduced case is correctly rejected by dmd, because ba.foo()
> won't work expectedly. Maybe SDC generates wrong code?
> 
> void main()
> {
> uint x = 7;
> 
> class A
> {
> auto foo()
> {
> return x;
> }
> }
> 
> auto makeB(uint y)
> {
> class B : A
> {
> auto bar()
> {
> return foo() + y;
> }
> }
> 
> return new B(5);
> }
> 
> A a = new A();
> assert(a.foo() == 7);
> 
> auto b = makeB(3);
> assert(b.bar() == 10);
> 
> A ba = b;
> assert(ba.foo() == 7);
> }

--


[Issue 14357] Match on specType does not check the conflict with already deduced template arguments

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14357

Kenji Hara  changed:

   What|Removed |Added

   Keywords||pull
   Hardware|x86 |All
Version|unspecified |D2
Summary|SDC test0128.d compiles,|Match on specType does not
   |but should not  |check the conflict with
   ||already deduced template
   ||arguments
 OS|Mac OS X|All

--- Comment #1 from Kenji Hara  ---
https://github.com/D-Programming-Language/dmd/pull/4530

--


[Issue 14366] DMD should not compile SDC test0174.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14366

Kenji Hara  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #3 from Kenji Hara  ---
(In reply to Shammah Chancellor from comment #2)
> What?  No warning is printed.  Why aren't warnings printed by default --
> that seems bad.

It's current dmd behavior. So this issue is a duplication of enhancement 14367.

*** This issue has been marked as a duplicate of issue 14367 ***

--


[Issue 14367] Print warnings by default

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14367

--- Comment #2 from Kenji Hara  ---
*** Issue 14366 has been marked as a duplicate of this issue. ***

--


[Issue 14365] DMD should error or warn on SDC test0173.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14365

Kenji Hara  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |INVALID

--- Comment #4 from Kenji Hara  ---
DMD actually report "statement is not reachable" warning with -w switch. So
this is an invalid issue.

--


[Issue 14363] DMD should compile SDC test0165.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14363

--- Comment #1 from Kenji Hara  ---
I'm not sure why SDC accepts the code.

The following reduced case is correctly rejected by dmd, because ba.foo() won't
work expectedly. Maybe SDC generates wrong code?

void main()
{
uint x = 7;

class A
{
auto foo()
{
return x;
}
}

auto makeB(uint y)
{
class B : A
{
auto bar()
{
return foo() + y;
}
}

return new B(5);
}

A a = new A();
assert(a.foo() == 7);

auto b = makeB(3);
assert(b.bar() == 10);

A ba = b;
assert(ba.foo() == 7);
}

--


[Issue 14371] [CTFE] Binary assignment expression makes wrong result in compile-time

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14371

Kenji Hara  changed:

   What|Removed |Added

   Keywords||pull

--- Comment #1 from Kenji Hara  ---
https://github.com/D-Programming-Language/dmd/pull/4529

--


[Issue 14372] New: Heisenbug on FreeBSD: std/socket.d(523) Assertion failure during unittests

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14372

  Issue ID: 14372
   Summary: Heisenbug on FreeBSD: std/socket.d(523) Assertion
failure during unittests
   Product: D
   Version: D2
  Hardware: x86
OS: FreeBSD
Status: NEW
  Severity: normal
  Priority: P1
 Component: Phobos
  Assignee: nob...@puremagic.com
  Reporter: bugzi...@digitalmars.com

0.008s PASS release32 std.algorithm.sorting
0.004s PASS release32 std.algorithm.searching
 --- std.socket(521) test fails depending on environment ---
 (core.exception.AssertError@std/socket.d(523): Assertion failure

0x8d3fa70 <_init+13583836> at
/home/braddr/sandbox/at-client/pull-1480933-FreeBSD_32/phobos/generated/freebsd/release/32/unittest/test_runner
0x8d1ac86 <_init+13432818> at
/home/braddr/sandbox/at-client/pull-1480933-FreeBSD_32/phobos/generated/freebsd/release/32/unittest/test_runner
0x8d1a7c2 <_init+13431598> at
/home/braddr/sandbox/at-client/pull-1480933-FreeBSD_32/phobos/generated/freebsd/release/32/unittest/test_runner
0x8d1ac55 <_init+13432769> at
/home/braddr/sandbox/at-client/pull-1480933-FreeBSD_32/phobos/generated/freebsd/release/32/unittest/test_runner
0x8d3f998 <_init+13583620> at
/home/braddr/sandbox/at-client/pull-1480933-FreeBSD_32/phobos/generated/freebsd/release/32/unittest/test_runner
0x804c568 <_init+4308> at
/home/braddr/sandbox/at-client/pull-1480933-FreeBSD_32/phobos/generated/freebsd/release/32/unittest/test_runner
0x9613231  at
/home/braddr/sandbox/at-client/pull-1480933-FreeBSD_32/phobos/generated/freebsd/release/32/unittest/test_runner
0x9609a6d  at
/home/braddr/sandbox/at-client/pull-1480933-FreeBSD_32/phobos/generated/freebsd/release/32/unittest/test_runner
0x9609a30  at
/home/braddr/sandbox/at-client/pull-1480933-FreeBSD_32/phobos/generated/freebsd/release/32/unittest/test_runner
0x96099c8  at
/home/braddr/sandbox/at-client/pull-1480933-FreeBSD_32/phobos/generated/freebsd/release/32/unittest/test_runner
0x804ca8c <_init+5624> at
/home/braddr/sandbox/at-client/pull-1480933-FreeBSD_32/phobos/generated/freebsd/release/32/unittest/test_runner
0x804c327 <_init+3731> at
/home/braddr/sandbox/at-client/pull-1480933-FreeBSD_32/phobos/generated/freebsd/release/32/unittest/test_runner
0x804c298 <_init+3588> at
/home/braddr/sandbox/at-client/pull-1480933-FreeBSD_32/phobos/generated/freebsd/release/32/unittest/test_runner
0x2  at ???)
No service for epmap.

--


[Issue 14371] [CTFE] Binary assignment expression makes wrong result in compile-time

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14371

Kenji Hara  changed:

   What|Removed |Added

   Keywords||CTFE

--


[Issue 14371] New: [CTFE] Binary assignment expression makes wrong result in compile-time

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14371

  Issue ID: 14371
   Summary: [CTFE] Binary assignment expression makes wrong result
in compile-time
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Keywords: wrong-code
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: k.hara...@gmail.com

Test case:

int ctfetest()
{
int x;
++(x += 1);
return x == 2;
}

void main()
{
enum v = ctfetest();
assert(v == ctfetest());   // should be ok, but doesn't
}

--


[Issue 14370] std.utf.toUTF8 has an incorrect contract

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14370

briancsch...@gmail.com changed:

   What|Removed |Added

   Hardware|x86_64  |All
Summary|writeln() crashes on|std.utf.toUTF8 has an
   |invalid dchar   |incorrect contract
 OS|Windows |All

--


[Issue 14370] writeln() crashes on invalid dchar

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14370

briancsch...@gmail.com changed:

   What|Removed |Added

 CC||briancsch...@gmail.com

--- Comment #1 from briancsch...@gmail.com ---
There is a contract in toUTF8 that checks the return value of isValidDchar, but
isValidDchar will return true for some code points that toUTF8 does not handle.

--


[Issue 14370] New: writeln() crashes on invalid dchar

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14370

  Issue ID: 14370
   Summary: writeln() crashes on invalid dchar
   Product: D
   Version: D2
  Hardware: x86_64
OS: Windows
Status: NEW
  Severity: normal
  Priority: P1
 Component: Phobos
  Assignee: nob...@puremagic.com
  Reporter: erikas.aub...@gmail.com

The following code seems to cause, depending on system and implementation,
either a segfault, sigabrt, or "HLT instruction" exception.

import std.stdio;
import std.encoding;

void main() {
   writeln(INVALID_SEQUENCE);
}

--


[Issue 14330] Wrong DWARF type of dynamic array variable

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14330

Martin Krejcirik  changed:

   What|Removed |Added

   Keywords||pull
Summary|Global variable causes  |Wrong DWARF type of dynamic
   |wrong DWARF type of local   |array variable
   |variable|

--- Comment #1 from Martin Krejcirik  ---
https://github.com/D-Programming-Language/dmd/pull/4526

--


[Issue 14364] DMD should compile (correctly) SDC test0167.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14364

Ketmar Dark  changed:

   What|Removed |Added

 CC||ket...@ketmar.no-ip.org

--- Comment #4 from Ketmar Dark  ---
actually, compiler must warn about sequence point error. but DMD is for smarts,
so it does it's best to carefully hide such errors from programmer.

--


[Issue 14367] Print warnings by default

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14367

bearophile_h...@eml.cc changed:

   What|Removed |Added

 CC||bearophile_h...@eml.cc

--- Comment #1 from bearophile_h...@eml.cc ---
See also Issue 13040 , Issue 10147

--


[Issue 6107] ICE(expression.c) when a non-template member named '__ctor' exists in a struct, and the constructor is attempted to be invoked.

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=6107

--- Comment #5 from github-bugzi...@puremagic.com ---
Commit pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/1a40e089de40933bcadb6352f163e6e470286e3f
Fix line number of diagnostic error message for issue 6107

--


[Issue 14369] New: ParameterDefaultValue does not work with convertion using a non-ctfe able opCall / ctor

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14369

  Issue ID: 14369
   Summary: ParameterDefaultValue does not work with convertion
using a non-ctfe able opCall / ctor
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: pro.mathias.l...@gmail.com

Currently, the following code will fail to compile:


void main() {
import std.datetime, std.traits;
interface IKeysAPI {
string create(SysTime expiry = 0);
}

alias ParamDefaults = ParameterDefaultValueTuple!(IKeysAPI.create); 
}


IIUC, when getting a value using `__parameters`, the value is expected to be of
the type of the argument, and thus is converted as soon as anyone tries to read
it.
I marked it as a DMD bug because I believe it should not try to do the
convertion, but rather expose more informations than just a typetuple and let
the library's contributor decide.

Ultimately, what I'll be aiming for is something like a struct with:
- 'Type'   => alias to the type of the parameter.
- 'identifier' => Well you get it.
- 'value'  => Default value of the parameter. Either a TypeTuple with one
or 0 entry, or another brighter solution. This should take into account that
default value can be C function calls (like `time_t currTime = time(null)`),
which is why this field could be an alias.

--


[Issue 6766] Forward reference error for default struct/class arguments

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=6766

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

   What|Removed |Added

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

--


[Issue 340] [Tracker] Forward reference bugs and other order-of-declaration issues

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=340
Issue 340 depends on issue 6766, which changed state.

Issue 6766 Summary: Forward reference error for default struct/class arguments
https://issues.dlang.org/show_bug.cgi?id=6766

   What|Removed |Added

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

--


[Issue 11166] Forward reference error when alias of template instance is private

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=11166

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

   What|Removed |Added

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

--


[Issue 11166] Forward reference error when alias of template instance is private

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=11166

--- Comment #3 from github-bugzi...@puremagic.com ---
Commit pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/5949d0efb22fd09561d392ce392ce68a385d1044
fix Issue 11166 - Forward reference error when alias of template instance is
private

--


[Issue 6766] Forward reference error for default struct/class arguments

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=6766

--- Comment #5 from github-bugzi...@puremagic.com ---
Commits pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/a7bdba47f09f7dba2fbbc6a3d91d8ba110e7
fix Issue 6766 - Forward reference error for default struct/class arguments

https://github.com/D-Programming-Language/dmd/commit/b675901392ad8e6873e47f77172e6e36f49aa351
Merge pull request #4457 from 9rnsr/fix6766

Issue 6766 - Forward reference error for default struct/class arguments

--


[Issue 14368] New: stdio.rawRead underperforms stdio

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14368

  Issue ID: 14368
   Summary: stdio.rawRead underperforms stdio
   Product: D
   Version: D2
  Hardware: x86_64
OS: Linux
Status: NEW
  Severity: enhancement
  Priority: P1
 Component: Phobos
  Assignee: nob...@puremagic.com
  Reporter: cooper.charle...@gmail.com

Performance of std.stdio.rawRead is 50-75% slower than core.std.stdio.fread in
tight loop. The performance of a thin wrapper should match C stdio performance
or users will be unhappy.

// stdioperf.d
struct mystruct {
long data[4];
}
void main() {
enum bool CSTDIO = false;
mystruct foo;
static if (CSTDIO) {
import core.stdc.stdio : stdin,fread;
while (0 != fread(&foo, foo.sizeof, 1, stdin)) {}
} else {
static import std.stdio;
while (0 != std.stdio.stdin.rawRead((&foo)[0..1]).length) {}
}
}
//EOF

$ dmd --version
DMD64 D Compiler v2.067.0
Copyright (c) 1999-2014 by Digital Mars written by Walter Bright
$ dmd -O -inline -release -noboundscheck stdioperf.d 
$ time dd if=/dev/zero bs=1M count=8192 | ./stdioperf 
8192+0 records in
8192+0 records out
8589934592 bytes (8.6 GB) copied, 7.0038 s, 1.2 GB/s

real0m7.005s
user0m5.792s
sys0m6.924s


$ gdc --version
gdc (Debian 4.9.2-10) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ gdc -O3 -fno-bounds-check -fno-assert -fno-invariants -fno-in -fno-out
stdioperf.d 
$ time dd if=/dev/zero bs=1M count=8192 | ./a.out 
8192+0 records in
8192+0 records out
8589934592 bytes (8.6 GB) copied, 6.07485 s, 1.4 GB/s

real0m6.076s
user0m4.908s
sys0m6.684s

With CSTDIO = true (performance is same no matter the compiler):
$ gdc -O3 stdioperf.d 
$ time dd if=/dev/zero bs=1M count=8192 | ./a.out 
8192+0 records in
8192+0 records out
8589934592 bytes (8.6 GB) copied, 4.18047 s, 2.1 GB/s

real0m4.182s
user0m2.888s
sys0m3.888s


Profiling suggests the overhead comes from the compiler failing to inline calls
to std.exception.enforce, calling errnoEnforce even when fread's return
indicates success, and from buffer slicing overhead.

The following patch to d/4.9/std/stdio.d (front end D 2.065) confirms this,
reducing the performance gap to ~2% (gdc -O2). It also gets rid of the
undocumented null return value:
609c609,611
< enforce(buffer.length, "rawRead must take a non-empty buffer");
---
>   if (!buffer.length) {
>   enforce(buffer.length, "rawRead must take a non-empty 
> buffer");
>   }
625,626c627,631
< errnoEnforce(!error);
< return result ? buffer[0 .. result] : null;
---
>   if (result < buffer.length) {
>   errnoEnforce(!error);
>   return buffer[0..result];
>   }
>   return buffer;

$ gdc -O3 stdioperf.d mystdio.d
$ time dd if=/dev/zero bs=1M count=8192 | ./a.out 
8192+0 records in
8192+0 records out
8589934592 bytes (8.6 GB) copied, 4.26723 s, 2.0 GB/s

real0m4.269s
user0m2.960s
sys0m3.788s


The patch to dmd 2.067 phobos is similar except the line numbers are different:
715c715,717
< enforce(buffer.length, "rawRead must take a non-empty buffer");
---
>   if (!buffer.length) {
>   enforce(false, "rawRead must take a non-empty buffer");
>   }
733,734c735,739
< errnoEnforce(!error);
< return result ? buffer[0 .. result] : null;
---
>   if (result < buffer.length) {
>   errnoEnforce(!error);
>   return buffer[0..result];
>   }
>   return buffer;

I also suggest that stdio.File.rawRead also update the documentation of rawRead
so that it includes an example of idiomatic usage:
while (1) if (0 == rawRead(...).length) break;

Charles

--


[Issue 14368] stdio.rawRead underperforms stdio

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14368

Charles  changed:

   What|Removed |Added

 CC||cooper.charle...@gmail.com

--


[Issue 14220] Bad codegen for optimized std.conv.text in combination with concatenation

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14220

--- Comment #8 from github-bugzi...@puremagic.com ---
Commit pushed to stable at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/f37749d65561cd019ae9b54ed8ee3474a54a6a6e
Merge pull request #4451 from WalterBright/fix14220

fix Issue 14220 - Bad codegen for optimized std.conv.text in combination...

--


[Issue 11548] ParameterDefaultValueTuple fails to compile when passed in a function containing a parameter named "args".

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=11548

Mathias LANG  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||pro.mathias.l...@gmail.com
 Resolution|--- |FIXED

--- Comment #1 from Mathias LANG  ---
Fixed in Phobos P.R. #2624

--


[Issue 14353] SDC test0104.d fails under DMD

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14353

--- Comment #5 from ag0ae...@gmail.com ---
(In reply to Shammah Chancellor from comment #3)
> I'm not so sure this is desirable.  What if there add as a ref return.  What
> does &t.foo give then?

You mean something like the following?

struct T
{
int i = 42;
ref int foo() {return i;}
}
void main()
{
T t;
auto dg = &t.foo;
auto i = &t.foo();
}

Here dg is a delegate of the method foo and i is a pointer to the ref-returned
field i.

The spec says this [1]:
"In most places, getter property functions are called immediately. One
exceptional case is the address operator."
"Even if the given operand is a property function, the address operator returns
the address of the property function rather than the address of its return
value."
Now foo is no @property, but the spec says that "[if] a function call does not
take any arguments syntactically, it is callable without parenthesis, like a
getter property functions." So it's reasonable that the same rules apply.

[1] http://dlang.org/function.html#property-functions

--


[Issue 14364] DMD should compile (correctly) SDC test0167.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14364

--- Comment #3 from ag0ae...@gmail.com ---
(In reply to Shammah Chancellor from comment #2)
> So should this not compile?

Reading that spec page further:
> If the compiler can determine that the result of an expression is illegally 
> dependent on the order of evaluation, it can issue an error (but is not 
> required to). The ability to detect these kinds of errors is a quality of 
> implementation issue.

So, compilers are encouraged to reject such code, but they can also accept it
and evaluate the sides of the assignment in either order.

> Isn't this at least a DLang Spec problem?

Feel free to file an enhancement request to specify one true order of
evaluation for AssignExpression.

--


[Issue 14364] DMD should compile (correctly) SDC test0167.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14364

--- Comment #2 from Shammah Chancellor  ---
So should this not compile? Isn't this at least a DLang Spec problem?

--


[Issue 14358] SDC test0134.d compiles but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14358

Iain Buclaw  changed:

   What|Removed |Added

 CC||ibuc...@gdcproject.org

--- Comment #1 from Iain Buclaw  ---
I suspect the same would be true for void __postblit() too.

--


[Issue 14364] DMD should compile (correctly) SDC test0167.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14364

ag0ae...@gmail.com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |INVALID

--- Comment #1 from ag0ae...@gmail.com ---
(In reply to Shammah Chancellor from comment #0)
>   int ret = 5;
>   ret += ((ret++ == 5) ? (ret += 3) : (ret -= 11)) + ret;
>   assert(ret == 23);

To arrive at 23 I guess sdc see these values:

5   +   6   +  3 + 9 = 23
ret += ((ret++ == 5) ? (ret += 3) : (ret -= 11)) + ret;

That is, sdc takes the value of the lhs before evaluating the rhs.

dmd arrives at 27 = 9 + 6 + 3 + 9, meaning it evaluates the rhs before taking
the value of the lhs.

The spec has something to say about that[1]:
> The following binary expressions are evaluated in an implementation-defined 
> order:
> 
> AssignExpression, function arguments
> 
> It is an error to depend on order of evaluation when it is not specified. For 
> example, the following are illegal:
>
> i = i++;

So, both sdc and dmd are right and the test case is "illegal". Closing as
invalid.

[1] http://dlang.org/expression.html

--


[Issue 14353] SDC test0104.d fails under DMD

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14353

--- Comment #4 from Ketmar Dark  ---
i believe that it will be a bug in the D code, as there is no variable to ref.
at least it should be a bug. ;-)

--


[Issue 14367] New: Print warnings by default

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14367

  Issue ID: 14367
   Summary: Print warnings by default
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: enhancement
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

DMD currently does not print warning by default.  This should be changed so
that people are notified of deprecated features during compilation and can
start fixing them.   It will come as a surprise when these features are finally
removed. There should instead be a silent flag on the compiler to suppress
warnings.

--


[Issue 14353] SDC test0104.d fails under DMD

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14353

--- Comment #3 from Shammah Chancellor  ---
I'm not so sure this is desirable.  What if there add as a ref return.  What
does &t.foo give then?

--


[Issue 14365] DMD should error or warn on SDC test0173.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14365

--- Comment #3 from Ketmar Dark  ---
i believe that this is a historic thingy. almost any C compiler is silent by
default, do did DMD. i think it worth ER, as there is no same reason to not
print warnings by default.

--


[Issue 14361] DMD should compile SDC test0158.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14361

Ketmar Dark  changed:

   What|Removed |Added

 CC||ket...@ketmar.no-ip.org

--- Comment #3 from Ketmar Dark  ---
dunno, i can't see any reason to duplicate `enum` with `alias`.

`alias` meant for aliasing *identifiers*, not literals. i.e.

  enum a = 42;
  alias b = a;

is working.

--


[Issue 14364] DMD should compile (correctly) SDC test0167.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14364

ag0ae...@gmail.com changed:

   What|Removed |Added

   Keywords||wrong-code
 CC||ag0ae...@gmail.com

--


[Issue 14361] DMD should compile SDC test0158.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14361

--- Comment #2 from Shammah Chancellor  ---
Seems like an arbitrary restriction.  Any reason for that?  I will file an
issue against SDC.

--


[Issue 14361] DMD should compile SDC test0158.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14361

--- Comment #1 from Ketmar Dark  ---
specs says that literals cannot be aliased[1].

[1] http://dlang.org/declaration.html#AliasDeclaration

--


[Issue 14363] DMD should compile SDC test0165.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14363

ag0ae...@gmail.com changed:

   What|Removed |Added

   Keywords||rejects-valid
 CC||ag0ae...@gmail.com

--


[Issue 14361] DMD should compile SDC test0158.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14361

ag0ae...@gmail.com changed:

   What|Removed |Added

   Keywords||rejects-valid
 CC||ag0ae...@gmail.com

--


[Issue 14362] DMD should compile SDC test0159.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14362

ag0ae...@gmail.com changed:

   What|Removed |Added

   Keywords||rejects-valid
 CC||ag0ae...@gmail.com

--


[Issue 14359] DMD does not compile SDC test0154.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14359

ag0ae...@gmail.com changed:

   What|Removed |Added

   Keywords||rejects-valid
 CC||ag0ae...@gmail.com

--


[Issue 14358] SDC test0134.d compiles but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14358

ag0ae...@gmail.com changed:

   What|Removed |Added

   Keywords||accepts-invalid
 CC||ag0ae...@gmail.com

--


[Issue 14357] SDC test0128.d compiles, but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14357

ag0ae...@gmail.com changed:

   What|Removed |Added

   Keywords||accepts-invalid
 CC||ag0ae...@gmail.com

--


[Issue 14365] DMD should error or warn on SDC test0173.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14365

--- Comment #2 from Shammah Chancellor  ---
Why are warnings not being printed by default?

--


[Issue 14355] SDC test0107.d compiles but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14355

Shammah Chancellor  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |INVALID

--


[Issue 14354] SDC test0106.d compiles, but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14354

Shammah Chancellor  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |INVALID

--


[Issue 14365] DMD should error or warn on SDC test0173.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14365

Ketmar Dark  changed:

   What|Removed |Added

 CC||ket...@ketmar.no-ip.org

--- Comment #1 from Ketmar Dark  ---
it does: z00.d(9): Warning: statement is not reachable

--


[Issue 14360] DMD should compile SDC test0156.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14360

--- Comment #3 from ag0ae...@gmail.com ---
(In reply to Shammah Chancellor from comment #2)
> Has the spec changed with regards to this?

I don't know if the spec maybe changed at some point. Could be that a naked
function/method symbol without parentheses was treated as a function pointer /
delegate in the distant past. I think they've been calls for at least a couple
of years, though.

> There is not "Symbol.Function" going on in this test.

It doesn't matter if it's "Symbol.Function" or just "Function".

--


[Issue 14354] SDC test0106.d compiles, but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14354

--- Comment #2 from Shammah Chancellor  ---
Thanks.  Didn't notice that -- I was going through all the failure cases a bit
quickly.  Will file a bug against SDC.

--


[Issue 14355] SDC test0107.d compiles but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14355

Ketmar Dark  changed:

   What|Removed |Added

 CC||ket...@ketmar.no-ip.org

--- Comment #1 from Ketmar Dark  ---
same for this: two different functions with different signatures, so SDC is
wrong here.

--


[Issue 14354] SDC test0106.d compiles, but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14354

Ketmar Dark  changed:

   What|Removed |Added

 CC||ket...@ketmar.no-ip.org

--- Comment #1 from Ketmar Dark  ---
but there is no error, as `foo()` and `foo(int)` are different functions with
different signatures.

--


[Issue 14366] DMD should not compile SDC test0174.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14366

--- Comment #2 from Shammah Chancellor  ---
What?  No warning is printed.  Why aren't warnings printed by default -- that
seems bad.

--


[Issue 14366] DMD should not compile SDC test0174.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14366

ag0ae...@gmail.com changed:

   What|Removed |Added

 CC||ag0ae...@gmail.com

--- Comment #1 from ag0ae...@gmail.com ---
This is a warning at the moment.

--


[Issue 14360] DMD should compile SDC test0156.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14360

--- Comment #2 from Shammah Chancellor  ---
(In reply to ag0aep6g from comment #1)
> As in issue 14353, dmd needs the ampersand: `return &bar;`. Without it, it's
> treated as a parentheses-less call.


Has the spec changed with regards to this?  There is not "Symbol.Function"
going on in this test.

--


[Issue 14360] DMD should compile SDC test0156.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14360

ag0ae...@gmail.com changed:

   What|Removed |Added

 CC||ag0ae...@gmail.com

--- Comment #1 from ag0ae...@gmail.com ---
As in issue 14353, dmd needs the ampersand: `return &bar;`. Without it, it's
treated as a parentheses-less call.

--


[Issue 14366] New: DMD should not compile SDC test0174.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14366

  Issue ID: 14366
   Summary: DMD should not compile SDC test0174.d
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

```
> ../bin/sdc test0174.d
case 1:
^~~
test0174.d:9: error: Fallthrough is disabled, use goto case.
```

```test0174.d
//T compiles:no
//T has-passed:yes
// Must use goto case

void main() {
switch(0) {
case 0:
int i;
case 1:
default:
}
}

```

--


[Issue 14365] New: DMD should error or warn on SDC test0173.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14365

  Issue ID: 14365
   Summary: DMD should error or warn on SDC test0173.d
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

```
> ../bin/sdc test0173.d
return 7;
^
test0173.d:13: error: Unreachable statement.
```


```test0173.d
//T compiles:no
//T has-passed:yes
// Unreachable statement

int main() {
int i = 5;
if (i) {
return 3;
} else {
return 5;
}

return 7;
}

```

--


[Issue 14356] SDC test00120.d compiles but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14356

Shammah Chancellor  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |INVALID

--


[Issue 14356] SDC test00120.d compiles but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14356

--- Comment #2 from Shammah Chancellor  ---
Ah, my mistake.  Thank you.  I will mark this as invalid.

(In reply to ag0aep6g from comment #1)
> dmd prints a deprecation message:
> 
> test0120.d(14): Deprecation: implicitly overriding base class method
> test0120.A.foo with test0120.B.foo deprecated; add 'override' attribute
> 

--


[Issue 14364] DMD should compile (correctly) SDC test0167.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14364

Shammah Chancellor  changed:

   What|Removed |Added

Summary|DMD should compile SDC  |DMD should compile
   |test0167.d  |(correctly) SDC test0167.d

--


[Issue 14364] New: DMD should compile SDC test0167.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14364

  Issue ID: 14364
   Summary: DMD should compile SDC test0167.d
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

```
> rdmd test0167.d
core.exception.AssertError@test0167.d(9): Assertion failure
```

```test0167.d
//T compiles:yes
//T has-passed:yes
//T retval:53
// Tests TernaryOperator

int main() {
int ret = 5;
ret += ((ret++ == 5) ? (ret += 3) : (ret -= 11)) + ret;
assert(ret == 23);

ret += ((ret-- == 22) ? (ret += 5) : (ret -= 7)) + ret;
assert(ret == 53);

return ret;
}
```

--


[Issue 14363] New: DMD should compile SDC test0165.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14363

  Issue ID: 14363
   Summary: DMD should compile SDC test0165.d
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

```
> rdmd test0165.d
test0165.d(22): Error: class test0165.voldemort.basilisk.GinnyWeasley is nested
within basilisk, but super class MarvoloRiddle is nested within voldemort
```


```test0165.d
//T compiles:yes
//T has-passed:yes
//T retval:41
// voldemort class with inheritance and 2 different contexts.

auto voldemort() {
uint a = 7;

class MarvoloRiddle {
uint b;

this(uint b) {
this.b = b + a++;
}

auto foo() {
return a + b;
}
}

auto basilisk(uint c) {
class GinnyWeasley : MarvoloRiddle {
this(uint b) {
a += c++;
this.b = b + a++;
}

auto bar() {
return foo() + a + c;
}
}

return new GinnyWeasley(5);
}

return basilisk(3);
}

auto buzz(V)(V v) {
return v.bar();
}

int main() {
auto v = voldemort();
return buzz(v);
}

```

--


[Issue 14356] SDC test00120.d compiles but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14356

ag0ae...@gmail.com changed:

   What|Removed |Added

 CC||ag0ae...@gmail.com

--- Comment #1 from ag0ae...@gmail.com ---
dmd prints a deprecation message:

test0120.d(14): Deprecation: implicitly overriding base class method
test0120.A.foo with test0120.B.foo deprecated; add 'override' attribute


--


[Issue 14362] New: DMD should compile SDC test0159.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14362

  Issue ID: 14362
   Summary: DMD should compile SDC test0159.d
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

```
> rdmd test0159.d
test0159.d(11): Error: template instance foo!true does not match template
declaration foo(alias T U, T)()
test0159.d(11): Error: template instance foo!10 does not match template
declaration foo(alias T U, T)()
test0159.d(11): Error: template instance foo!(5) does not match template
declaration foo(alias T U, T)()
```


```test0159.d
//T compiles:yes
//T has-passed:yes
//T retval:25
// template typed alias parameter (value)

auto foo(alias T U, T)() {
return cast(int) (U + T.sizeof);
}

int main() {
return foo!true() + foo!10() + foo!I();
}

enum I = 5;

```

--


[Issue 14361] New: DMD should compile SDC test0158.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14361

  Issue ID: 14361
   Summary: DMD should compile SDC test0158.d
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

```
> dmd test0158.d
test0158.d(7): Error: basic type expected, not 42
test0158.d(7): Error: semicolon expected to close alias declaration
test0158.d(7): Error: declaration expected, not '42'
```


```test0158.d
//T compiles:yes
//T has-passed:yes
//T retval:42
// alias of type and values

alias b = a;
alias c = 42;
alias d = c;
alias e = b;

b main() {
a b = c;
e f = b;
return f;
}

alias a = uint;
```

--


[Issue 14360] New: DMD should compile SDC test0156.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14360

  Issue ID: 14360
   Summary: DMD should compile SDC test0156.d
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: enhancement
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

```
> rdmd test0156.d
test0156.d(19): Error: function expected before (), not foo() of type int
```

```test0156.d
//T compiles:yes
//T has-passed:yes
//T retval:36
// Closure chaining

int main() {
int a = 11;

auto foo() {
int b = 25;

auto bar() {
return a + b;
}

return bar;
}

return foo()();
}

```

--


[Issue 14359] New: DMD does not compile SDC test0154.d

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14359

  Issue ID: 14359
   Summary: DMD does not compile SDC test0154.d
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

```
> dmd test0154.d
test0154.d(6): Error: undefined identifier T
```

```test0154.d
//T compiles:yes
//T has-passed:yes
//T retval:25
// template value parameter

auto foo(T U, T)() {
return cast(int) (U + T.sizeof);
}

int main() {
return foo!true() + foo!10() + foo!I();
}

enum I = 5;
```

--


[Issue 14353] SDC test0104.d fails under DMD

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14353

--- Comment #2 from Shammah Chancellor  ---
Definitely possible.  I will file an SDC bug if this turns out to be the case.

--


[Issue 14353] SDC test0104.d fails under DMD

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14353

ag0ae...@gmail.com changed:

   What|Removed |Added

 CC||ag0ae...@gmail.com

--- Comment #1 from ag0ae...@gmail.com ---
I think this is invalid. `t.add` and `s.add` are parentheses-less calls. So the
error about T.add not being callable "using argument types ()" is correct. To
get a delegate, add '&':

struct S {
int i;
T t;

auto add(int a) {
t.i = a + i;
return &t.add; /* ! */
}
}

struct T {
int i;
int add(int a) {
return i + a;
}
}

int main() {
S s;
s.i = s.t.i = 1;
auto dg1 = &s.add; /* ! */
auto dg2 = dg1(34);
return dg2(7);
}

--


[Issue 14358] New: SDC test0134.d compiles but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14358

  Issue ID: 14358
   Summary: SDC test0134.d compiles but should not
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

SDC errors as follows:
```
../bin/sdc test0134.d
void __dtor() {}
 ^~
 test0134.d:6: error: __dtor is a reserved name
```

DMD compiles incorrectly:

```test0134.d
//T compiles:no
//T has-passed:yes
// Forbiden method name.

struct Foo {
void __dtor() {}
}

void main() {}

```

--


[Issue 14357] SDC test0128.d compiles, but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14357

Shammah Chancellor  changed:

   What|Removed |Added

Summary|SC test0128.d compiles, but |SDC test0128.d compiles,
   |should not  |but should not

--


[Issue 14357] New: SC test0128.d compiles, but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14357

  Issue ID: 14357
   Summary: SC test0128.d compiles, but should not
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

SDC errors as follows:
```
> ../bin/sdc test0128.d
return Qux!(float**, int*);
   ^~~~
   test0128.d:10: error: No match
```

DMD compiles this erroneously:
```test0128.d
//T compiles:no
//T has-passed:yes
// Test invalid specialisation.

template Qux(T : U*, U : V*, V) {
enum Qux = T.sizeof + V.sizeof;
}

int main() {
return Qux!(float**, int*);
}

```

--


[Issue 14356] SDC test00120.d compiles but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14356

Shammah Chancellor  changed:

   What|Removed |Added

 CC||shammah.chancel...@gmail.co
   ||m

--


[Issue 14356] New: SDC test00120.d compiles but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14356

  Issue ID: 14356
   Summary: SDC test00120.d compiles but should not
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

SDC fails as such:
```
> ../bin/sdc test0120.d
void foo(int a) {}
^~
test0120.d:14: error: foo overrides a base class method but is not marked
override
```

DMD compiles this:

```test0120.d
//T compiles:no
//T has-passed:yes
// Test implicit override error.

int main() {
return 0;
}

class A {
void foo(int a) {}
}

class B : A {
void foo(int a) {}
}
```

--


[Issue 14355] SDC test0107.d compiles but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14355

Shammah Chancellor  changed:

   What|Removed |Added

 CC||shammah.chancel...@gmail.co
   ||m

--


[Issue 14355] New: SDC test0107.d compiles but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14355

  Issue ID: 14355
   Summary: SDC test0107.d compiles but should not
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

SDC fails as follows:
```
> ../bin/sdc test0107.d
int foo(int i) { return i; }
^~~~
test0107.d:12: error: Poisoned
Line 1 expanded from mixin :
mixin(foo());
^
test0107.d line 12
```

while DMD erroneously compiles it.

```test0107.d
//T compiles:no
//T has-passed:yes

int main() {
return 42;
}

string foo() {
return "int foo(int i) { return i; }";
}

mixin(foo());

```

--


[Issue 14352] SDC test0075.d fails under against DMD

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14352

ag0ae...@gmail.com changed:

   What|Removed |Added

   Keywords||wrong-code
   Hardware|x86 |All
 OS|Mac OS X|All

--


[Issue 14354] SDC test0106.d compiles, but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14354

Shammah Chancellor  changed:

   What|Removed |Added

 CC||shammah.chancel...@gmail.co
   ||m

--


[Issue 14354] New: SDC test0106.d compiles, but should not

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14354

  Issue ID: 14354
   Summary: SDC test0106.d compiles, but should not
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

SDC errors:
```
> ../bin/sdc test0106.d
int foo(int i) {
return i;
}
^~~
test0106.d:13: error: Already defined
```

while DMD incorrectly compiles the source and runs.


```test0106.d
//T compiles:no
//T has-passed:yes

int main() {
return foo();
}

int foo() {
return 3;
}

static if(foo() == 3) {
int foo(int i) {
return i;
}
}

```

--


[Issue 14352] SDC test0075.d fails under against DMD

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14352

ag0ae...@gmail.com changed:

   What|Removed |Added

 CC||ag0ae...@gmail.com

--- Comment #1 from ag0ae...@gmail.com ---
Slight reduction of transmogrify(0):


void main() {
int[] output;
switch (0) {
case 0:
output ~= 0;
goto case;
goto case;
case 1:
output ~= 1;
goto case;
case 2:
output ~= 2;
break;
case 3:
output ~= 3;
break;
default:
assert(false);
}
import std.stdio;
writeln(output);
}


Should print "[0, 1, 2]". Actually prints "[0, 1, 3]", meaning that it jumps
from case 1 to case 3.

Having more than one `goto case;` seems to confuse dmd.

--


[Issue 14353] SDC test0104.d fails under DMD

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14353

Shammah Chancellor  changed:

   What|Removed |Added

 CC||shammah.chancel...@gmail.co
   ||m

--


[Issue 14353] New: SDC test0104.d fails under DMD

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14353

  Issue ID: 14353
   Summary: SDC test0104.d fails under DMD
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

DMD fails with: 
test0104.d(12): Error: function test0104.T.add (int a) is not callable using
argument types ()


```test0104.d
//T compiles:yes
//T has-passed:yes
//T retval:42
// Test creation of delegates from member function.

struct S {
int i;
T t;

auto add(int a) {
t.i = a + i;
return t.add;
}
}

struct T {
int i;
int add(int a) {
return i + a;
}
}

int main() {
S s;
s.i = s.t.i = 1;
auto dg1 = s.add;
auto dg2 = dg1(34);
return dg2(7);
}

```

--


[Issue 14352] New: SDC test0075.d fails under against DMD

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=14352

  Issue ID: 14352
   Summary: SDC test0075.d fails under against DMD
   Product: D
   Version: unspecified
  Hardware: x86
OS: Mac OS X
Status: NEW
  Severity: normal
  Priority: P1
 Component: DMD
  Assignee: nob...@puremagic.com
  Reporter: shammah.chancel...@gmail.com

This compiles and works properly under SDC.   However, when ran against DMD the
assertions fail.  It appears as if "goto case" is not working correctly in DMD
based on what I can see.


```test0075.d
//T compiles:yes
//T has-passed:yes
//T retval:0
//? desc:Test goto case multiple cases in case list.

int transmogrify(int input) {
int output = 0;
switch (input) {
case 0, 1:
if (input == 0)
goto case;
else
output++;
goto case;
case 2:
output += 5;
goto case;
case 3:
output += 5;
break;
case 4, 5, 6:
goto default;
case 7:
case 8:
output += 20;
break;
default:
return -1;
}
return output;
}

int main() {
bool defaultRan = false;
switch(0) {
default:
defaultRan = true;
break;
case 0:
goto default;
}
assert(defaultRan);

assert(transmogrify(0) == 10);
assert(transmogrify(1) == 11);

assert(transmogrify(2) == 10);
assert(transmogrify(3) == 5);
assert(transmogrify(7) == 20);
assert(transmogrify(8) == 20);

assert(transmogrify(4) == -1);
assert(transmogrify(5) == -1);
assert(transmogrify(6) == -1);
assert(transmogrify(128) == -1);
return 0;
}

```

--


[Issue 13742] undefined reference to __coverage

2015-03-28 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=13742

j...@red.email.ne.jp changed:

   What|Removed |Added

 CC||j...@red.email.ne.jp

--- Comment #2 from j...@red.email.ne.jp ---
I hit this on Windows.
Reduced test case is here.


COMMAND:
dmd -cov -g -c test.d f.d
dmd -cov -g -main test.obj f.obj

OUTPUT:
 Error 42: Symbol Undefined ___coverage
--- errorlevel 1

SOURCE FILES:
f.d
-
import std.algorithm;

void func(alias pred)()
{
int[] range;
range.find!pred(0);
}
-

test.d
-
import f;

enum mypred = (int a, int b)=>false;
//bool mypred(int a, int b) { return false; } -- WORK AROUND

void test()
{
func!mypred();
}
-

--