[Issue 982] Codeview: symbols of enum type are declared integer

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=982

Dlang Bot  changed:

   What|Removed |Added

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

--- Comment #4 from Dlang Bot  ---
dlang/dmd pull request #10328 "fix Issue 4372, 982 - CodeView: type of
enumerator values reduced to …" was merged into master:

- f4e4b7e6ff66ec4d0d2774f309731c03392327cc by Rainer Schuetze:
  fix Issue 4372, 982 - CodeView: type of enumerator values reduced to base
type in debug info

  write a forward reference to the enum definition, it is emitted elsewhere

https://github.com/dlang/dmd/pull/10328

--


[Issue 4372] type of enumerator values reduced to base type in debug info

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=4372

Dlang Bot  changed:

   What|Removed |Added

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

--- Comment #8 from Dlang Bot  ---
dlang/dmd pull request #10328 "fix Issue 4372, 982 - CodeView: type of
enumerator values reduced to …" was merged into master:

- f4e4b7e6ff66ec4d0d2774f309731c03392327cc by Rainer Schuetze:
  fix Issue 4372, 982 - CodeView: type of enumerator values reduced to base
type in debug info

  write a forward reference to the enum definition, it is emitted elsewhere

https://github.com/dlang/dmd/pull/10328

--


[Issue 19965] [DIP1000] Template allows to escape internal pointer

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19965

--- Comment #2 from Mike Franklin  ---
The problem appears to be with `scope` inference.  In `escape.d` there are many
places where `STC.maybescope` is removed after it has been determined that
`scope` cannot be inferred.  There is even a function `notMaybeScope` to do
this.  

I believe all that needs to be done is to call `notMaybeScope(v)` in the right
place and for the right conditions so `scope` is no longer inferred for this
scenario.

--


[Issue 19731] auto struct methods whose address is taken don't test invariants

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19731

Iain Buclaw  changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 CC||ibuc...@gdcproject.org
 Resolution|FIXED   |---

--- Comment #8 from Iain Buclaw  ---
Not fixed, as the bug still occurs if you compile the original test with
-inline.

--


[Issue 17767] Dmd can't link recast.d, Gdc can't compile it and Ldc can perfectly compile it.

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17767

Iain Buclaw  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |WORKSFORME

--- Comment #6 from Iain Buclaw  ---
Closing, as there's no issue here.

--


[Issue 20153] New: extern for aliased template instantiation

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=20153

  Issue ID: 20153
   Summary: extern for aliased template instantiation
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: enhancement
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: blac...@bk.ru

I want to export non-mangled instantiated through alias template function.
it can be useful for WASM, DLLs/SharedLibs and etc.
but alias for template instatiation is ignored.
pragma mangle to alias is ignored too.

---
void main() {}

export:  // EXPORTed
extern (C):  // NO MANGLE but IGNORED
public:

void fun( Char )( Char* ) { }

pragma (mangle, "func")  // IGNORED
alias func = fun!char;
pragma( msg, func.mangleof );

pragma (mangle, "funw")  // IGNORED
alias funw = fun!wchar;
pragma( msg, funw.mangleof );

 OUTPUT ---
_D9onlineapp__T3funTaZQhUNaNbNiNfPaZv
_D9onlineapp__T3funTuZQhUNaNbNiNfPuZv


current workaround: wrap template funcs to non-template.

possible solution:
if "alias" locates in non-mangle block (extern(C) for example) then do not
mangle name and check that no others entities with same name exists in current
context.
OR/AND
make "pragma mangle" working for alias-es too.

--


[Issue 13582] Deprecated modules imported from other deprecated modules shouldn't be warned about

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=13582

--- Comment #2 from Dlang Bot  ---
@FeepingCreature updated dlang/dmd pull request #10336 "Fix issue 13582: Don't
print deprecation when importing a deprecated module from another deprecated
module." fixing this issue:

- Fix issue 13582: don't print deprecation when importing a deprecated module
from another deprecated module.

https://github.com/dlang/dmd/pull/10336

--


[Issue 20152] numeric expression should not evaluate to const type

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=20152

ag0aep6g  changed:

   What|Removed |Added

 CC||ag0ae...@gmail.com
   Severity|regression  |normal

--- Comment #1 from ag0aep6g  ---
This is not a regression. Downgrading to "normal". Ultimately, this is probably
an enhancement request, unless the spec states that the type should be
`double`.

--


[Issue 20152] New: numeric expression should not evaluate to const type

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=20152

  Issue ID: 20152
   Summary: numeric expression should not evaluate to const type
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: regression
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: ilyayaroshe...@gmail.com

void main()
{   
const double a = 1, b = 2;
pragma(msg, typeof(a * b));
}

prints `const(double)`

expected result: `double`

--


[Issue 20151] particular directory layout causes DMD to crash with an access violation

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=20151

ag0aep6g  changed:

   What|Removed |Added

   Keywords||ice
 CC||ag0ae...@gmail.com
   Hardware|x86_64  |All
 OS|Windows |All

--- Comment #1 from ag0aep6g  ---
Also happens in linux and in wine (32 bit Windows DMD).

--


[Issue 15651] filter: only parameters or stack based variables can be inout

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=15651

Steven Schveighoffer  changed:

   What|Removed |Added

 CC||schvei...@yahoo.com

--- Comment #3 from Steven Schveighoffer  ---
(In reply to Simen Kjaeraas from comment #1)
> This issue is only partially fixable - filter() could use the solution
> described in issue 13428 to turn inout(T) into const(T). This would lead to
> fun() returning a const(D)[] result instead of inout(D)[], so it's not a
> complete solution.

It's fully fixable -- if we can create an filter of inout elements. As I
mentioned in issue 9983, this simply involves allowing structs to declare inout
members. In fact, we should allow inout to be used ANYWHERE, except global
variables (as putting inout variables in global space can change the meaning
from call to call). They will just be another type of immutable in functions
which don't have inout parameters, or when used in structs outside of inout
functions.

(In reply to anonymous4 from comment #2)
> See also workaround in issue 9983

This is not a valid workaround, as an inout filter would not be iterable.

I actually thought that maybe with closures, we could make a "workaround" but
it doesn't work because there's no way to return an inout from a function that
has no inout parameters. Another stupid limitation that we should omit.

I'd try my hand at an inout improvement DIP, but I feel it would likely be
rejected on principle, since inout is so disfavored by leadership.

--


[Issue 20151] particular directory layout causes DMD to crash with an access violation

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=20151

John Colvin  changed:

   What|Removed |Added

   Hardware|All |x86_64

--


[Issue 20151] particular directory layout causes DMD to crash with an access violation

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=20151

John Colvin  changed:

   What|Removed |Added

  Component|installer   |dmd

--


[Issue 17927] [scope] `scope inout` parameter value can be escaped via return

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17927

Les De Ridder  changed:

   What|Removed |Added

 CC||dl...@lesderid.net

--


[Issue 19965] [DIP1000] Template allows to escape internal pointer

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19965

Mike Franklin  changed:

   What|Removed |Added

 CC||slavo5...@yahoo.com

--- Comment #1 from Mike Franklin  ---
If narrowed this issue down to this line in the DMD source code: 
https://github.com/dlang/dmd/blob/0459e34e20a0631a021550431dfe2411ebe16d3f/src/dmd/escape.d#L1465

When `Foo` is a template, `tf.isscope` is `true`, but when `Foo` is not a
template `tf.isscope` is `false`.

`isscope` is set to *true` at
https://github.com/dlang/dmd/blob/0459e34e20a0631a021550431dfe2411ebe16d3f/src/dmd/semantic3.d#L1316

It is set to *true` because `funcdecl.vthis.storage_class` is `STC.maybescope`.

That's as far as I got.

--


[Issue 20151] New: particular directory layout causes DMD to crash with an access violation

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=20151

  Issue ID: 20151
   Summary: particular directory layout causes DMD to crash with
an access violation
   Product: D
   Version: D2
  Hardware: All
OS: Windows
Status: NEW
  Severity: major
  Priority: P1
 Component: installer
  Assignee: nob...@puremagic.com
  Reporter: john.loughran.col...@gmail.com

Confirmed in 2.086.1 and 2.088-beta.1

C:\test>tree /f
Folder PATH listing for volume Windows
Volume serial number is 547E-DA40
C:.
│   c.d
│
└───c
└───b
└───a
a.d


C:\test>type c.d
import c.b.a.a;
C:\test>type c\b\a\a.d

C:\test>C:\Users\jcolvin_sym\dlang\dmd-2.088.0-beta.1\dmd2\windows\bin\dmd.exe
c.d -o-
---
ERROR: This is a compiler bug.
Please report it via https://issues.dlang.org/enter_bug.cgi
with, preferably, a reduced, reproducible example and the information below.
DustMite (https://github.com/CyberShadow/DustMite/wiki) can help with the
reduction.
---
DMD v2.088.0-beta.1-dirty
predefs   DigitalMars Windows CRuntime_DigitalMars CppRuntime_DigitalMars
LittleEndian D_Version2 all D_InlineAsm D_InlineAsm_X86 X86 Win32 assert
D_ModuleInfo D_Exceptions D_TypeInfo D_HardFloat
binary   
C:\Users\jcolvin_sym\dlang\dmd-2.088.0-beta.1\dmd2\windows\bin\dmd.exe
version   v2.088.0-beta.1-dirty
configC:\Users\jcolvin_sym\dlang\dmd-2.088.0-beta.1\dmd2\windows\bin\sc.ini
DFLAGS   
-IC:\Users\jcolvin_sym\dlang\dmd-2.088.0-beta.1\dmd2\windows\bin\..\..\src\phobos
-IC:\Users\jcolvin_sym\dlang\dmd-2.088.0-beta.1\dmd2\windows\bin\..\..\src\druntime\import
---

object.Error@(0): Access Violation

0x00489A8F
0x773D5EC9 in RtlAllocateHeap
0x0463C1F0
0x00750064
0x00650063
0x005C0064
0x1791B8D1
0x1600DE2D
0x0119251C

--


[Issue 19175] @safe code can escape local array references

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=19175

--- Comment #9 from ag0aep6g  ---
(In reply to Mike Franklin from comment #8)
> Works for me as in v2.087.1

Most of the test cases are correctly rejected now with -dip1000. But the one
from comment #7 is still accepted. Moved to issue 20150.

--


[Issue 20150] New: -dip1000 defeated by pure

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=20150

  Issue ID: 20150
   Summary: -dip1000 defeated by pure
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Keywords: safe
  Severity: normal
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: ag0ae...@gmail.com

This is a spin-off from issue 19175.


int* escape(int* r) @safe pure
{
return r;
}

int* f() @safe
{
int x = 42;
return escape(); /* Should not compile. */
}


Tested with v2.087.0 and v2.088.0-beta.1-46-g0459e34e (current git master).

--


[Issue 1472] Be more clever about detecting assigment to non-l-values

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=1472

RazvanN  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||razvan.nitu1...@gmail.com
 Resolution|--- |WONTFIX

--- Comment #4 from RazvanN  ---
The spec clearly states that "a variable or the result of the DotIdentifier
grammatical construct . (left side may be missing) when the rightmost side of
the dot is a variable, field (direct or static), function name, or invocation
of a function that returns by reference" is an lvalue.

Therefore:

x.get_struct.i = 10;

is fine and:

x.get_struct.set_i(10);

is also fine, because you are calling the function of a temporary.

Closing as WONTFIX.

--


[Issue 1430] CodeView: new dchar type not used

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=1430

RazvanN  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||razvan.nitu1...@gmail.com
 Resolution|--- |DUPLICATE

--- Comment #1 from RazvanN  ---


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

--


[Issue 1104] CodeView: char is marked 0x20 (T_UCHAR) instead of 0x10 (T_CHAR)

2019-08-22 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=1104

--- Comment #12 from RazvanN  ---
*** Issue 1430 has been marked as a duplicate of this issue. ***

--