digitalmars.D.bugs - [Issue 4145] New: cross alias namespace can't be resolve
- d-bugmail puremagic.com (53/53) May 02 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4145
- d-bugmail puremagic.com (18/18) May 02 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4145
- d-bugmail puremagic.com (22/22) May 02 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4145
http://d.puremagic.com/issues/show_bug.cgi?id=4145
Summary: cross alias namespace can't be resolve
Product: D
Version: unspecified
Platform: Other
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody puremagic.com
ReportedBy: galaxylang gmail.com
---
//restrictly speakin, it's a language feature,not a bug
//The cross reference namespace can't be resolve in two level way?
//D can support it?
class Token
{
}
class KeyWord(string V):Token
{
}
class Seq(T...)
{
}
class Any(T...)
{
}
class And(T...)
{
}
class List(T)
{
}
alias Token TkID;
alias KeyWord!("+") TkAdd;
alias KeyWord!("-") TkSub;
alias KeyWord!("(") TkLeftBracket;
alias KeyWord!(")") TkRightBracket;
alias Any!(TkAdd,TkSub) TkAddSub;
alias TkID Invoker;
alias TkID ExpConst;
//hereļ¼report error ,ExpUnary is alias follow
alias List!ExpUnary ExpList;
alias Seq!(Invoker,TkLeftBracket,ExpList,TkRightBracket) ExpFunc;
alias Any!(TkID,ExpConst,ExpFunc) ExpUnary;
alias Seq!(ExpUnary,TkAddSub,ExpUnary) ExpAddSub;
void main(string[] args)
{
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 02 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4145
bearophile_hugs eml.cc changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bearophile_hugs eml.cc
This code can contain more than one problem. This is a reduced test case that
shows one of the problems:
class A(T) {}
class B(T) {}
alias B!Foo Bar;
alias A!(int) Foo;
void main() {}
dmd 2.043 shows:
test.d(3): Error: forward reference to 'A!(int)'
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 02 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4145
---
So a alternative way to solve this problem is re-typedef the it
class A(T) {}
class B(T) {}
alias B!Foo Bar;
typedef A!(int) Foo;
void main() {}
but this will cause a new problem,see below
class A
{
static A create();
}
typedef A B;
unittest
{
B b=B.create();//error: A can't convert to B
}
should A create() change to B create when typedef used?
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
May 02 2010









d-bugmail puremagic.com 