Thread overview
[Issue 9279] [REG2.055/2.063] Static array return value implicitly converted to immutable dynamic array
[Issue 9279] Static array return value implicitly converted to immutable dynamic array
Feb 26, 2015
Vladimir Panteleev
May 29, 2015
Martin Nowak
May 29, 2015
Vladimir Panteleev
May 29, 2015
Kenji Hara
May 29, 2015
Vladimir Panteleev
May 29, 2015
Kenji Hara
May 29, 2015
Kenji Hara
February 26, 2015
https://issues.dlang.org/show_bug.cgi?id=9279

Vladimir Panteleev <thecybershadow@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code

--
May 29, 2015
https://issues.dlang.org/show_bug.cgi?id=9279

Martin Nowak <code@dawg.eu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P2                          |P3
                 CC|                            |code@dawg.eu

--
May 29, 2015
https://issues.dlang.org/show_bug.cgi?id=9279

Vladimir Panteleev <thecybershadow@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Static array return value   |[REG2.055/2.063] Static
                   |implicitly converted to     |array return value
                   |immutable dynamic array     |implicitly converted to
                   |                            |immutable dynamic array
           Severity|critical                    |regression

--- Comment #6 from Vladimir Panteleev <thecybershadow@gmail.com> ---
(In reply to Vladimir Panteleev from comment #2)
> And now it doesn't even need to be a template function.

I guess that makes it a regression.

This program (based on original bug report):

/////////////////// test1.d //////////////////
static assert(!is(typeof({
    char[2] b()() { char[2] ret; return ret; }
    string a() { return b(); }
})));
//////////////////////////////////////////////

compiles in 2.054 but not in 2.055, regression introduced in: https://github.com/D-Programming-Language/dmd/pull/218

This program (based on comment 2):

//////////////////// test2.d ///////////////////
static assert(!is(typeof({
    char[12] getArr() { return "Hello World!"; }
    string getString() { return getArr(); }
})));
////////////////////////////////////////////////

compiles in 2.062 but not in 2.063, regression introduced in: https://github.com/D-Programming-Language/dmd/pull/1519

--
May 29, 2015
https://issues.dlang.org/show_bug.cgi?id=9279

--- Comment #7 from Kenji Hara <k.hara.pg@gmail.com> ---
(In reply to Vladimir Panteleev from comment #6)
> (In reply to Vladimir Panteleev from comment #2)
> I guess that makes it a regression.

I'm not sure it should be called "regression". Yes, the two enhancement PRs appended the cases of original wrong-code bug, caused by the undetection of escaping reference to local data. However the bug exists from the very old versions...

--
May 29, 2015
https://issues.dlang.org/show_bug.cgi?id=9279

--- Comment #8 from Vladimir Panteleev <thecybershadow@gmail.com> ---
(In reply to Kenji Hara from comment #7)
> I'm not sure it should be called "regression". Yes, the two enhancement PRs appended the cases of original wrong-code bug, caused by the undetection of escaping reference to local data. However the bug exists from the very old versions...

Is this about semantics?

IMO a regression is the effect of a change, not the nature of the change itself (i.e. whether it introduces a bug or merely exposes a latent bug).

You can call it whatever you like, but ultimately the effect is that something works as expected in version N and then doesn't in version N+1.

If we were to all sit down, discuss, and agree to use different terminology for different kinds of causes and effects, I could start calling them something else, though I think that would be a terrible waste of time.

Anyway, I hope my regression notifications on the pull requests aren't too demotivating. I don't know how I would feel if I received so many regression notifications. I certainly don't intend to accuse anyone of anything - I would like to know if a change that I authored or reviewed introduced a regression, which is why I'm posting the GitHub comments.

--
May 29, 2015
https://issues.dlang.org/show_bug.cgi?id=9279

--- Comment #9 from Kenji Hara <k.hara.pg@gmail.com> ---
(In reply to Vladimir Panteleev from comment #8)
> You can call it whatever you like, but ultimately the effect is that something works as expected in version N and then doesn't in version N+1.

Sorry, I understand that. It was just my complaint against the increasing of regression issues.

Fortunately, adding more escape check for the case is not so difficult. I'll open a PR in this day (JST).

--
May 29, 2015
https://issues.dlang.org/show_bug.cgi?id=9279

Kenji Hara <k.hara.pg@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull

--- Comment #10 from Kenji Hara <k.hara.pg@gmail.com> ---
https://github.com/D-Programming-Language/dmd/pull/4687

--
June 07, 2015
https://issues.dlang.org/show_bug.cgi?id=9279

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

https://github.com/D-Programming-Language/dmd/commit/6138de4b39a17cf05ea9f345be27f3f5b20dcb9b
fix Issue 9279 - Static array return value implicitly converted to immutable
dynamic array

https://github.com/D-Programming-Language/dmd/commit/6d3fc41b2ed1330bc270ebe67bdf4bf0b92973dc Merge pull request #4687 from 9rnsr/fix9279

[REG2.055/2.063] Issue 9279 - Static array return value implicitly converted to immutable dynamic array

--
June 17, 2015
https://issues.dlang.org/show_bug.cgi?id=9279

--- Comment #12 from github-bugzilla@puremagic.com ---
Commits pushed to stable at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/6138de4b39a17cf05ea9f345be27f3f5b20dcb9b
fix Issue 9279 - Static array return value implicitly converted to immutable
dynamic array

https://github.com/D-Programming-Language/dmd/commit/6d3fc41b2ed1330bc270ebe67bdf4bf0b92973dc Merge pull request #4687 from 9rnsr/fix9279

--