[Issue 16123] alias member of member

2020-09-17 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16123

Andrei Alexandrescu  changed:

   What|Removed |Added

 CC||and...@erdani.com

--- Comment #8 from Andrei Alexandrescu  ---
subscribe

--


[Issue 16123] alias member of member

2024-01-20 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16123

Nick Treleaven  changed:

   What|Removed |Added

 CC||n...@geany.org
   See Also||https://issues.dlang.org/sh
   ||ow_bug.cgi?id=6842,
   ||https://issues.dlang.org/sh
   ||ow_bug.cgi?id=14128

--


[Issue 16123] alias member of member

2024-08-26 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16123

--- Comment #9 from Nick Treleaven  ---
>   S s;
>   alias y = s.x; // note, this compiles just fine, you need to use it to flag 
> the error.

This is an error in the next edition:
https://dlang.org/spec/legacy#alias-instance-member

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

--


[Issue 16123] alias member of member

2016-06-04 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16123

Ketmar Dark  changed:

   What|Removed |Added

 CC||ket...@ketmar.no-ip.org

--


[Issue 16123] alias member of member

2016-06-06 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16123

--- Comment #1 from Sobirari Muhomori  ---
I guess, you can alias a symbol, but then the compiler doesn't know what S's
symbol in T struct means.

struct S
{
   int x;
   alias y = x;
}

actually means

struct S
{
   int x;
   alias y = S.x;
}


struct T
{
   S s;
   alias y = S.x; // what this means?
}

--


[Issue 16123] alias member of member

2016-06-06 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16123

--- Comment #2 from Steven Schveighoffer  ---
(In reply to Sobirari Muhomori from comment #1)

> struct T
> {
>S s;
>alias y = S.x; // what this means?
> }

Right, but I said s.x, not S.x. It means alias to the member x of the instance
of S called s, which resides in this instance of T.

Maybe it's more helpful if I say:

alias y = T.s.x;

In any case, I see no technical limitation of why this shouldn't work. If
there's already a way to do it, please close and let me know how to!

Note, I've worked around in my code by doing essentially:

private ref y() { return s.x; }

But I much prefer the alias mechanism.

--


[Issue 16123] alias member of member

2016-06-06 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16123

Max Samukha  changed:

   What|Removed |Added

 CC||maxsamu...@gmail.com

--- Comment #3 from Max Samukha  ---
(In reply to Steven Schveighoffer from comment #2)
> (In reply to Sobirari Muhomori from comment #1)
> 
> > struct T
> > {
> >S s;
> >alias y = S.x; // what this means?
> > }
> 
> Right, but I said s.x, not S.x. It means alias to the member x of the
> instance of S called s, which resides in this instance of T.

In 'alias', they are just two equivalent ways of referencing 'x', that is:

__traits(isSame, S.x, T.s.x) == true

And it kind of makes sense if you think of 'alias' as little more than a means
of creating synonyms for a symbol. With 's.x' in the 'alias' declaration, you
are simply importing 'x' to the namespace of 'T'. Not that I care much now, but
some code I wrote actually relied on this semantics.

--


[Issue 16123] alias member of member

2016-06-06 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16123

--- Comment #4 from Steven Schveighoffer  ---
I'm having trouble seeing how this logically is different. Access to t.s.x is
done by adding some offset to &t, just like access to s.x is done by adding
some offset to &s.

I get that the "symbol" I'm trying to alias is really a compound symbol, but I
can alias it just fine in other places.

This reminds me of the whole inability to alias keywords. It's an
implementation detail that I shouldn't have to care about!

--


[Issue 16123] alias member of member

2016-06-06 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16123

--- Comment #5 from Max Samukha  ---
(In reply to Steven Schveighoffer from comment #4)
> I'm having trouble seeing how this logically is different. Access to t.s.x
> is done by adding some offset to &t, just like access to s.x is done by
> adding some offset to &s.
> 
> I get that the "symbol" I'm trying to alias is really a compound symbol, but
> I can alias it just fine in other places.

I just say that what you are trying is not how 'alias' works, and the current
semantics does make sense. Whether it is good is a different issue.

> 
> This reminds me of the whole inability to alias keywords. It's an
> implementation detail that I shouldn't have to care about!

Inability to alias keywords is a different issue.

--


[Issue 16123] alias member of member

2016-06-06 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16123

--- Comment #6 from Steven Schveighoffer  ---
(In reply to Max Samukha from comment #5)
> (In reply to Steven Schveighoffer from comment #4)
> > I'm having trouble seeing how this logically is different. Access to t.s.x
> > is done by adding some offset to &t, just like access to s.x is done by
> > adding some offset to &s.
> > 
> > I get that the "symbol" I'm trying to alias is really a compound symbol, but
> > I can alias it just fine in other places.
> 
> I just say that what you are trying is not how 'alias' works, and the
> current semantics does make sense. Whether it is good is a different issue.

I would understand if s was a property and not a field, because you need to
execute code to compute the actual access. I get that alias is not as powerful
as a mixin, but this doesn't seem like a reasonable limitation.

Note: it's kind of weird that the compiler would allow this kind of alias to
compile when it's fully unusable.

> > This reminds me of the whole inability to alias keywords. It's an
> > implementation detail that I shouldn't have to care about!
> 
> Inability to alias keywords is a different issue.

To the user, it's not much different. Granted, two different implementation
issues, but it looks the same -- compiler cannot do what should be obviously
doable.

--


[Issue 16123] alias member of member

2016-06-06 Thread via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16123

Steven Schveighoffer  changed:

   What|Removed |Added

   Severity|normal  |enhancement

--- Comment #7 from Steven Schveighoffer  ---
(In reply to Max Samukha from comment #5)
> I just say that what you are trying is not how 'alias' works, and the
> current semantics does make sense. Whether it is good is a different issue.

However, I get your point that this is intended behavior and working as
designed. I'm changing to enhancement.

--


[Issue 16123] alias member of member

2022-12-17 Thread d-bugmail--- via Digitalmars-d-bugs
https://issues.dlang.org/show_bug.cgi?id=16123

Iain Buclaw  changed:

   What|Removed |Added

   Priority|P1  |P4

--