annotate dmd/FuncLiteralDeclaration.d @ 72:2e2a5c3f943a

reduced warnings by adding override to the methods think this also normalizes different line endings used all over the place
author Trass3r
date Sat, 28 Aug 2010 16:19:48 +0200
parents 51605de93870
children df6d0f967680
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
1 module dmd.FuncLiteralDeclaration;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
2
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
3 import dmd.FuncDeclaration;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
4 import dmd.TOK;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
5 import dmd.Loc;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
6 import dmd.Type;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
7 import dmd.ForeachStatement;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
8 import dmd.OutBuffer;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
9 import dmd.HdrGenState;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
10 import dmd.Dsymbol;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
11 import dmd.STC;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
12 import dmd.Lexer;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
13
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
14 class FuncLiteralDeclaration : FuncDeclaration
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
15 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
16 TOK tok; // TOKfunction or TOKdelegate
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
17
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
18 this(Loc loc, Loc endloc, Type type, TOK tok, ForeachStatement fes)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
19 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
20 super(loc, endloc, null, STC.STCundefined, type);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
21
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
22 string id;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
23
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
24 if (fes)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
25 id = "__foreachbody";
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
26 else if (tok == TOK.TOKdelegate)
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
27 id = "__dgliteral";
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
28 else
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
29 id = "__funcliteral";
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
30
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
31 this.ident = Lexer.uniqueId(id);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
32 this.tok = tok;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
33 this.fes = fes;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
34
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
35 //printf("FuncLiteralDeclaration() id = '%s', type = '%s'\n", this->ident->toChars(), type->toChars());
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
36 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
37
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 56
diff changeset
38 override void toCBuffer(OutBuffer buf, HdrGenState* hgs)
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
39 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
40 assert(false);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
41 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
42
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 56
diff changeset
43 override Dsymbol syntaxCopy(Dsymbol s)
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
44 {
56
51605de93870 TupleExp.optimize
korDen
parents: 0
diff changeset
45 FuncLiteralDeclaration f;
51605de93870 TupleExp.optimize
korDen
parents: 0
diff changeset
46
51605de93870 TupleExp.optimize
korDen
parents: 0
diff changeset
47 //printf("FuncLiteralDeclaration.syntaxCopy('%s')\n", toChars());
51605de93870 TupleExp.optimize
korDen
parents: 0
diff changeset
48 if (s)
51605de93870 TupleExp.optimize
korDen
parents: 0
diff changeset
49 f = cast(FuncLiteralDeclaration)s;
51605de93870 TupleExp.optimize
korDen
parents: 0
diff changeset
50 else
51605de93870 TupleExp.optimize
korDen
parents: 0
diff changeset
51 {
51605de93870 TupleExp.optimize
korDen
parents: 0
diff changeset
52 f = new FuncLiteralDeclaration(loc, endloc, type.syntaxCopy(), tok, fes);
51605de93870 TupleExp.optimize
korDen
parents: 0
diff changeset
53 f.ident = ident; // keep old identifier
51605de93870 TupleExp.optimize
korDen
parents: 0
diff changeset
54 }
51605de93870 TupleExp.optimize
korDen
parents: 0
diff changeset
55 FuncDeclaration.syntaxCopy(f);
51605de93870 TupleExp.optimize
korDen
parents: 0
diff changeset
56 return f;
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
57 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
58
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 56
diff changeset
59 override bool isNested()
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
60 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
61 //printf("FuncLiteralDeclaration::isNested() '%s'\n", toChars());
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
62 return (tok == TOK.TOKdelegate);
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
63 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
64
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 56
diff changeset
65 override bool isVirtual()
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
66 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
67 return false;
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
68 }
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
69
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 56
diff changeset
70 override FuncLiteralDeclaration isFuncLiteralDeclaration() { return this; }
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
71
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 56
diff changeset
72 override string kind()
0
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
73 {
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
74 return (tok == TOKdelegate) ? "delegate" : "function";
10317f0c89a5 Initial commit
korDen
parents:
diff changeset
75 }
72
2e2a5c3f943a reduced warnings by adding override to the methods
Trass3r
parents: 56
diff changeset
76 }