[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