[svn] r7578: nemerle/trunk/ncc: testsuite/negative/default-parms.n testsuite/positive/default-parms.n typi...

nazgul svnadmin at nemerle.org
Tue Apr 3 21:30:50 CEST 2007


Log:
Handle default value of parameters better

Author: nazgul
Date: Tue Apr  3 21:30:39 2007
New Revision: 7578

Modified:
   nemerle/trunk/ncc/testsuite/negative/default-parms.n
   nemerle/trunk/ncc/testsuite/positive/default-parms.n
   nemerle/trunk/ncc/typing/TypedTree.n

Modified: nemerle/trunk/ncc/testsuite/negative/default-parms.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/negative/default-parms.n	(original)
+++ nemerle/trunk/ncc/testsuite/negative/default-parms.n	Tue Apr  3 21:30:39 2007
@@ -1,7 +1,7 @@
 enum Foo : long { | A  = -7 | B }
 
 module M {
-  public Foo1 (x : string = Main()) : void // E: invalid default value for parameter `x': `Main \(\)'
+  public Foo1 (x : string = Main()) : void // E: Incorrect format of parameter `x' default value. You should use
   {
   }
   

Modified: nemerle/trunk/ncc/testsuite/positive/default-parms.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/default-parms.n	(original)
+++ nemerle/trunk/ncc/testsuite/positive/default-parms.n	Tue Apr  3 21:30:39 2007
@@ -83,6 +83,13 @@
     hack (y);
   }
 
+  Test(_ = 1us) : void 
+  {
+  }
+  Test(_ = false : bool) : void 
+  {
+  }
+
   public Main () : void
   {
     Foo ("bar");

Modified: nemerle/trunk/ncc/typing/TypedTree.n
==============================================================================
--- nemerle/trunk/ncc/typing/TypedTree.n	(original)
+++ nemerle/trunk/ncc/typing/TypedTree.n	Tue Apr  3 21:30:39 2007
@@ -144,7 +144,14 @@
       foreach (<[ System.ComponentModel.DefaultValueAttribute ($e) ]>
                in modifiers.custom_attrs)
       {
-        match (ConstantFolder.FoldConstants (par.GlobalEnv, e)) {
+        def provided_val = match (ConstantFolder.FoldConstants (par.GlobalEnv, e)) {
+          | <[ $x : $t ]> =>
+            ty = par.BindType (t);
+            x
+          | x => x
+        }
+      
+        match (provided_val) {
           | Parsetree.PExpr.Literal (lit) =>
             when (lit is Literal.Decimal)
               Message.Error (e.loc,
@@ -191,8 +198,7 @@
             
           | _ =>
             Message.Error (e.loc,
-                           $ "invalid default value for parameter `$name': "
-                             "`$e', only literals are supported");
+              $"Incorrect format of parameter `$name' default value. You should use 'paramName = <literal>'");
         }
       }
       



More information about the svn mailing list