Re: import in mixin template

2016-05-26 Thread vitus via Digitalmars-d-learn

On Thursday, 26 May 2016 at 05:47:36 UTC, Era Scarecrow wrote:

On Thursday, 26 May 2016 at 05:20:25 UTC, vitus wrote:
Why 'alias wln1 = writeln;' doesnt't work but 'alias wln2 = 
std.stdio.writeln;' work when import is not static? Why 
'wln2("test");' work but 'std.stdio.writeln("test");' doesn't? 
(changing import to static import doesn't change anything)


 The import seems to be localized to just the mixin & the 
template. Makes sense since you don't want to be cluttering the 
namespace with other imports.


 The only thing you haven't shown is that the 'alias m' is 
identified and accessible. Adding it in the compiler doesn't 
complain; Only line 11 (alias wln1) complains for me DMD w32 
v2.071.0.


But why is 'std.stdio.writeln' accessible from CLASS but writeln 
no? Both are imported in MIXIN.


and:

mixin template MIXIN(){
import std.stdio;
}

class CLASS{

mixin MIXIN;

void test(){
alias wln = std.stdio.writeln;  //OK
wln("test");  //OK
		std.stdio.writeln("test");	//Error: Deprecation: module 
std.stdio is not accessible here, perhaps add 'static import 
std.stdio;'


}
}

Why is possible create alias to function 'std.stdio.writeln'  but 
cannot by called as a function directly?




import in mixin template

2016-05-25 Thread vitus via Digitalmars-d-learn

Code:

mixin template MIXIN(){
import std.stdio;

alias m = writeln;  //OK
}

class CLASS{

mixin MIXIN;

	alias wln1 = writeln;			//Error: 'writeln' is not defined, 
perhaps you need to import std.stdio; ?

alias wln2 = std.stdio.writeln; //OK
void test(){
wln2("test"); //OK
		std.stdio.writeln("test");	//Error: Deprecation: module 
std.stdio is not accessible here, perhaps add 'static import 
std.stdio;'

}
}

Why 'alias wln1 = writeln;' doesnt't work but 'alias wln2 = 
std.stdio.writeln;' work when import is not static?
Why 'wln2("test");' work but 'std.stdio.writeln("test");' 
doesn't? (changing import to static import doesn't change 
anything)


Re: order of declaration/definition

2015-08-27 Thread vitus via Digitalmars-d-learn

On Thursday, 27 August 2015 at 13:14:24 UTC, Daniel Kozák wrote:


On Thu, 27 Aug 2015 13:01:02 +
vitus via Digitalmars-d-learn 
digitalmars-d-learn@puremagic.com wrote:




works ok for me


V tom je ten problém :)


Re: order of declaration/definition

2015-08-27 Thread vitus via Digitalmars-d-learn

On Monday, 24 August 2015 at 01:01:13 UTC, John Colvin wrote:

enum A = 1;
enum B = C; //Error
static if(A)
enum C = 0;
enum D = C; //OK

Is order supposed to matter here?


Beter:

enum E = 1;
struct Foo{
enum X1 = E;
static if(1) enum E = 2;
enum X2 = E;
}

static assert(Foo.X1 != Foo.X2);


class Bar{
enum X1 = __traits(isAbstractClass, typeof(this));
static if(1) abstract void bar();
enum X2 = __traits(isAbstractClass, typeof(this));
}

static assert(Bar.X1 != Bar.X2);


mixins has same problem.


alias overloading strange error

2015-07-31 Thread vitus via Digitalmars-d-learn

//Why expression 'foobar(1);' doesn't work?


void foo()(){}
void bar(int){}

alias foobar = foo;
alias foobar = bar;

void main(){
.foobar(1); //OK
foobar(1);  //Error: overload alias 'foo' is not a variable

}