[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