Hi!

What is the correct semantics of "protected internal" when used with
"abstract/override"? Consider the following:

--- a.cs: --------------------------------------------------
public abstract class A
{
        protected internal abstract void Test1();
        public static void Main(string[] args)
        {
        }
}
--- b.cs: --------------------------------------------------
public class B : A
{
        protected override void Test1()
        {
        }
}
------------------------------------------------------------

On Windows it compiles fine:
        csc.exe /t:library a.cs
        csc.exe /r:a.dll /t:library b.cs

On Linux:
        mcs -t:library a.cs
        mcs -t:library -r:a.dll b.cs

it produces an error:

---------
b.cs(3) error CS0507: `B.Test1': can't change the access
modifiers when overriding inherited member `A.Test1'
---------

However, when "B.Test1()" is "protected internal override" it
compiles with mcs but not csc (also CS0507 error)

I guess you have made it exactly the opposite way. Or is it csc's bug?

Jarek


_______________________________________________
Mono-list maillist  -  [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to