[m-rev.] diff: fix C# class name same as enclosing class

Peter Wang novalazy at gmail.com
Mon Nov 29 11:24:54 AEDT 2010


Branches: main

In the C# backend, mangle the class name corresponding to a du type
constructor if it would be the same as the enclosing class.

compiler/ml_type_gen.m:
        As above.

diff --git a/compiler/ml_type_gen.m b/compiler/ml_type_gen.m
index d6c90be..e2c9b87 100644
--- a/compiler/ml_type_gen.m
+++ b/compiler/ml_type_gen.m
@@ -1115,11 +1115,13 @@ ml_gen_du_ctor_name_unqual_type(CompilationTarget, UnqualTypeName, TypeArity,
         Name, Arity) = CtorName :-
     UnqualName = unqualify_name(Name),
     (
-        CompilationTarget = target_java,
+        ( CompilationTarget = target_java
+        ; CompilationTarget = target_csharp
+        ),
         UnqualName = UnqualTypeName,
         Arity = TypeArity
     ->
-        % In Java we must not generate a class with the same name as its
+        % In Java and C# we must not generate a class with the same name as its
         % enclosing class.  We add the prefix to avoid that situation arising.
         % (A user may name another functor of the same type with "mr_" to
         % trigger the problem.)

--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to:       mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions:          mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------



More information about the reviews mailing list