[Issue 15404] New: [internal] DotIdExp(TOKdot) and DotExp(TOKdotexp)
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Thu Dec 3 17:13:17 PST 2015
https://issues.dlang.org/show_bug.cgi?id=15404
Issue ID: 15404
Summary: [internal] DotIdExp(TOKdot) and DotExp(TOKdotexp)
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Keywords: ice
Severity: trivial
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: k.hara.pg at gmail.com
In expression.d:
extern (C++) final class DotIdExp : UnaExp
{
public:
Identifier ident;
extern (D) this(Loc loc, Expression e, Identifier ident)
{
super(loc, TOKdot, __traits(classInstanceSize, DotIdExp), e);
this.ident = ident;
}
and:
extern (C++) final class DotExp : BinExp
{
public:
extern (D) this(Loc loc, Expression e1, Expression e2)
{
super(loc, TOKdotexp, __traits(classInstanceSize, DotExp), e1, e2);
}
Few years ago when I started to read dmd code, I had confused about that TOKdot
is not associated with DotExp.
And also I couldn't understand why there isn't TOKdotid token for DotIdExp,
because, in contrast, DotTemplateExp and DotTemplateInstanceExp are using
TOKdottd and TOKdotti.
The two classes DotIdExp and DotExp have similar names, so the inconsistency of
AST class names and token names would be unfriendly for beginner contributors.
I'd propose to fix them as:
1. Introduce a new token TOKdotid and use it for DotIdExp.
2. Use TOKdot for DotExp, then remove TOKdotexp.
--
More information about the Digitalmars-d-bugs
mailing list