[Issue 20149] [DIP1000] temp returned from constructor call not checked for scope problems
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Mon Sep  9 09:20:35 UTC 2019
    
    
  
https://issues.dlang.org/show_bug.cgi?id=20149
--- Comment #16 from Mike Franklin <slavo5150 at yahoo.com> ---
(In reply to Walter Bright from comment #15)
> Please pare the example code down to the minimum.
This is the most minimal example I know how to make to illustrate the issue:
---
@safe:
struct ScopeBuffer
{
    this(char[4] init)
    {
        this.buf = init;
    }
    inout(char)[] opSlice(size_t lower, size_t upper) inout
    {
        return buf[lower .. upper];
    }
    char[4] buf;
}
char[] fun()
{
    char[4] buf = "abcd";
    auto sb = ScopeBuffer(buf);
    return sb[0..2];
}
void main()
{
    auto s = fun();
}
---
> In fact, the original
> issue was fixed. If there is another issue, please leave this one closed,
> and open a new issue for the other issue.
> 
> I.e. one issue == one fix
The example above is the original issue and is related to how `inout` infers
`return`.
The issue you added was a new, unrelated, issue related to how constructors are
checked for scope issues.  I fixed that issue in 
https://github.com/dlang/dmd/pull/10402.
If we wanted one issue == one fix, we should have made a new issue for the
check on constructors, but we're past that now.
The original issue remains, and I've submitted a fix to
https://github.com/dlang/dmd/pull/10390
--
    
    
More information about the Digitalmars-d-bugs
mailing list