digitalmars.D.bugs - roll-up of old bugs: access specifiers broken for templates
- Sean Kelly (55/55) Jan 24 2006 This one has been reported a lot, but it's in my bug list so I figured
This one has been reported a lot, but it's in my bug list so I figured
I'd re-submit it anyway. It's currently preventing some unit tests from
running, so it would be nice if it were fixed.
C:\code\d\bugs>type 101_5.d
// This demonstrates an error with access specifiers using
// nested classes.
import std.c.stdio;
template Templ(T)
{
class TemplA
{
private:
int val;
}
class TemplB
{
public:
this()
{
TemplA a = new TemplA();
a.val = 5;
}
}
}
class Class(T)
{
class ClassA
{
private:
int val;
}
this()
{
ClassA a = new ClassA();
a.val = 5; // failure is here
}
}
int main()
{
Templ!(int).TemplB tb = new Templ!(int).TemplB();
Class!(int) cb = new Class!(int)();
return 0;
}
C:\code\d\bugs>dmd 101_5
101_5.d(38): class 101_5.Class!(int).Class.ClassA member val is not
accessible
101_5.d(45): template instance 101_5.Class!(int) error instantiating
101_5.d(45): Class!(int) is used as a type
101_5.d(45): new can only create structs, dynamic arrays or class
objects, not v
oid's
101_5.d(45): cannot implicitly convert expression (new Class!(int)) of
type void
* to 101_5.Class!(int).Class
C:\code\d\bugs>
Jan 24 2006








Sean Kelly <sean f4.ca>