In ilasm/codegen:
authorAnkit Jain <radical@corewars.org>
Tue, 9 May 2006 17:46:56 +0000 (17:46 -0000)
committerAnkit Jain <radical@corewars.org>
Tue, 9 May 2006 17:46:56 +0000 (17:46 -0000)
* MethodDef.cs (MethodDef.AddLabel): Throw exception for duplicate
labels.

In ilasm/errors:
* err-dup-label.il: New.

svn path=/trunk/mcs/; revision=60459

mcs/ilasm/codegen/ChangeLog
mcs/ilasm/codegen/MethodDef.cs
mcs/ilasm/errors/ChangeLog
mcs/ilasm/errors/err-dup-label.il [new file with mode: 0644]

index 322b094d4df2891b17390a5e2a29068c29e9b12d..c85afcd531b9347d0c5cd7167f214628008ab34b 100644 (file)
@@ -1,3 +1,8 @@
+2006-05-09  Ankit Jain  <jankit@novell.com>
+
+       * MethodDef.cs (MethodDef.AddLabel): Throw exception for duplicate
+       labels.
+
 2006-05-09 Ankit Jain  <jankit@novell.com>
 
        * CodeGen.cs (CodeGen.data_list): Change to ..
index 8ed1268534ed1836e9ddf5bf421e11712add53d5..cdb6943e703ea37e3b59eaeaa143626a957e2070 100644 (file)
@@ -558,9 +558,10 @@ namespace Mono.ILASM {
                 {
                         LabelInfo label_info = (LabelInfo) label_table[name];
                         if (label_info != null)
-                                return label_info;
+                                throw new ILAsmException ("Duplicate label: '{0}'" + name);
+
                         label_info = new LabelInfo (name, inst_list.Count);
-                        label_table.Add (name, label_info);
+                        label_table [name] = label_info;
                         return label_info;
                 }
 
index 19b5e9e3da7906c29ee0ecb9aae27f2c7a7d37f9..928561773edebcc70ba9b9aa466cc361c681d635 100644 (file)
@@ -1,3 +1,7 @@
+2006-05-09  Ankit Jain  <jankit@novell.com>
+
+       * err-dup-label.il: New.
+
 2006-05-09  Ankit Jain  <jankit@novell.com>
 
        * err-dup-datalabel.il: New.
diff --git a/mcs/ilasm/errors/err-dup-label.il b/mcs/ilasm/errors/err-dup-label.il
new file mode 100644 (file)
index 0000000..a28087f
--- /dev/null
@@ -0,0 +1,17 @@
+// Test for duplicate labels
+
+.assembly extern mscorlib { }
+
+.class public T {
+
+       .method public static void main ()
+       {
+                .entrypoint
+
+               IL_0001:   ldstr      "Hello"
+               IL_0001:   call       void [mscorlib]System.Console::WriteLine(string)
+               ret
+       }
+
+}
+