diff trunk/src/Parser.d @ 258:112a57f433f2

- Created class TemplateParameters. - Changed instances of TemplateParameter[] to TemplateParameters.
author aziz
date Wed, 01 Aug 2007 20:55:04 +0000
parents 6c58366ba1eb
children 8118da6fee44
line wrap: on
line diff
--- a/trunk/src/Parser.d	Wed Aug 01 20:37:03 2007 +0000
+++ b/trunk/src/Parser.d	Wed Aug 01 20:55:04 2007 +0000
@@ -333,7 +333,7 @@
       {
 //         writef("°Function°");
         // It's a function declaration
-        TemplateParameter[] tparams;
+        TemplateParameters tparams;
         if (tokenAfterParenIs(T.LParen))
         {
           // ( TemplateParameterList ) ( ParameterList )
@@ -842,7 +842,7 @@
     assert(token.type == T.Class);
 
     string className;
-    TemplateParameter[] tparams;
+    TemplateParameters tparams;
     BaseClass[] bases;
     Declaration[] decls;
     bool hasBody;
@@ -917,7 +917,7 @@
     assert(token.type == T.Interface);
 
     string name;
-    TemplateParameter[] tparams;
+    TemplateParameters tparams;
     BaseClass[] bases;
     Declaration[] decls;
     bool hasBody;
@@ -959,7 +959,7 @@
     TOK tok = token.type;
 
     string name;
-    TemplateParameter[] tparams;
+    TemplateParameters tparams;
     Declaration[] decls;
     bool hasBody;
 
@@ -3219,7 +3219,7 @@
       break;
 /+ // parsed in parseDeclaration()
     case T.LParen:
-      TemplateParameter[] tparams;
+      TemplateParameters tparams;
       if (tokenAfterParenIs(T.LParen))
       {
         // ( TemplateParameterList ) ( ParameterList )
@@ -3423,15 +3423,17 @@
     return args;
   }
 
-  TemplateParameter[] parseTemplateParameterList()
+  TemplateParameters parseTemplateParameterList()
   {
+    auto begin = token;
     require(T.LParen);
     if (token.type == T.RParen)
       return null;
 
-    TemplateParameter[] tparams;
+    auto tparams = new TemplateParameters;
     while (1)
     {
+      auto paramBegin = token;
       TP tp;
       Token* ident;
       Type valueType;
@@ -3517,13 +3519,14 @@
         }
       }
 
-      tparams ~= new TemplateParameter(tp, valueType, ident, specType, defType, specValue, defValue);
+      tparams ~= set(new TemplateParameter(tp, valueType, ident, specType, defType, specValue, defValue), paramBegin);
 
       if (token.type != T.Comma)
         break;
       nT();
     }
     require(T.RParen);
+    set(tparams, begin);
     return tparams;
   }