public void Test3()
        {
            var assembly = MetadataTestHelpers.GetSymbolForReference(Net40.mscorlib);
            var module0  = assembly.Modules[0];
            var globalNS = module0.GlobalNamespace;

            Assert.Same(globalNS.ContainingAssembly, assembly);
            Assert.Same(globalNS.ContainingSymbol, module0);
            Assert.True(globalNS.IsGlobalNamespace);

            var extent = globalNS.Extent;

            Assert.Equal(NamespaceKind.Module, extent.Kind);
            Assert.Same(extent.Module, module0);
            Assert.Equal(1, globalNS.ConstituentNamespaces.Length);
            Assert.Same(globalNS, globalNS.ConstituentNamespaces[0]);

            var systemNS = (NamespaceSymbol)globalNS.GetMembers("System").Single();

            Assert.Same(systemNS.ContainingAssembly, assembly);
            Assert.Same(systemNS.ContainingSymbol, globalNS);
            Assert.False(systemNS.IsGlobalNamespace);

            extent = systemNS.Extent;

            Assert.Equal(NamespaceKind.Module, extent.Kind);
            Assert.Same(extent.Module, module0);
            Assert.Equal(1, systemNS.ConstituentNamespaces.Length);
            Assert.Same(systemNS, systemNS.ConstituentNamespaces[0]);

            var collectionsNS = (NamespaceSymbol)systemNS.GetMembers("Collections").Single();

            Assert.Same(collectionsNS.ContainingAssembly, assembly);
            Assert.Same(collectionsNS.ContainingSymbol, systemNS);
            Assert.False(collectionsNS.IsGlobalNamespace);

            extent = collectionsNS.Extent;

            Assert.Equal(NamespaceKind.Module, extent.Kind);
            Assert.Same(extent.Module, module0);
            Assert.Equal(1, collectionsNS.ConstituentNamespaces.Length);
            Assert.Same(collectionsNS, collectionsNS.ConstituentNamespaces[0]);
        }
Ejemplo n.º 2
0
        public void Test1()
        {
            var assembly = MetadataTestHelpers.GetSymbolForReference(Net40.mscorlib);

            TestBaseTypeResolutionHelper1(assembly);

            var assemblies = MetadataTestHelpers.GetSymbolsForReferences(
                mrefs: new[]
            {
                TestReferences.SymbolsTests.MDTestLib1,
                TestReferences.SymbolsTests.MDTestLib2,
                Net40.mscorlib
            }
                );

            TestBaseTypeResolutionHelper2(assemblies);

            assemblies = MetadataTestHelpers.GetSymbolsForReferences(
                mrefs: new[]
            {
                TestReferences.SymbolsTests.MDTestLib1,
                TestReferences.SymbolsTests.MDTestLib2
            }
                );

            // TestBaseTypeResolutionHelper3(assemblies); // TODO(alekseyt): this test is not valid.  See email of 7/23/2010 for explanation.

            assemblies = MetadataTestHelpers.GetSymbolsForReferences(
                mrefs: new[]
            {
                TestReferences.SymbolsTests.MultiModule.Assembly,
                TestReferences.SymbolsTests.MultiModule.Consumer
            }
                );

            TestBaseTypeResolutionHelper4(assemblies);
        }
Ejemplo n.º 3
0
        public void TestExplicitImplementationSimple()
        {
            var assembly = MetadataTestHelpers.GetSymbolForReference(
                TestReferences.SymbolsTests.ExplicitInterfaceImplementation.Properties.CSharp);

            var globalNamespace = assembly.GlobalNamespace;

            var @interface = (NamedTypeSymbol)globalNamespace.GetTypeMembers("Interface").Single();

            Assert.Equal(TypeKind.Interface, @interface.TypeKind);

            var interfaceProperty = (PropertySymbol)@interface.GetMembers("Property").Single();

            var @class = (NamedTypeSymbol)globalNamespace.GetTypeMembers("Class").Single();

            Assert.Equal(TypeKind.Class, @class.TypeKind);
            Assert.True(@class.Interfaces.Contains(@interface));

            var classProperty = (PropertySymbol)@class.GetMembers("Interface.Property").Single();

            var explicitImpl = classProperty.ExplicitInterfaceImplementations.Single();

            Assert.Equal(interfaceProperty, explicitImpl);
        }
Ejemplo n.º 4
0
        public void Test1()
        {
            var assembly = MetadataTestHelpers.GetSymbolForReference(TestReferences.NetFx.v4_0_21006.mscorlib);

            TestTypeKindHelper(assembly);
        }
Ejemplo n.º 5
0
        public void TestMixedAccessorModifiers()
        {
            var assembly = MetadataTestHelpers.GetSymbolForReference(TestReferences.SymbolsTests.Properties);

            var globalNamespace = assembly.GlobalNamespace;

            var type = globalNamespace.GetMember <NamedTypeSymbol>("AccessorModifierMismatch");

            const VirtualnessModifiers @none     = VirtualnessModifiers.None;
            const VirtualnessModifiers @abstract = VirtualnessModifiers.Abstract;
            const VirtualnessModifiers @virtual  = VirtualnessModifiers.Virtual;
            const VirtualnessModifiers @override = VirtualnessModifiers.Override;
            const VirtualnessModifiers @sealed   = VirtualnessModifiers.Sealed;

            VirtualnessModifiers[] modList = new[]
            {
                @none,
                @abstract,
                @virtual,
                @override,
                @sealed,
            };

            int length = 1 + modList.Cast <int>().Max();

            VirtualnessModifiers[,] expected = new VirtualnessModifiers[length, length];

            expected[(int)@none, (int)@none]     = @none;
            expected[(int)@none, (int)@abstract] = @abstract;
            expected[(int)@none, (int)@virtual]  = @virtual;
            expected[(int)@none, (int)@override] = @override;
            expected[(int)@none, (int)@sealed]   = @override; //not both sealed

            expected[(int)@abstract, (int)@none]     = @abstract;
            expected[(int)@abstract, (int)@abstract] = @abstract;
            expected[(int)@abstract, (int)@virtual]  = @abstract;
            expected[(int)@abstract, (int)@override] = @abstract | @override;
            expected[(int)@abstract, (int)@sealed]   = @abstract | @override; //not both sealed

            expected[(int)@virtual, (int)@none]     = @virtual;
            expected[(int)@virtual, (int)@abstract] = @abstract;
            expected[(int)@virtual, (int)@virtual]  = @virtual;
            expected[(int)@virtual, (int)@override] = @override;
            expected[(int)@virtual, (int)@sealed]   = @override; //not both sealed

            expected[(int)@override, (int)@none]     = @override;
            expected[(int)@override, (int)@abstract] = @override | @abstract;
            expected[(int)@override, (int)@virtual]  = @override;
            expected[(int)@override, (int)@override] = @override;
            expected[(int)@override, (int)@sealed]   = @override;           //not both sealed

            expected[(int)@sealed, (int)@none]     = @override;             //not both sealed
            expected[(int)@sealed, (int)@abstract] = @abstract | @override; //not both sealed
            expected[(int)@sealed, (int)@virtual]  = @override;             //not both sealed
            expected[(int)@sealed, (int)@override] = @override;             //not both sealed
            expected[(int)@sealed, (int)@sealed]   = @sealed;

            // Table should be symmetrical.
            for (int i = 0; i < length; i++)
            {
                for (int j = 0; j < length; j++)
                {
                    Assert.Equal(expected[i, j], expected[j, i]);
                }
            }

            foreach (var mod1 in modList)
            {
                foreach (var mod2 in modList)
                {
                    var property = type.GetMember <PropertySymbol>(mod1.ToString() + mod2.ToString());
                    var getter   = property.GetMethod;
                    var setter   = property.SetMethod;

                    Assert.Equal(mod1, GetVirtualnessModifiers(getter));
                    Assert.Equal(mod2, GetVirtualnessModifiers(setter));

                    Assert.Equal(expected[(int)mod1, (int)mod2], GetVirtualnessModifiers(property));
                }
            }
        }
        public void Test1()
        {
            var assembly = MetadataTestHelpers.GetSymbolForReference(TestReferences.NetFx.v4_0_21006.mscorlib);
            var module0  = assembly.Modules[0];

            var objectType = module0.GlobalNamespace.GetMembers("System").
                             OfType <NamespaceSymbol>().Single().
                             GetTypeMembers("Object").Single();

            Assert.Equal(0, objectType.Arity);
            Assert.Equal(0, objectType.TypeParameters.Length);
            Assert.Equal(0, objectType.TypeArguments.Length);

            assembly = MetadataTestHelpers.GetSymbolForReference(TestReferences.SymbolsTests.MDTestLib1);
            module0  = assembly.Modules[0];

            var varC1 = module0.GlobalNamespace.GetTypeMembers("C1").Single();

            Assert.Equal(1, varC1.Arity);
            Assert.Equal(1, varC1.TypeParameters.Length);
            Assert.Equal(1, varC1.TypeArguments.Length);

            var varC1_T = varC1.TypeParameters[0];

            Assert.Equal(varC1_T, varC1.TypeArguments[0]);

            Assert.NotNull(varC1_T.EffectiveBaseClassNoUseSiteDiagnostics);
            Assert.Equal(assembly, varC1_T.ContainingAssembly);
            Assert.Equal(module0.GlobalNamespace, varC1_T.ContainingNamespace); // Null(C1_T.ContainingNamespace)
            Assert.Equal(varC1, varC1_T.ContainingSymbol);
            Assert.Equal(varC1, varC1_T.ContainingType);
            Assert.Equal(Accessibility.NotApplicable, varC1_T.DeclaredAccessibility);
            Assert.Equal("C1_T", varC1_T.Name);
            Assert.Equal("C1_T", varC1_T.ToTestDisplayString());
            Assert.Equal(0, varC1_T.GetMembers().Length);
            Assert.Equal(0, varC1_T.GetMembers("foo").Length);
            Assert.Equal(0, varC1_T.GetTypeMembers().Length);
            Assert.Equal(0, varC1_T.GetTypeMembers("foo").Length);
            Assert.Equal(0, varC1_T.GetTypeMembers("foo", 1).Length);
            Assert.False(varC1_T.HasConstructorConstraint);
            Assert.False(varC1_T.HasReferenceTypeConstraint);
            Assert.False(varC1_T.HasValueTypeConstraint);
            Assert.Equal(0, varC1_T.EffectiveInterfacesNoUseSiteDiagnostics.Length);
            Assert.True(varC1_T.IsDefinition);
            Assert.False(varC1_T.IsAbstract);
            Assert.False(varC1_T.IsNamespace);
            Assert.False(varC1_T.IsSealed);
            Assert.False(varC1_T.IsVirtual);
            Assert.False(varC1_T.IsOverride);
            Assert.False(varC1_T.IsStatic);
            Assert.True(varC1_T.IsType);
            Assert.Equal(SymbolKind.TypeParameter, varC1_T.Kind);
            Assert.Equal(0, varC1_T.Ordinal);
            Assert.Equal(varC1_T, varC1_T.OriginalDefinition);
            Assert.Equal(TypeKind.TypeParameter, varC1_T.TypeKind);
            Assert.Equal(VarianceKind.None, varC1_T.Variance);
            Assert.Same(module0, varC1_T.Locations.Single().MetadataModule);
            Assert.Equal(0, varC1_T.ConstraintTypes.Length);

            var varC2 = varC1.GetTypeMembers("C2").Single();

            Assert.Equal(1, varC2.Arity);
            Assert.Equal(1, varC2.TypeParameters.Length);
            Assert.Equal(1, varC2.TypeArguments.Length);

            var varC2_T = varC2.TypeParameters[0];

            Assert.Equal("C2_T", varC2_T.Name);
            Assert.Equal(varC2, varC2_T.ContainingType);

            var varC3 = varC1.GetTypeMembers("C3").Single();

            Assert.Equal(0, varC3.Arity);
            Assert.Equal(0, varC3.TypeParameters.Length);
            Assert.Equal(0, varC3.TypeArguments.Length);

            var varC4 = varC3.GetTypeMembers("C4").Single();

            Assert.Equal(1, varC4.Arity);
            Assert.Equal(1, varC4.TypeParameters.Length);
            Assert.Equal(1, varC4.TypeArguments.Length);

            var varC4_T = varC4.TypeParameters[0];

            Assert.Equal("C4_T", varC4_T.Name);
            Assert.Equal(varC4, varC4_T.ContainingType);

            var varTC2 = module0.GlobalNamespace.GetTypeMembers("TC2").Single();

            Assert.Equal(2, varTC2.Arity);
            Assert.Equal(2, varTC2.TypeParameters.Length);
            Assert.Equal(2, varTC2.TypeArguments.Length);

            var varTC2_T1 = varTC2.TypeParameters[0];
            var varTC2_T2 = varTC2.TypeParameters[1];

            Assert.Equal(varTC2_T1, varTC2.TypeArguments[0]);
            Assert.Equal(varTC2_T2, varTC2.TypeArguments[1]);

            Assert.Equal("TC2_T1", varTC2_T1.Name);
            Assert.Equal(varTC2, varTC2_T1.ContainingType);
            Assert.Equal(0, varTC2_T1.Ordinal);

            Assert.Equal("TC2_T2", varTC2_T2.Name);
            Assert.Equal(varTC2, varTC2_T2.ContainingType);
            Assert.Equal(1, varTC2_T2.Ordinal);

            var varC100 = module0.GlobalNamespace.GetTypeMembers("C100").Single();
            var varT    = varC100.TypeParameters[0];

            Assert.False(varT.HasConstructorConstraint);
            Assert.False(varT.HasReferenceTypeConstraint);
            Assert.False(varT.HasValueTypeConstraint);
            Assert.Equal(VarianceKind.Out, varT.Variance);

            var varC101 = module0.GlobalNamespace.GetTypeMembers("C101").Single();

            varT = varC101.TypeParameters[0];
            Assert.False(varT.HasConstructorConstraint);
            Assert.False(varT.HasReferenceTypeConstraint);
            Assert.False(varT.HasValueTypeConstraint);
            Assert.Equal(VarianceKind.In, varT.Variance);

            var varC102 = module0.GlobalNamespace.GetTypeMembers("C102").Single();

            varT = varC102.TypeParameters[0];
            Assert.True(varT.HasConstructorConstraint);
            Assert.False(varT.HasReferenceTypeConstraint);
            Assert.False(varT.HasValueTypeConstraint);
            Assert.Equal(VarianceKind.None, varT.Variance);
            Assert.Equal(0, varT.ConstraintTypes.Length);

            var varC103 = module0.GlobalNamespace.GetTypeMembers("C103").Single();

            varT = varC103.TypeParameters[0];
            Assert.False(varT.HasConstructorConstraint);
            Assert.True(varT.HasReferenceTypeConstraint);
            Assert.False(varT.HasValueTypeConstraint);
            Assert.Equal(VarianceKind.None, varT.Variance);
            Assert.Equal(0, varT.ConstraintTypes.Length);

            var varC104 = module0.GlobalNamespace.GetTypeMembers("C104").Single();

            varT = varC104.TypeParameters[0];
            Assert.False(varT.HasConstructorConstraint);
            Assert.False(varT.HasReferenceTypeConstraint);
            Assert.True(varT.HasValueTypeConstraint);
            Assert.Equal(VarianceKind.None, varT.Variance);
            Assert.Equal(0, varT.ConstraintTypes.Length);

            var varC105 = module0.GlobalNamespace.GetTypeMembers("C105").Single();

            varT = varC105.TypeParameters[0];
            Assert.True(varT.HasConstructorConstraint);
            Assert.True(varT.HasReferenceTypeConstraint);
            Assert.False(varT.HasValueTypeConstraint);
            Assert.Equal(VarianceKind.None, varT.Variance);

            var varC106 = module0.GlobalNamespace.GetTypeMembers("C106").Single();

            varT = varC106.TypeParameters[0];
            Assert.True(varT.HasConstructorConstraint);
            Assert.True(varT.HasReferenceTypeConstraint);
            Assert.False(varT.HasValueTypeConstraint);
            Assert.Equal(VarianceKind.Out, varT.Variance);

            var varI101 = module0.GlobalNamespace.GetTypeMembers("I101").Single();
            var varI102 = module0.GlobalNamespace.GetTypeMembers("I102").Single();

            var varC201 = module0.GlobalNamespace.GetTypeMembers("C201").Single();

            varT = varC201.TypeParameters[0];
            Assert.Equal(1, varT.ConstraintTypes.Length);
            Assert.Same(varI101, varT.ConstraintTypes.ElementAt(0));

            var localC202 = module0.GlobalNamespace.GetTypeMembers("C202").Single();

            varT = localC202.TypeParameters[0];
            Assert.Equal(2, varT.ConstraintTypes.Length);
            Assert.Same(varI101, varT.ConstraintTypes.ElementAt(0));
            Assert.Same(varI102, varT.ConstraintTypes.ElementAt(1));
        }
Ejemplo n.º 7
0
        public void Test1()
        {
            var assembly = MetadataTestHelpers.GetSymbolForReference(TestReferences.NetFx.v4_0_21006.mscorlib);

            TestTypeAccessibilityHelper(assembly.Modules[0]);
        }
Ejemplo n.º 8
0
        public void Test1()
        {
            var assembly = MetadataTestHelpers.GetSymbolForReference(Net40.mscorlib);

            TestTypeKindHelper(assembly);
        }