[Issue 17606] dmd wrongly accepts field without type when annotated with a UDA
https://issues.dlang.org/show_bug.cgi?id=17606 Vladimir Panteleevchanged: What|Removed |Added Hardware|x86 |All OS|Linux |All --- Comment #2 from Vladimir Panteleev --- Yeah, pretty sure you can add anything to a declaration that distinguishes it from a statement, which apparently includes UDAs. "auto" is a no-effect keyword that you can use if you have nothing else to write there. Same reason why `const foo() { return 1; }` is valid inside a method. --
[Issue 15304] [REG 2.068.0] Error about SortedRange not being nothrow in debug mode
https://issues.dlang.org/show_bug.cgi?id=15304 --- Comment #6 from Vladimir Panteleev--- Fixed by https://github.com/dlang/dmd/pull/5881. --
[Issue 17601] [REG2.075.0-b1] segmentation fault for dmd -deps
https://issues.dlang.org/show_bug.cgi?id=17601 --- Comment #2 from Vladimir Panteleev--- Reduced: a.d import b; b.d void foo() { import c; } c.d struct { void () } // build.sh / dmd -c -deps a.d -of/dev/null / Bisection points to https://github.com/dlang/dmd/pull/6748 but it's more likely that that change simply exposed a latent bug. --
[Issue 17605] [REG2.066.0] __traits(compiles, closure) adds link-time reference to _d_allocmemory
https://issues.dlang.org/show_bug.cgi?id=17605 Vladimir Panteleevchanged: What|Removed |Added Summary|__traits(compiles, closure) |[REG2.066.0] |adds link-time reference to |__traits(compiles, closure) |_d_allocmemory |adds link-time reference to ||_d_allocmemory Severity|normal |regression --- Comment #3 from Vladimir Panteleev --- It looks like this was temporarily fixed in https://github.com/dlang/dmd/pull/2845 and then broken again shortly after in https://github.com/dlang/dmd/pull/3625. I suppose that makes this a regression. --
[Issue 17614] [REG2.075.0-b2] __VERSION__ has the wrong value
https://issues.dlang.org/show_bug.cgi?id=17614 greenifychanged: What|Removed |Added CC||greensunn...@gmail.com --- Comment #1 from greenify --- *** Issue 17608 has been marked as a duplicate of this issue. *** --
[Issue 17608] [REG2.075.0-b2] No [] operator overload for type object.TypeInfo_Class
https://issues.dlang.org/show_bug.cgi?id=17608 greenifychanged: What|Removed |Added Status|NEW |RESOLVED CC||greeen...@gmail.com Resolution|--- |DUPLICATE --- Comment #3 from greenify --- Sönke also found this issue, marking this one as a duplicate because his issue has the correct title. *** This issue has been marked as a duplicate of issue 17614 *** --
[Issue 17614] New: [REG2.075.0-b2] __VERSION__ has the wrong value
https://issues.dlang.org/show_bug.cgi?id=17614 Issue ID: 17614 Summary: [REG2.075.0-b2] __VERSION__ has the wrong value Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: regression Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: slud...@outerproduct.org Reports 75 instead of 2075. --
[Issue 17612] [REG2.063] Segmentation fault with bad object.d
https://issues.dlang.org/show_bug.cgi?id=17612 Walter Brightchanged: What|Removed |Added CC||bugzi...@digitalmars.com --- Comment #1 from Walter Bright --- https://github.com/dlang/dmd/pull/6975 --
[Issue 16564] KRRegion.empty sometimes returns Ternary.no
https://issues.dlang.org/show_bug.cgi?id=16564 --- Comment #5 from Vladimir Panteleev--- (In reply to Temtaime from comment #4) > ubyte[1024 * 1024] buf; Are you sure that's not just because you have a 1MB static array on the stack? This program, by itself, crashes on Windows (because of stack overflow): void main() { ubyte[1024 * 1024] buf; } --
[Issue 17369] [Module std.traits] Documentation lists ditto in table
https://issues.dlang.org/show_bug.cgi?id=17369 github-bugzi...@puremagic.com changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --
[Issue 17369] [Module std.traits] Documentation lists ditto in table
https://issues.dlang.org/show_bug.cgi?id=17369 --- Comment #2 from github-bugzi...@puremagic.com --- Commits pushed to master at https://github.com/dlang/phobos https://github.com/dlang/phobos/commit/43eadc38e3e31258470b53237db4176876ad54c5 Fix Issue 17369 - [Module std.traits] Documentation lists ditto in table https://github.com/dlang/phobos/commit/0d7ce7f65969af6cb7c06f1a48ed4ead77194d80 Merge pull request #5558 from RazvanN7/Issue_17369 Fix Issue 17369 - [Module std.traits] Documentation lists ditto in table merged-on-behalf-of: Sebastian Wilzbach--
[Issue 8472] Replace walkLength() with an improved count()
https://issues.dlang.org/show_bug.cgi?id=8472 --- Comment #2 from Andrei Alexandrescu--- thx! --
[Issue 8472] Replace walkLength() with an improved count()
https://issues.dlang.org/show_bug.cgi?id=8472 RazvanNchanged: What|Removed |Added Status|NEW |RESOLVED CC||razvan.nitu1...@gmail.com Resolution|--- |WONTFIX --- Comment #1 from RazvanN --- walkLength wasn't deprecated, but the enhancement for count was added. Since the title is replace walkLength, I'm closing this with WONTFIX. --
[Issue 4923] immutable module variables are modifiable in non-shared module constructors
https://issues.dlang.org/show_bug.cgi?id=4923 Steven Schveighofferchanged: What|Removed |Added Keywords|pull| CC||schvei...@yahoo.com --
[Issue 6114] immutable class variable not properly initialized when the constructor initializing it is non-shared
https://issues.dlang.org/show_bug.cgi?id=6114 Steven Schveighofferchanged: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |DUPLICATE --- Comment #6 from Steven Schveighoffer --- The example isn't exactly pointing out the error. There are 2 problems here, one is an expectation that a non-shared static ctor might run before the shared one (it doesn't, the order is clearly defined). That's not really a bug. The second is that immutable (shared) data is changing from one thread to the next. I think this should be closed as a dup of 4923. *** This issue has been marked as a duplicate of issue 4923 *** --
[Issue 4923] immutable module variables are modifiable in non-shared module constructors
https://issues.dlang.org/show_bug.cgi?id=4923 --- Comment #7 from Steven Schveighoffer--- *** Issue 6114 has been marked as a duplicate of this issue. *** --
[Issue 17540] std.net.curl: HTTP no possibillity to set CURLOPT_NOPROXY
https://issues.dlang.org/show_bug.cgi?id=17540 --- Comment #2 from github-bugzi...@puremagic.com --- Commits pushed to master at https://github.com/dlang/phobos https://github.com/dlang/phobos/commit/e40a35675a89ec9346ba90cf973a423ff8e5d973 Fix Issue 17540 - std.net.curl: HTTP no possibillity to set CURLOPT_NOPROXY https://github.com/dlang/phobos/commit/1a5ae4aee5a0c4c509ea55dd88e1a26941f932d3 Merge pull request #5538 from RazvanN7/Issue17540 [Trivial] Fix Issue 17540 - setting CurlOption.noproxy is cumbersome merged-on-behalf-of: Sebastian Wilzbach--
[Issue 17613] New: Inconsistent behaviour in code coverage
https://issues.dlang.org/show_bug.cgi?id=17613 Issue ID: 17613 Summary: Inconsistent behaviour in code coverage Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: hst...@quickfur.ath.cx Reduced code: import std.stdio; struct MyFile { this(string filename) { } auto byLine() { return 0; } } struct Wrapper { this(Args...)(Args args) {} } auto func(F = std.stdio.File)(bool[] args) { import std.algorithm.iteration : map; foreach (x; args.map!(arg => arg ? Wrapper( F("A").byLine) : Wrapper( 0))) { } } void main() { import std.algorithm : each; func!MyFile([ true, false ]); func([ false ]); } Compile with dmd -unittest -cov, and run the program. Here is the obtained .lst file: |import std.stdio; |struct MyFile |{ 1|this(string filename) { } 1|auto byLine() { return 0; } |} |struct Wrapper |{ 3|this(Args...)(Args args) {} |} |auto func(F = std.stdio.File)(bool[] args) |{ |import std.algorithm.iteration : map; 17|foreach (x; args.map!(arg => arg ? Wrapper( 000|F("A").byLine) : 2|Wrapper( |0))) |{ } |} |void main() |{ |import std.algorithm : each; 1|func!MyFile([ true, false ]); 1|func([ false ]); |} util.d is 87% covered Note the line with 000. This is clearly wrong, because the first call to func!MyFile ought to have traversed both branches of the ?: operator, so F("A").byLine must have been invoked at least once. Now comment out the second call to func (func([ false ])), recompile, and run again. Here is the obtained .lst file: |import std.stdio; |struct MyFile |{ 1|this(string filename) { } 1|auto byLine() { return 0; } |} |struct Wrapper |{ 2|this(Args...)(Args args) {} |} |auto func(F = std.stdio.File)(bool[] args) |{ |import std.algorithm.iteration : map; 11|foreach (x; args.map!(arg => arg ? Wrapper( |F("A").byLine) : 1|Wrapper( |0))) |{ } |} |void main() |{ |import std.algorithm : each; 1|func!MyFile([ true, false ]); |//func([ false ]); |} util.d is 100% covered Note that the call to F("A").byLine is now *no longer part of the coverage count*. So here we have a paradoxical situation where decreasing code coverage (by not instantiating func with the default parameter for F) increases the reported code coverage to 100%. Note that defaulting F to std.stdio.File seems to be an essential part of this bug; I could not get rid of the reference to std.stdio.File without making the bug also vanish. (I tried declaring my own version of File in a different module and importing that, but that made the bug disappear.) Also, the odd formatting of the Wrapper lines are necessary to expose this bug; in the original, unreduced code, the lines were wrapped this way because the original code had longer lines that needed to be wrapped. However, wrapping lines should not affect the code coverage percentage(!). --
[Issue 17608] [REG2.075.0-b2] No [] operator overload for type object.TypeInfo_Class
https://issues.dlang.org/show_bug.cgi?id=17608 ZombineDevchanged: What|Removed |Added CC||petar.p.ki...@gmail.com --
[Issue 17601] [REG2.075.0-b1] segmentation fault for dmd -deps
https://issues.dlang.org/show_bug.cgi?id=17601 --- Comment #1 from Vladimir Panteleev--- Reducing. --
[Issue 17605] __traits(compiles, closure) adds link-time reference to _d_allocmemory
https://issues.dlang.org/show_bug.cgi?id=17605 --- Comment #2 from ZombineDev--- Agreed. From my superficial understanding of dmd's internals, I think the culprit is around `needsCodegen()`. AFAIR, changes to that code often led to regressions and undefined symbol references and in the past 3-4 years it was relatively often tweaked, though I think it was stable / unchanged over the last year or so. I don't remember if Walter and Kenji agreed that they have reached the perfect design, so that no further changes to the general emission strategy were necessary, but judging from these bug reports, there's still work to be done. See also: https://github.com/ldc-developers/ldc/issues/2168#issuecomment-312494490 and https://issues.dlang.org/show_bug.cgi?id=17577. --
[Issue 17605] __traits(compiles, closure) adds link-time reference to _d_allocmemory
https://issues.dlang.org/show_bug.cgi?id=17605 Adam D. Ruppechanged: What|Removed |Added CC||destructiona...@gmail.com --- Comment #1 from Adam D. Ruppe --- I think this is a general case of CT-only functions in use still ending up in the object file simply because they were defined in the code... --
[Issue 17602] improve message for deprecated enum comparison
https://issues.dlang.org/show_bug.cgi?id=17602 Vladimir Panteleevchanged: What|Removed |Added Keywords||diagnostic Hardware|x86_64 |All OS|Linux |All --
[Issue 17612] [REG2.063] Segmentation fault with bad object.d
https://issues.dlang.org/show_bug.cgi?id=17612 Vladimir Panteleevchanged: What|Removed |Added Priority|P1 |P5 --
[Issue 17612] New: [REG2.063] Segmentation fault with bad object.d
https://issues.dlang.org/show_bug.cgi?id=17612 Issue ID: 17612 Summary: [REG2.063] Segmentation fault with bad object.d Product: D Version: D2 Hardware: All OS: All Status: NEW Keywords: ice Severity: regression Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: dlang-bugzi...@thecybershadow.net // object.d // module object; class Object { string toString(); } class TypeInfo {} // $ dmd object.d object.d(5): Error: undefined identifier 'string' 27160 Segmentation fault (core dumped) dmd object.d Introduced in https://github.com/dlang/dmd/pull/1822 --
[Issue 15625] Internal error: backend/elfobj.c 1014
https://issues.dlang.org/show_bug.cgi?id=15625 Marco Leisechanged: What|Removed |Added CC||marco.le...@gmx.de --- Comment #7 from Marco Leise --- This patch seems to work for me: --- dmd2/src/dmd/backend/backconfig.c2016-03-03 11:42:12.0 +0100 +++ dmd2/src/dmd/backend/backconfig.c2017-07-06 16:32:03.540184944 +0200 @@ -95,7 +95,7 @@ #if TARGET_LINUX if (model == 64) { config.exe = EX_LINUX64; -config.ehmethod = EH_DWARF; +config.ehmethod = EH_DM; config.fpxmmregs = TRUE; } else It switches exception handling on 64-bit Linux back from DWARF to the old druntime method, in case someone needs a quick fix to get this old version compiling again. --
[Issue 17599] Abbreviate too long type definitions in error messages
https://issues.dlang.org/show_bug.cgi?id=17599 Vladimir Panteleevchanged: What|Removed |Added Keywords||diagnostic --
[Issue 4851] Three suggestions for std.random
https://issues.dlang.org/show_bug.cgi?id=4851 RazvanNchanged: What|Removed |Added Status|ASSIGNED|RESOLVED CC||razvan.nitu1...@gmail.com Resolution|--- |FIXED --
[Issue 17440] Nullable.nullify() resets referenced object
https://issues.dlang.org/show_bug.cgi?id=17440 --- Comment #6 from RazvanN--- (In reply to Marenz from comment #5) > Closing? Well.. It is _very_ unexpected that Nullable would just follow a > reference and kills everything. It's like you add a pointer to an array and > after setting it to null your pointed object is also reset. > > While this is not a terrible problem to work around, it is quite > inconsistent and surprising behavior and I think this should really be fixed. > > Do you really want to have such behavior in the std lib? Nullable wasn't design for reference types. I guess that a check could be added to reject creating Nullable's from data structures that are not value types. --
[Issue 17596] dmd d 2.073.2 and 2.074.1 interim generated dmd segfaults on FreeBSD 12-CURRENT
https://issues.dlang.org/show_bug.cgi?id=17596 --- Comment #4 from Vladimir Panteleev--- (In reply to Cy Schubert from comment #3) > The implementer of inode64 has done a great job of avoiding ABI breakage. > Applications built before inode64 continue to run due to code in libc to > detect "old" v.s. "new". Most newly compiled code builds and runs okay. DMD > is different however because many data structures are replicated in DMD. For > example stat_t and dirent_t headers have issues. How does the old/new detection work? Does it look at the ELF timestamp, or something like that? Because D has binary releases for FreeBSD (and compiling it from source is a bit onerous as it requires bootstrapping through an older version of D), we will probably want to ensure, if possible, that the binary D releases will work on both new and old versions of the system for a while. This likely means that we would want to use the old fstat ABI exclusively for a few years, so if it's possible to opt in to the old ABI, that would probably be the way to go for now. Is the new functionality available via a new function akin to fstat64 on Linux? > I wasn't able to find a stub that DMD D might use to make the actual call. > If you can point me in the right direction I should be able to do the work > myself (when I can find the time). dmd/src/root/file.d is now located at dmd/src/ddmd/root/file.d: https://github.com/dlang/dmd/blob/master/src/ddmd/root/file.d#L97 For FreeBSD, fstat is defined here: https://github.com/dlang/druntime/blob/master/src/core/sys/posix/sys/stat.d#L1207 and stat_t here: https://github.com/dlang/druntime/blob/master/src/core/sys/posix/sys/stat.d#L730-L758 Finally, ino_t is defined here: https://github.com/dlang/druntime/blob/master/src/core/sys/posix/sys/types.d#L135 I believe that fstat is called by linking to the respective libc, i.e. D does not perform the syscall directly. > Having said that, any change would be incompatible with older releases of > FreeBSD so, a possible solution might be a version check for > version(FreeBSD12+) -- (FreeBSD uses a version check in > /usr/include/sys/param.h.) Is there a way to determine which release of > FreeBSD within DMD D? Such as version(something)? Not as far as I know. I guess it would require changing the compiler to detect the FreeBSD release and enable a corresponding version, which would also need to be added. --
[Issue 17440] Nullable.nullify() resets referenced object
https://issues.dlang.org/show_bug.cgi?id=17440 --- Comment #5 from Marenz--- Closing? Well.. It is _very_ unexpected that Nullable would just follow a reference and kills everything. It's like you add a pointer to an array and after setting it to null your pointed object is also reset. While this is not a terrible problem to work around, it is quite inconsistent and surprising behavior and I think this should really be fixed. Do you really want to have such behavior in the std lib? --
[Issue 17440] Nullable.nullify() resets referenced object
https://issues.dlang.org/show_bug.cgi?id=17440 RazvanNchanged: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |INVALID --
[Issue 17440] Nullable.nullify() resets referenced object
https://issues.dlang.org/show_bug.cgi?id=17440 --- Comment #4 from RazvanN--- Eveyone ok with closing this? --
[Issue 17600] implicit float->int cast using += operator
https://issues.dlang.org/show_bug.cgi?id=17600 --- Comment #2 from Simon--- I expected "x += y" to be equivalent to "x = x + y" (in which case an error is generated). Sorry I didn't check the spec, everything is actually correct. (but really surprising behavior IMHO). My bad. --
[Issue 17440] Nullable.nullify() resets referenced object
https://issues.dlang.org/show_bug.cgi?id=17440 --- Comment #3 from Marenz--- >Is there any particular reason you need to use Nullify with a class type >instead of simply using the class type directly and use "null" to indicate the >unset state? There is no pressing need to do this. I am having a special array class that wraps every member in a Nullable and of course it's templated. So I needed to add a special overload/case for class types to work around that. It's less a 'need' but more a 'this was very unexpected'. --
[Issue 17440] Nullable.nullify() resets referenced object
https://issues.dlang.org/show_bug.cgi?id=17440 --- Comment #2 from Vladimir Panteleev--- (In reply to Marenz from comment #0) > I am not sure if it is desired, but it was highly unintuitive and unexpected > for me: > > If you use Nullable with a class type and call .nullify(), all members of > the class are set to the uninitialized state. Example: That is almost certainly not intended, and (as RazvanN wrote) is because the Nullable implementation makes no attempt to do anything different when used with a class. What happens is that it calls object.destroy on the class, which instead of setting the class reference to null, it clobbers the class data. However, I think your example is also incorrect, because it accesses the value of a nullified object. Is there any particular reason you need to use Nullify with a class type instead of simply using the class type directly and use "null" to indicate the unset state? --
[Issue 17227] deprecation messages building Phobos
https://issues.dlang.org/show_bug.cgi?id=17227 Sebchanged: What|Removed |Added Status|NEW |RESOLVED CC||greensunn...@gmail.com Resolution|--- |FIXED --- Comment #2 from Seb --- Fixed with https://github.com/dlang/phobos/pull/5546 - unfortunately forgot to link the issue in the PR, so it won't show up in the changelog. Sorry. --
[Issue 11594] synchronized causing segfault instead of Error.
https://issues.dlang.org/show_bug.cgi?id=11594 --- Comment #3 from github-bugzi...@puremagic.com --- Commit pushed to master at https://github.com/dlang/druntime https://github.com/dlang/druntime/commit/a2ead6dd04efdfeb283b72daf167e85fe8db9c49 Fix issue 11594: Check if the monitor is null in _d_monitorenter In case of ``` synchronized (null) { // ... } ``` runtime will try to access __monitor field on a null, without checking if it's a null and it will segfault, leaving programmer clueless. https://issues.dlang.org/show_bug.cgi?id=11594 --
[Issue 11594] synchronized causing segfault instead of Error.
https://issues.dlang.org/show_bug.cgi?id=11594 github-bugzi...@puremagic.com changed: What|Removed |Added Resolution|WORKSFORME |FIXED --
[Issue 17369] [Module std.traits] Documentation lists ditto in table
https://issues.dlang.org/show_bug.cgi?id=17369 RazvanNchanged: What|Removed |Added CC||razvan.nitu1...@gmail.com --- Comment #1 from RazvanN --- PR : https://github.com/dlang/phobos/pull/5558 --
[Issue 17611] New: core.demangle cannot demangle delegates with function attributes
https://issues.dlang.org/show_bug.cgi?id=17611 Issue ID: 17611 Summary: core.demangle cannot demangle delegates with function attributes Product: D Version: D2 Hardware: x86_64 OS: Windows Status: NEW Severity: normal Priority: P1 Component: druntime Assignee: nob...@puremagic.com Reporter: r.sagita...@gmx.de The symbol "_D4test2dgDxFiYd" is not demangled by core.demangle or ddemangle. It should demangle as "double delegate(int, ...) const test.dg". --