[Issue 17697] Ddoc: get rid of `_` detection in URLs

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17697

Adam D. Ruppe  changed:

   What|Removed |Added

 CC||destructiona...@gmail.com

--- Comment #1 from Adam D. Ruppe  ---
The correct solution is to get rid of the utterly counterproductive identifier
highlighting entirely, then remove the useless _ suppression entirely.

--


[Issue 17697] Ddoc: get rid of `_` detection in URLs

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17697

Walter Bright  changed:

   What|Removed |Added

   Keywords||ddoc

--


[Issue 17697] New: Ddoc: get rid of `_` detection in URLs

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17697

  Issue ID: 17697
   Summary: Ddoc: get rid of `_` detection in URLs
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: enhancement
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: bugzi...@digitalmars.com

For example,

  /* http://website.com/_abc */

  module abc;

The _ is needed to prevent Ddoc from highlighting the abc. But this makes the
URL unusable from a text editor.

The solution is to get rid of _ detection inside of URLs.

--


[Issue 17696] dlclose() not guaranteed to unload the library

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17696

Iain Buclaw  changed:

   What|Removed |Added

 CC||ibuc...@gdcproject.org

--- Comment #1 from Iain Buclaw  ---
GCC internals note, there's flag_gnu_unique.  But actually it seems pretty
silly turning it off explicitly.

--


[Issue 17696] New: dlclose() not guaranteed to unload the library

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17696

  Issue ID: 17696
   Summary: dlclose() not guaranteed to unload the library
   Product: D
   Version: D2
  Hardware: All
OS: Linux
Status: NEW
  Severity: blocker
  Priority: P1
 Component: druntime
  Assignee: nob...@puremagic.com
  Reporter: ibuc...@gdcproject.org

There's a broken test in druntime. Discovered after making a change in gdc to
put ClassInfo symbols in the comdat (yeah I know, but I am yet to receive any
duplicate symbol bug reports).

https://github.com/dlang/druntime/blob/master/test/shared/src/load.d#L136-L139


Old gdc behaviour:
---
$ readelf -Ws lib.o  | grep MyFinal
   113: 078a38 FUNCGLOBAL DEFAULT   16
_D3lib11MyFinalizer6__dtorMFZv
   117: 16 OBJECT  GLOBAL DEFAULT   28
_D3lib11MyFinalizer6__initZ
   118: 001040 OBJECT  GLOBAL DEFAULT   28
_D3lib11MyFinalizer6__vtblZ
   119:    152 OBJECT  GLOBAL DEFAULT   30
_D3lib11MyFinalizer7__ClassZ
   125: 0040  4112 OBJECT  GLOBAL DEFAULT   28
_D3lib14MyFinalizerBig6__initZ
   126: 105040 OBJECT  GLOBAL DEFAULT   28
_D3lib14MyFinalizerBig6__vtblZ
   127: 00a0   152 OBJECT  GLOBAL DEFAULT   30
_D3lib14MyFinalizerBig7__ClassZ
---

New gdc behaviour:
---
$ readelf -Ws lib.o  | grep MyFinal
   124: 078a38 FUNCGLOBAL DEFAULT   22
_D3lib11MyFinalizer6__dtorMFZv
   128: 16 OBJECT  WEAK   DEFAULT   34
_D3lib11MyFinalizer6__initZ
   129: 40 OBJECT  WEAK   DEFAULT   38
_D3lib11MyFinalizer6__vtblZ
   130:    152 OBJECT  UNIQUE DEFAULT   36
_D3lib11MyFinalizer7__ClassZ
   136:   4112 OBJECT  WEAK   DEFAULT   40
_D3lib14MyFinalizerBig6__initZ
   137: 40 OBJECT  WEAK   DEFAULT   44
_D3lib14MyFinalizerBig6__vtblZ
   138:    152 OBJECT  UNIQUE DEFAULT   42
_D3lib14MyFinalizerBig7__ClassZ
---

Current dmd behaviour:
---
$ readelf -Ws lib.o  | grep MyFinal
   105: 34 FUNCGLOBAL DEFAULT   70
_D3lib11MyFinalizer6__dtorMFZv
   106: 16 OBJECT  WEAK   DEFAULT   72
_D3lib11MyFinalizer6__initZ
   107:    168 OBJECT  WEAK   DEFAULT   73
_D3lib11MyFinalizer7__ClassZ
   108: 40 OBJECT  WEAK   DEFAULT   75
_D3lib11MyFinalizer6__vtblZ
   109:   4112 OBJECT  WEAK   DEFAULT   78
_D3lib14MyFinalizerBig6__initZ
   110:    176 OBJECT  WEAK   DEFAULT   79
_D3lib14MyFinalizerBig7__ClassZ
   111: 40 OBJECT  WEAK   DEFAULT   81
_D3lib14MyFinalizerBig6__vtblZ
---

Notice that dmd marks the __Class symbol as a weak @object, but gdc marks it as
a weak @gnu_unique_object.

This subtle difference means that when calling dlopen() on lib.so, it is marked
as DF_1_NODELETE - meaning "not unloadable", and will never be unloaded no
matter how many times you call dlclose().


Looking at the documentation:

http://pubs.opengroup.org/onlinepubs/007904975/functions/dlclose.html

===
Although a dlclose() operation is not required to remove structures from an
address space, neither is an implementation prohibited from doing so.
===

The druntime test should probably be fixed up, as it may not necessary always
be true.

In the meantime, I'll have a look at possibly a fix on my side, something that
errs towards --no-gnu-unique, however if its not an agnostic fix, then there's
no point in trying to do that.

https://cygwin.com/ml/binutils/2011-10/msg00276.html

--


[Issue 17695] [Reg 2.076] ICE with vector negation

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17695

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

https://github.com/dlang/dmd/commit/7ceb34a633518c75e61f858fde1fa3eb4d7c6300
fix Issue 17695 - [Reg 2.076] ICE with vector negation

https://github.com/dlang/dmd/commit/6dc8c01c246c3633077ed2e7bc9d17fb0a79d896
Merge pull request #7035 from WalterBright/fix17695

fix Issue 17695 - [Reg 2.076] ICE with vector negation
merged-on-behalf-of: Martin Nowak 

--


[Issue 17695] [Reg 2.076] ICE with vector negation

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17695

Walter Bright  changed:

   What|Removed |Added

 CC||bugzi...@digitalmars.com

--- Comment #1 from Walter Bright  ---
https://github.com/dlang/dmd/pull/7035

--


[Issue 17680] Broken ddmd source links in documentation

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17680

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

https://github.com/dlang/dlang.org/commit/fc7a8aeadeaf3782ffd60e802d705bf7ac0f3e0d
Issue 17680 - fix DMDSRC

https://github.com/dlang/dlang.org/commit/f2ecd76842a28bfa15acf72460a77f93010bcfdd
Merge pull request #1843 from wilzbach/fix-17680

Issue 17680 - fix DMDSRC
merged-on-behalf-of: MetaLang 

--


[Issue 17695] New: [Reg 2.076] ICE with vector negation

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17695

  Issue ID: 17695
   Summary: [Reg 2.076] ICE with vector negation
   Product: D
   Version: D2
  Hardware: x86_64
OS: Linux
Status: NEW
  Severity: regression
  Priority: P3
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: c...@dawg.eu

cat > bug.d << CODE
void bug(__vector(ubyte[16]) a)
{
auto b = -a;
}
CODE
dmd -c -O bug.d

el:0x19531a0 cnt=0 const  TYunsigned char[16] 0LL+0LL 
Internal error: ddmd/backend/el.c 3034

Happens with
DMD64 D Compiler v2.075.0-master-234b414

Introduced by https://github.com/dlang/dmd/pull/7019.

--


[Issue 17694] traits compiles fails for property of property

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17694

Steven Schveighoffer  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||schvei...@yahoo.com
 Resolution|--- |INVALID

--- Comment #1 from Steven Schveighoffer  ---
Actually, the issue is that the thing you are checking isn't valid syntax.

For example:

TBounds.Margins.Left;

Error: need 'this' for 'Margins' of type '@property TBounds()'

What you need is either the typeof, or to use an instance instead of the type
itself:


mixin(`static assert(__traits(compiles, TButton.init.Margins.Left));`);
mixin(`static assert(__traits(compiles, typeof(TButton.Margins.Left)));`);

--


[Issue 17694] New: traits compiles fails for property of property

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17694

  Issue ID: 17694
   Summary: traits compiles fails for property of property
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: normal
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: an...@s-e-a-p.de

While the first assertion works, the second assertion fails.
I expect it should work, as the statement "typeof(TButton.Margins.Left) l;"
works fine

class TButton
{
@property TBounds Margins() { return null; }
}

class TBounds
{
@property float Left() { return 0.0; }
}

void main()
{
  mixin(`static assert(__traits(compiles, TButton.Margins));`); // OK
  mixin(`static assert(__traits(compiles, TButton.Margins.Left));`); // FAILS
}

--


[Issue 16416] Phobos std.uni out of date (should be updated to latest Unicode standard)

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16416

Dmitry Olshansky  changed:

   What|Removed |Added

 CC||dmitry.o...@gmail.com
   Assignee|nob...@puremagic.com|dmitry.o...@gmail.com

--


[Issue 17681] [Function setTimes] additional function touch(f)

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17681

Steven Schveighoffer  changed:

   What|Removed |Added

 CC||schvei...@yahoo.com

--- Comment #2 from Steven Schveighoffer  ---
I think a function setTimes(filename) or setTimesCurrent(filename) would be a
useful addition.

The setTimes function is cross platform and so is handy to use in platform
agnostic code. It would be nice to have support for this in there somehow.

--


[Issue 17692] Filtering a struct instance's .tupleof loses contained this reference

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17692

Vladimir Panteleev  changed:

   What|Removed |Added

   Hardware|x86_64  |All
 OS|Linux   |All

--


[Issue 17690] [REG2.066.0] scope guards leak declarations

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17690

Vladimir Panteleev  changed:

   What|Removed |Added

   Keywords||accepts-invalid

--


[Issue 17690] [REG2.066.0] scope guards leak declarations

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17690

Vladimir Panteleev  changed:

   What|Removed |Added

Summary|scope guards leak   |[REG2.066.0] scope guards
   |declarations|leak declarations
   Severity|normal  |regression

--- Comment #1 from Vladimir Panteleev  ---
The front-end accepts it without error.

This seems to be a regression.
Introduced in https://github.com/dlang/dmd/pull/3564

--


[Issue 17689] finally clause leaks declarations

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17689

Vladimir Panteleev  changed:

   What|Removed |Added

   Keywords||accepts-invalid

--


[Issue 17686] [REG2.075.0] Covariant return types doesn't work with override in some cases

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17686

Vladimir Panteleev  changed:

   What|Removed |Added

Summary|[REG2.075] Covariant return |[REG2.075.0] Covariant
   |types doesn't work with |return types doesn't work
   |override in some cases  |with override in some cases

--


[Issue 17277] Member and aggregate alignment semantics

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17277

ki...@gmx.net changed:

   What|Removed |Added

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

--


[Issue 17686] [REG2.075] Covariant return types doesn't work with override in some cases

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17686

--- Comment #3 from Vladimir Panteleev  ---
Please include the entire test case in the bug report itself.

Here it is:

interface INode
{
@property INode parentNode();
@property IDocument ownerDocument();
}
interface IDocument: INode {}
interface IEntityReference: INode {}

class DOMImplementation(T)
{
abstract class Node: INode
{
override
{
@property Node parentNode() { return null; }
@property Document ownerDocument() { return null; } 
}

@property bool readonly() { return true; }
}
abstract class NodeWithChildren: Node {}

class Document: NodeWithChildren, IDocument {}

class EntityReference: NodeWithChildren, IEntityReference
{
override
{
@property bool readonly() { return true; }
}
}

}

void main()
{
alias aaa = DOMImplementation!string;
}

--


[Issue 17685] DMD 2.060 regression: align is not respected for structs

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17685

Vladimir Panteleev  changed:

   What|Removed |Added

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

--- Comment #3 from Vladimir Panteleev  ---
Yep, fixed by https://github.com/dlang/dmd/pull/6754.

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

--


[Issue 17277] Member and aggregate alignment semantics

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17277

Vladimir Panteleev  changed:

   What|Removed |Added

 CC||clugd...@yahoo.com.au

--- Comment #2 from Vladimir Panteleev  ---
*** Issue 17685 has been marked as a duplicate of this issue. ***

--


[Issue 17684] [REG 2.062] `static alias this` bug or incomplete implementation?

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17684

Vladimir Panteleev  changed:

   What|Removed |Added

Summary|`static alias this` bug or  |[REG 2.062] `static alias
   |incomplete implementation?  |this` bug or incomplete
   ||implementation?
   Severity|normal  |regression

--- Comment #1 from Vladimir Panteleev  ---
This worked in 2.061, and it looks like it was broken by accident. Marking as a
regression.

Introduced in https://github.com/dlang/dmd/pull/1434

--


[Issue 17683] __traits compiles does not work with package.d

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17683

Vladimir Panteleev  changed:

   What|Removed |Added

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

--- Comment #1 from Vladimir Panteleev  ---
Nothing to do with __traits(compiles).

fullyQualifiedName!Bar expands to "sub.m2.Bar".

That fully qualified names don't work with package modules is issue 11847.

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

--


[Issue 11847] Importing "package.d" module causes qualified name lookup to fail for sub modules

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=11847

Vladimir Panteleev  changed:

   What|Removed |Added

 CC||an...@s-e-a-p.de

--- Comment #11 from Vladimir Panteleev  ---
*** Issue 17683 has been marked as a duplicate of this issue. ***

--


[Issue 17681] [Function setTimes] additional function touch(f)

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17681

--- Comment #1 from Vladimir Panteleev  ---
The way to do this on Linux is to call utime(fileName, null).

(In reply to Martin Tschierschke from comment #0)
> The work around in the moment is to use execute("touch ~"filename").
> Not the right for a system programming language :-(

I think this is simpler:

utimes(fileName.toStringz, *cast(timeval[2]*)null);

Not sure whether this is something that comes up frequently enough to be in
Phobos, especially considering it seems rather platform-specific. The name
"touch" carries with it the possible implication that non-existing files will
be created (as done by the program), which might not be desirable for a Phobos
function.

--


[Issue 17686] [REG2.075] Covariant return types doesn't work with override in some cases

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17686

--- Comment #2 from Daniel Kozak  ---
introduced in this commit:
https://github.com/dlang/dmd/commit/fb315d03f0744b8406d31b9c106d3a42c0c178b3

--


[Issue 17458] [std.regex] Assertion failure in package.d

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17458

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

https://github.com/dlang/phobos/commit/7a51c0e24eea6c02336d2aa897c608974ea2ac57
Fix issue 17458 add messages to asserts

https://github.com/dlang/phobos/commit/008a8a3ef3fab4e1f51f2bf65d3f6b42dc152f78
Merge pull request #5660 from DmitryOlshansky/issue-17458

[std.regex] Fix issue 17458 - add messages to asserts
merged-on-behalf-of: Stefan Koch 

--


[Issue 17680] Broken ddmd source links in documentation

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17680

--- Comment #2 from Vladimir Panteleev  ---
https://github.com/dlang/dmd/pull/7030

Pretty please file separate issues for separate issues next time!

--


[Issue 17680] Broken ddmd source links in documentation

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17680

Vladimir Panteleev  changed:

   What|Removed |Added

   Hardware|x86_64  |All
 OS|Linux   |All

--


[Issue 17680] Broken ddmd source links in documentation

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17680

Vladimir Panteleev  changed:

   What|Removed |Added

   Keywords||pull

--- Comment #1 from Vladimir Panteleev  ---
https://github.com/dlang/dlang.org/pull/1845

--


[Issue 17677] [REG 2.073.0] ICE when adding ulong to cfloat

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17677

Vladimir Panteleev  changed:

   What|Removed |Added

   Keywords||ice
Summary|[Reg 2.073] ICE when adding |[REG 2.073.0] ICE when
   |ulong to cfloat |adding ulong to cfloat
 OS|Windows |All

--- Comment #1 from Vladimir Panteleev  ---
Introduced in https://github.com/dlang/dmd/pull/6238

--


[Issue 17693] std.json cannot parse dub.json package files

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17693

Vladimir Panteleev  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |WONTFIX

--- Comment #1 from Vladimir Panteleev  ---
Fairly sure the JSON spec forbids trailing commas, so accepting them would
actually be violating the spec.

Although we could add an option to allow parsing trailing commas, it would make
much more sense to fix Dub instead.

Please file this at https://github.com/dlang/dub/issues ?

If you would like std.json to have an option to allow trailing commas, please
file a new issue, but I think it would need to have a much stronger
justification than just Dub allowing them.

As a workaround, I suggest that you use the same JSON parsing library in your
project that Dub uses. That should guarantee compatibility.

--


[Issue 17673] regex(["\\\\\\\\|\\\\\"", "\"|$"]) - wrong whichPattern

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17673

--- Comment #2 from Dmitry Olshansky  ---
(In reply to Dmitry Olshansky from comment #1)
> https://github.com/dlang/phobos/pull/5660

Sorry wrong window.

--


[Issue 17458] [std.regex] Assertion failure in package.d

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17458

--- Comment #3 from Dmitry Olshansky  ---
https://github.com/dlang/phobos/pull/5660

--


[Issue 17673] regex(["\\\\\\\\|\\\\\"", "\"|$"]) - wrong whichPattern

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17673

--- Comment #1 from Dmitry Olshansky  ---
https://github.com/dlang/phobos/pull/5660

--


[Issue 17693] New: std.json cannot parse dub.json package files

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17693

  Issue ID: 17693
   Summary: std.json cannot parse dub.json package files
   Product: D
   Version: D2
  Hardware: All
OS: All
Status: NEW
  Severity: trivial
  Priority: P1
 Component: phobos
  Assignee: nob...@puremagic.com
  Reporter: an...@s-e-a-p.de

It's only a minor issue but I want to bring this to your attention.

std.json cannot parse several dub.json files as the json implementation of dub
allows trailing commas. std.json will fail to parse these package definitions.

I noticed this (annoying) issue while writing an own dub registry server.

--


[Issue 17458] [std.regex] Assertion failure in package.d

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17458

--- Comment #2 from Vladimir Panteleev  ---
The error message needs to be improved, then. "Assertion failure" is devoid of
any information.

See also: https://github.com/dlang/phobos/pull/5578

--


[Issue 17458] [std.regex] Assertion failure in package.d

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17458

--- Comment #1 from Dmitry Olshansky  ---
Not a bug - there is no match, before calling matches.hit one must check it for
!matches.empty.

--


[Issue 17066] [REG2.073a] std.regex captures got immutable

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17066

Dmitry Olshansky  changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution|--- |FIXED

--- Comment #6 from Dmitry Olshansky  ---
Regex was reverted

--


[Issue 17673] regex(["\\\\\\\\|\\\\\"", "\"|$"]) - wrong whichPattern

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17673

Dmitry Olshansky  changed:

   What|Removed |Added

   Assignee|nob...@puremagic.com|dmitry.o...@gmail.com

--


[Issue 17668] regex(q"<[^]>")

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17668

--- Comment #1 from Dmitry Olshansky  ---
https://github.com/dlang/phobos/pull/5657

--


[Issue 15432] Win64: bad code offset in debug line number info

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=15432

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

   What|Removed |Added

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

--


[Issue 15432] Win64: bad code offset in debug line number info

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=15432

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

https://github.com/dlang/dmd/commit/399b12d8d6feaf43ced88c2559404f29ab70c496
fix issue 15432: Win64: bad code offset in debug line number info

pinhole optimization should not yield different results if run twice

https://github.com/dlang/dmd/commit/a7867ca72bf51a6db9e3ed44428e142a21d3de75
Merge pull request #6979 from rainers/issue15432

fix issue 15432: Win64: bad code offset in debug line number info
merged-on-behalf-of: Rainer Schuetze 

--


[Issue 17692] New: Filtering a struct instance's .tupleof loses contained this reference

2017-07-26 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=17692

  Issue ID: 17692
   Summary: Filtering a struct instance's .tupleof loses contained
this reference
   Product: D
   Version: D2
  Hardware: x86_64
OS: Linux
Status: NEW
  Severity: enhancement
  Priority: P1
 Component: dmd
  Assignee: nob...@puremagic.com
  Reporter: htven...@gmail.com

Okay, let's start with the code to reproduce, to put things in context:

-

import std.meta : Filter;
import std.typecons : No;
import std.traits : hasUDA;

struct S
{
  int a;
  int b;
  @(No.Wanted) int c;
}

private template isWanted(alias field) {
  enum isWanted = !hasUDA!(field, No.Wanted);
}

void foo(TS...)(TS args)
{
  import std.conv : to;
  import std.stdio : writefln;

  foreach (index, arg; args)
  {
writefln("%d: %s", index, arg.to!string);
  }
}

void main()
{
  S s = S(5, 6, 7);
  foo(s.tupleof); // works, passes all struct fields as arguments
  foo(Filter!(isWanted, s.tupleof)); // error
}

-

EXPECTED BEHAVIOR

The both calls to foo() work, and the program outputs:
0: 5
1: 6
2: 7
0: 5
1: 6


ACTUAL BEHAVIOR

Compilation fails with the following errors:

tupleof_filter.d(31): Error: need 'this' for 'a' of type 'int'
tupleof_filter.d(31): Error: need 'this' for 'b' of type 'int'


REAL WORLD CASE

I hit this while working on https://github.com/trishume/ddbus/pull/21,
specifically when trying to allow selective marshaling of struct fields. I
changed
https://github.com/thaven/ddbus/blob/6bce6cf6490ce819f048b7ea8f1458ec66fbf1c8/source/ddbus/conv.d#L119
(which worked) from

buildIter(, arg.tupleof);

to

buildIter(, Filter!(isAllowedField, arg.tupleof));

and added the isAllowedField predicate template and then got the 'no this for
member' errors. I needed to rewrite this nice compact line of code into ugly
`foreach` + `static if` to work around the issue.

--