https://bugzilla.novell.com/show_bug.cgi?id=476266


           Summary: Generics cause NotImplementedException in
                    Mono.CSharp.AnonymousMethodStorey.MutateArrayType
    Classification: Mono
           Product: Mono: Compilers
           Version: 2.4.x
          Platform: x86-64
        OS/Version: Ubuntu
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: C#
        AssignedTo: [email protected]
        ReportedBy: [email protected]
         QAContact: [email protected]
          Found By: ---


User-Agent:       Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5)
Gecko/2008121622 Ubuntu/8.04 (hardy) Firefox/3.0.5

I have a bit of C# code that works with the MS C# compiler, but fails on gmcs
2.4.  See below for a stacktrace (with debug line #s).

This failure occurs during compilation and there is a NotImplementedException
intentially thrown from anonymous.cs, line 578.  Here's the context:

        protected Type MutateArrayType (Type array)
        {
            int rank = array.GetArrayRank ();
            Type element = TypeManager.GetElementType (array);
            if (element.IsArray)
                throw new NotImplementedException (); *** THROWS ***

            if (TypeManager.IsGenericParameter (element)) {
                element = MutateGenericArgument (element);
            } else if (TypeManager.IsGenericType (element)) {
                element = MutateGenericType (element);
            } else {
                return array;
            }

            return element.MakeArrayType (rank);
        }

I can extract an example program that shows this problem, but seeing that
someone put in a NotImplemented, I suspect the maintainer already knows that
this is an area to be addressed.  I'm recording this bug to show that this
missing implementation is causing gmcs to fail for 'real world' C# code that
the MS compiler handles properly.

If you can update this bug with the desired behavior for cases when arrays
contain arrays, I can try my hand at adding this behavior and testing.

Failing that, perhaps you can provide some guidance on when you intend to
support generics.

Reproducible: Always

Steps to Reproduce:
1. Compile code containing generics (see details, if you don't already have a
test case that shows this problem I can make one - but didn't want to spend the
time if you already know about this bug)
2. gmcs throws not implemented
Actual Results:  
NotImplementedException thrown by compiler

Expected Results:  
Compile normally

Stack trace:


Unhandled Exception: System.NotImplementedException: The requested feature is
not implemented.
  at Mono.CSharp.AnonymousMethodStorey.MutateArrayType (System.Type array)
[0x00059] in
/home/khester/development/software/nrt/packaging/pacbio-mono-runtime/sources-2.4-1/mono/mcs/mcs/anonymous.cs:578
 
  at Mono.CSharp.AnonymousMethodStorey.MutateType (System.Type type) [0x00031]
in
/home/khester/development/software/nrt/packaging/pacbio-mono-runtime/sources-2.4-1/mono/mcs/mcs/anonymous.cs:495
 
  at Mono.CSharp.Block.MutateVariables (Mono.CSharp.AnonymousMethodStorey
storey) [0x0002d] in
/home/khester/development/software/nrt/packaging/pacbio-mono-runtime/sources-2.4-1/mono/mcs/mcs/statement.cs:2371
 
  at Mono.CSharp.Block.MutateHoistedGenericType
(Mono.CSharp.AnonymousMethodStorey storey) [0x00000] in
/home/khester/development/software/nrt/packaging/pacbio-mono-runtime/sources-2.4-1/mono/mcs/mcs/statement.cs:2356
 
  at Mono.CSharp.Block.MutateHoistedGenericType
(Mono.CSharp.AnonymousMethodStorey storey) [0x00073] in
/home/khester/development/software/nrt/packaging/pacbio-mono-runtime/sources-2.4-1/mono/mcs/mcs/statement.cs:2364
 
  at Mono.CSharp.AnonymousExpression+AnonymousMethodMethod.Emit () [0x0004f] in
/home/khester/development/software/nrt/packaging/pacbio-mono-runtime/sources-2.4-1/mono/mcs/mcs/anonymous.cs:1258
 
  at Mono.CSharp.TypeContainer.EmitType () [0x001a7] in
/home/khester/development/software/nrt/packaging/pacbio-mono-runtime/sources-2.4-1/mono/mcs/mcs/class.cs:2139
 
  at Mono.CSharp.AnonymousMethodStorey.EmitType () [0x0012d] in
/home/khester/development/software/nrt/packaging/pacbio-mono-runtime/sources-2.4-1/mono/mcs/mcs/anonymous.cs:400
 
  at Mono.CSharp.TypeContainer.EmitType () [0x002b4] in
/home/khester/development/software/nrt/packaging/pacbio-mono-runtime/sources-2.4-1/mono/mcs/mcs/class.cs:2160
 
  at Mono.CSharp.RootContext.EmitCode () [0x00026] in
/home/khester/development/software/nrt/packaging/pacbio-mono-runtime/sources-2.4-1/mono/mcs/mcs/rootcontext.cs:338
 
  at Mono.CSharp.Driver.Compile () [0x00300] in
/home/khester/development/software/nrt/packaging/pacbio-mono-runtime/sources-2.4-1/mono/mcs/mcs/driver.cs:1718
 
  at Mono.CSharp.Driver.Main (System.String[] args) [0x0002f] in
/home/khester/development/software/nrt/packaging/pacbio-mono-runtime/sources-2.4-1/mono/mcs/mcs/driver.cs:302
 
make[1]: *** [bin/Debug//PacBio.Common.Chunk.dll] Error 1

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
_______________________________________________
mono-bugs maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-bugs

Reply via email to