Mercurial > projects > dil
diff trunk/src/dil/semantic/Pass1.d @ 713:1bfae3480fdc
Added new predefined IDs and code to SemanticPass1.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Wed, 30 Jan 2008 23:23:58 +0100 |
parents | efa5fcb9aa14 |
children | 140469ecb90e |
line wrap: on
line diff
--- a/trunk/src/dil/semantic/Pass1.d Wed Jan 30 18:29:23 2008 +0100 +++ b/trunk/src/dil/semantic/Pass1.d Wed Jan 30 23:23:58 2008 +0100 @@ -142,7 +142,7 @@ uint alignSize; } - // List of mixin, static if and pragma(msg,...) declarations. + // List of mixin, static if, static assert and pragma(msg,...) declarations. // Their analysis must be deferred because they entail // evaluation of expressions. Deferred[] deferred; @@ -297,16 +297,40 @@ return d; } - D visit(ConstructorDeclaration) - { return null; } - D visit(StaticConstructorDeclaration) - { return null; } - D visit(DestructorDeclaration) - { return null; } - D visit(StaticDestructorDeclaration) - { return null; } - D visit(FunctionDeclaration) - { return null; } + D visit(ConstructorDeclaration d) + { + auto func = new Function(Ident.__ctor, d); + insertOverload(func, func.name); + return d; + } + + D visit(StaticConstructorDeclaration d) + { + auto func = new Function(Ident.__ctor, d); + insertOverload(func, func.name); + return d; + } + + D visit(DestructorDeclaration d) + { + auto func = new Function(Ident.__dtor, d); + insertOverload(func, func.name); + return d; + } + + D visit(StaticDestructorDeclaration d) + { + auto func = new Function(Ident.__dtor, d); + insertOverload(func, func.name); + return d; + } + + D visit(FunctionDeclaration d) + { + auto func = new Function(d.name, d); + insertOverload(func, func.name); + return d; + } D visit(VariablesDeclaration vd) { @@ -324,18 +348,25 @@ return vd; } - D visit(InvariantDeclaration) - { return null; } - D visit(UnittestDeclaration) - { return null; } + D visit(InvariantDeclaration d) + { + auto func = new Function(Ident.__invariant, d); + insert(func, func.name); + return d; + } + + D visit(UnittestDeclaration d) + { + auto func = new Function(Ident.__unittest, d); + insertOverload(func, func.name); + return d; + } + D visit(DebugDeclaration) { return null; } D visit(VersionDeclaration) { return null; } - D visit(StaticAssertDeclaration) - { return null; } - D visit(TemplateDeclaration d) { if (d.symbol) @@ -350,10 +381,19 @@ return d; } - D visit(NewDeclaration) - { /*add id to env*/return null; } - D visit(DeleteDeclaration) - { /*add id to env*/return null; } + D visit(NewDeclaration d) + { + auto func = new Function(Ident.__new, d); + insert(func, func.name); + return d; + } + + D visit(DeleteDeclaration d) + { + auto func = new Function(Ident.__delete, d); + insert(func, func.name); + return d; + } D visit(ProtectionDeclaration d) { @@ -391,6 +431,14 @@ return d; } + // Deferred declarations: + + D visit(StaticAssertDeclaration d) + { + addDeferred(d); + return d; + } + D visit(StaticIfDeclaration d) { addDeferred(d);