[svn] r6641: nemerle/trunk/ncc: testsuite/negative/refout.n typing/Typer.n

malekith svnadmin at nemerle.org
Sun Sep 10 11:55:38 CEST 2006


Log:
Give better error message for local ref/out functions, resolves #752.

Author: malekith
Date: Sun Sep 10 11:55:37 2006
New Revision: 6641

Modified:
   nemerle/trunk/ncc/testsuite/negative/refout.n
   nemerle/trunk/ncc/typing/Typer.n

Modified: nemerle/trunk/ncc/testsuite/negative/refout.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/negative/refout.n	(original)
+++ nemerle/trunk/ncc/testsuite/negative/refout.n	Sun Sep 10 11:55:37 2006
@@ -15,7 +15,7 @@
 
   Main () : void
   {
-    def _g (_ : ref int) { };    // E: nested ref/out type found
+    def _g (_ : ref int) { };    // E: ref/out parameters are not supported in local methods
     mutable x = 3;
     def _ = id (ref x);         // E: in argument #1 \(x\), needed a Normal parameter, got Ref
     ()

Modified: nemerle/trunk/ncc/typing/Typer.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer.n	(original)
+++ nemerle/trunk/ncc/typing/Typer.n	Sun Sep 10 11:55:37 2006
@@ -286,8 +286,6 @@
     {
       foreach (p : Fun_parm in current_fun.parms) {
         Util.locate (p.loc, {
-          when (p.kind != ParmKind.Normal && !IsTopLevel)
-            ReportError (messenger, "ref/out parameters are not supported in local methods");
           def is_mutable =
             p.modifiers.mods %&& NemerleAttributes.Mutable ||
             p.kind != ParmKind.Normal;
@@ -1761,6 +1759,10 @@
         def parms = List.Map (fn.header.parms,
           fun (p : PT.Fun_parm) {
             def name = p.name.GetName ();
+
+            when (p.ty is <[ ref $_ ]> || p.ty is <[ out $_ ]>)
+              ReportError (messenger, "ref/out parameters are not supported in local methods");
+
             def fp =
               Fun_parm (loc = p.loc,
                         name = name.Id,



More information about the svn mailing list