Bug 323704 (MONO81019) - [GMCS] NRE when partial class derives from generic class with inner class as argument
Summary: [GMCS] NRE when partial class derives from generic class with inner class as ...
Status: RESOLVED MOVED
Alias: MONO81019
Product: Mono: Compilers
Classification: Mono
Component: C# (show other bugs)
Version: 1.2
Hardware: Other Other
: P3 - Medium : Normal
Target Milestone: ---
Assignee: Martin Baulig
QA Contact: Mono Bugs
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-03-03 05:33 UTC by Daniel Hofmann
Modified: 2007-09-15 21:24 UTC (History)
0 users

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas Wiest 2007-09-15 20:29:55 UTC


---- Reported by daniel@hofmannmail.ath.cx 2007-03-02 22:33:09 MST ----

Description of Problem:

The following Code causes gmcs to throw a NullReferenceException

------------------------------------------------------------
public class Foo<K>
{
}

partial class B {
}

partial class B : Foo<B.C> {
  
  public class C {
  }
  
}
--------------------------------------------------------------

Steps to reproduce the problem:
1. Compile the above code snippet with gmcs (to a dll)
"gmcs -target:library file.cs"

Actual Results:
Unhandled Exception: System.NullReferenceException: Object reference not
set to an instance of an object
  at Mono.CSharp.TypeContainer.DefineTypeBuilder () [0x00000]
  at Mono.CSharp.TypeContainer.DefineType () [0x00000]
  at Mono.CSharp.Class.DefineType () [0x00000]
  at Mono.CSharp.TypeContainer.FindMembers_NestedTypes (Int32 modflags,
BindingFlags bf, System.Reflection.MemberFilter filter, System.Object
criteria, System.Collections.ArrayList& members) [0x00000]
  at Mono.CSharp.TypeContainer.FindMembers (MemberTypes mt, BindingFlags
bf, System.Reflection.MemberFilter filter, System.Object criteria) [0x00000]
  at Mono.CSharp.TypeManager.MemberLookup_FindMembers (System.Type t,
MemberTypes mt, BindingFlags bf, System.String name, System.Boolean&
used_cache) [0x00000]
  at Mono.CSharp.TypeManager.RealMemberLookup (System.Type invocation_type,
System.Type qualifier_type, System.Type queried_type, MemberTypes mt,
BindingFlags original_bf, System.String name, IList almost_match) [0x00000]
  at Mono.CSharp.TypeManager.MemberLookup (System.Type invocation_type,
System.Type qualifier_type, System.Type queried_type, MemberTypes mt,
BindingFlags original_bf, System.String name, IList almost_match) [0x00000]
  at Mono.CSharp.Expression.MemberLookup (System.Type container_type,
System.Type qualifier_type, System.Type queried_type, System.String name,
MemberTypes mt, BindingFlags bf, Location loc) [0x00000]
  at Mono.CSharp.MemberAccess.ResolveNamespaceOrType (IResolveContext rc,
Boolean silent) [0x00000]
  at Mono.CSharp.MemberAccess.ResolveAsTypeStep (IResolveContext ec,
Boolean silent) [0x00000]
  at Mono.CSharp.Expression.ResolveAsBaseTerminal (IResolveContext ec,
Boolean silent) [0x00000]
  at Mono.CSharp.Expression.ResolveAsTypeTerminal (IResolveContext ec,
Boolean silent) [0x00000]
  at Mono.CSharp.TypeArguments.Resolve (IResolveContext ec) [0x00000]
  at Mono.CSharp.ConstructedType.DoResolveType (IResolveContext ec) [0x00000]
  at Mono.CSharp.ConstructedType.ResolveConstructedType (IResolveContext
ec) [0x00000]
  at Mono.CSharp.ConstructedType.DoResolveAsTypeStep (IResolveContext ec)
[0x00000]
  at Mono.CSharp.TypeExpr.ResolveAsTypeStep (IResolveContext ec, Boolean
silent) [0x00000]
  at Mono.CSharp.SimpleName.ResolveAsTypeStep (IResolveContext ec, Boolean
silent) [0x00000]
  at Mono.CSharp.Expression.ResolveAsBaseTerminal (IResolveContext ec,
Boolean silent) [0x00000]
  at Mono.CSharp.TypeContainer.GetNormalBases (Mono.CSharp.TypeExpr&
base_class) [0x00000]
  at Mono.CSharp.TypeContainer.GetClassBases (Mono.CSharp.TypeExpr&
base_class) [0x00000]
  at Mono.CSharp.Class.GetClassBases (Mono.CSharp.TypeExpr& base_class)
[0x00000]
  at Mono.CSharp.TypeContainer.GetNormalPartialBases (Mono.CSharp.TypeExpr&
base_class) [0x00000]
  at Mono.CSharp.TypeContainer.DefineTypeBuilder () [0x00000]
  at Mono.CSharp.TypeContainer.DefineType () [0x00000]
  at Mono.CSharp.Class.DefineType () [0x00000]
  at Mono.CSharp.RootContext.ResolveTree () [0x00000]
  at Mono.CSharp.Driver.MainDriver (System.String[] args) [0x00000]
  at Mono.CSharp.Driver.Main (System.String[] args) [0x00000]


Expected Results:
Should compile to a dll and throw no exception.

How often does this happen? 
Always.

Additional Information:
This bug seems to be related to:
https://bugzilla.novell.com/show_bug.cgi?id=MONO77963
(but the example given there does compile with my version of gmcs)

>gmcs --version
Mono C# compiler version 1.2.2.1



---- Additional Comments From martin@ximian.com 2007-03-20 18:53:44 MST ----

Added gtest-320.cs.

*** This bug has been marked as a duplicate of https://bugzilla.novell.com/show_bug.cgi?id=MONO77963 ***


Unknown operating system unknown. Setting to default OS "Other".
This bug was marked DUPLICATE in the database it was moved from.
    Changing resolution to "MOVED"