public void Global()
 {
     Assert.Null(MemberSignatureParser.Parse("global:C.F"));
     Assert.Null(MemberSignatureParser.Parse("global:"));
     Assert.Null(MemberSignatureParser.Parse(":C.F"));
     Assert.Null(MemberSignatureParser.Parse("global::C.F"));
     Assert.Null(MemberSignatureParser.Parse("global::"));
     Assert.Null(MemberSignatureParser.Parse("::C.F"));
 }
Esempio n. 2
0
        private static void Resolve(
            Process process,
            Resolver resolver,
            string str,
            params string[] expectedSignatures
            )
        {
            var signature = MemberSignatureParser.Parse(str);

            Assert.NotNull(signature);
            Resolve(process, resolver, signature, expectedSignatures);
        }
Esempio n. 3
0
 public void EscapedNames()
 {
     VerifySignature("[F3]", SignatureNameOnly(Name("F3")));
     VerifySignature("[_]", SignatureNameOnly(Name("_")));
     VerifySignature("[Integer]", SignatureNameOnly(Name("Integer")));
     VerifySignature(
         "A.B.[Integer]",
         SignatureNameOnly(Qualified(Qualified(Name("A"), "B"), "Integer"))
         );
     VerifySignature("F([Integer])", Signature(Name("F"), Identifier("Integer")));
     VerifySignature(
         "F(System.[Integer])",
         Signature(Name("F"), Qualified(Identifier("System"), "Integer"))
         );
     VerifySignature(
         "A(Of [Object]).B(Of [Integer]).F(Of [Of])",
         SignatureNameOnly(
             Generic(
                 Qualified(
                     Generic(Qualified(Generic(Name("A"), "Object"), "B"), "Integer"),
                     "F"
                     ),
                 "Of"
                 )
             )
         );
     VerifySignature(
         "F(C(Of Integer, [Date]))",
         Signature(
             Name("F"),
             Generic(Identifier("C"), Qualified("System", "Int32"), Identifier("Date"))
             )
         );
     Assert.Null(MemberSignatureParser.Parse("@"));
     Assert.Null(MemberSignatureParser.Parse("@Integer"));
     Assert.Null(MemberSignatureParser.Parse("["));
     Assert.Null(MemberSignatureParser.Parse("[]"));
     Assert.Null(MemberSignatureParser.Parse("[3"));
     Assert.Null(MemberSignatureParser.Parse("[3]"));
     Assert.Null(MemberSignatureParser.Parse("[[F"));
     Assert.Null(MemberSignatureParser.Parse("[F"));
     Assert.Null(MemberSignatureParser.Parse("[F["));
     Assert.Null(MemberSignatureParser.Parse("F]"));
     Assert.Null(MemberSignatureParser.Parse("[(T)"));
     Assert.Null(MemberSignatureParser.Parse("[Object]]"));
     Assert.Null(MemberSignatureParser.Parse("[Object+]"));
     Assert.Null(MemberSignatureParser.Parse("[Object ]"));
     Assert.Null(MemberSignatureParser.Parse("[.F"));
     Assert.Null(MemberSignatureParser.Parse("[()"));
     Assert.Null(MemberSignatureParser.Parse("F([)"));
     Assert.Null(MemberSignatureParser.Parse("F(A, [)"));
 }
Esempio n. 4
0
 public void ByRef()
 {
     VerifySignature(
         "F(ref A, out B)",
         Signature(Name("F"), Identifier("A"), Identifier("B"))
         );
     Assert.Null(MemberSignatureParser.Parse("F(ref out C)"));
     Assert.Null(MemberSignatureParser.Parse("F(ref)"));
     Assert.Null(MemberSignatureParser.Parse("F<out>"));
     Assert.Null(MemberSignatureParser.Parse("F<out C>"));
     Assert.Null(MemberSignatureParser.Parse("F(C<ref>)"));
     Assert.Null(MemberSignatureParser.Parse("F(C<ref C>)"));
 }
Esempio n. 5
0
 public void ByRef()
 {
     VerifySignature(
         "F(ByVal A, ByRef B)",
         Signature(Name("F"), Identifier("A"), Identifier("B"))
         );
     Assert.Null(MemberSignatureParser.Parse("F(ByVal, B)"));
     Assert.Null(MemberSignatureParser.Parse("F(A, ByRef)"));
     Assert.Null(MemberSignatureParser.Parse("F(ByVal ByRef A, B)"));
     Assert.Null(MemberSignatureParser.Parse("F(A, ByRef ByVal B)"));
     Assert.Null(MemberSignatureParser.Parse("F(ByRef ByRef A)"));
     Assert.Null(MemberSignatureParser.Parse("F(A, ByVal ByVal B)"));
     Assert.Null(MemberSignatureParser.Parse("F(Of ByVal)"));
     Assert.Null(MemberSignatureParser.Parse("F(Of ByRef C)"));
     Assert.Null(MemberSignatureParser.Parse("F(C(Of ByRef))"));
     Assert.Null(MemberSignatureParser.Parse("F(C(Of ByRef C))"));
 }
 public void SpecialTypes_Names()
 {
     // Method name only.
     Assert.Null(MemberSignatureParser.Parse("Integer"));
     Assert.Null(MemberSignatureParser.Parse("paramarray"));
     VerifySignature("[Integer]",
                     SignatureNameOnly(
                         Name("Integer")));
     // Type and method name.
     VerifySignature("[Object].Integer",
                     SignatureNameOnly(
                         Qualified(
                             Name("Object"),
                             "Integer")));
     // Type parameters.
     VerifySignature("F(Of Void)",
                     SignatureNameOnly(
                         Generic(Name("F"),
                                 "Void")));
     Assert.Null(MemberSignatureParser.Parse("F(Of boolean)"));
     Assert.Null(MemberSignatureParser.Parse("F(Of char)"));
     Assert.Null(MemberSignatureParser.Parse("F(Of SBYTE)"));
     Assert.Null(MemberSignatureParser.Parse("F(Of BYTE)"));
     Assert.Null(MemberSignatureParser.Parse("F(Of Short)"));
     Assert.Null(MemberSignatureParser.Parse("F(Of UShort)"));
     VerifySignature("F(Of [Boolean], [Char], [sbyte], [byte], [SHORT], [USHORT], [Integer], [UInteger], [Long], [ULong], [Single], [Double], [String], [Object], [Decimal], [Date])()",
                     Signature(
                         Generic(Name("F"),
                                 "Boolean",
                                 "Char",
                                 "sbyte",
                                 "byte",
                                 "SHORT",
                                 "USHORT",
                                 "Integer",
                                 "UInteger",
                                 "Long",
                                 "ULong",
                                 "Single",
                                 "Double",
                                 "String",
                                 "Object",
                                 "Decimal",
                                 "Date")));
 }
Esempio n. 7
0
 public void EscapedNames()
 {
     VerifySignature("@F", SignatureNameOnly(Name("F")));
     VerifySignature("@_", SignatureNameOnly(Name("_")));
     VerifySignature("@int", SignatureNameOnly(Name("int")));
     VerifySignature(
         "A.B.@int",
         SignatureNameOnly(Qualified(Qualified(Name("A"), "B"), "int"))
         );
     VerifySignature("F(@int)", Signature(Name("F"), Identifier("int")));
     VerifySignature(
         "F(System.@int)",
         Signature(Name("F"), Qualified(Identifier("System"), "int"))
         );
     VerifySignature(
         "A<@object>.B<@int>.F<@void>",
         SignatureNameOnly(
             Generic(
                 Qualified(
                     Generic(Qualified(Generic(Name("A"), "object"), "B"), "int"),
                     "F"
                     ),
                 "void"
                 )
             )
         );
     VerifySignature(
         "F(C<int, @void>)",
         Signature(
             Name("F"),
             Generic(Identifier("C"), Qualified("System", "Int32"), Identifier("void"))
             )
         );
     Assert.Null(MemberSignatureParser.Parse("@"));
     Assert.Null(MemberSignatureParser.Parse("@1"));
     Assert.Null(MemberSignatureParser.Parse("@@F"));
     Assert.Null(MemberSignatureParser.Parse("@F@"));
     Assert.Null(MemberSignatureParser.Parse("@<T>"));
     Assert.Null(MemberSignatureParser.Parse("@.F"));
     Assert.Null(MemberSignatureParser.Parse("@()"));
     Assert.Null(MemberSignatureParser.Parse("F(@)"));
     Assert.Null(MemberSignatureParser.Parse("F(A, @)"));
     Assert.Null(MemberSignatureParser.Parse("F<@>"));
     Assert.Null(MemberSignatureParser.Parse("F<T, @>"));
 }
 public void SpecialTypes_Names()
 {
     // Method name only.
     Assert.Null(MemberSignatureParser.Parse("int"));
     Assert.Null(MemberSignatureParser.Parse("params"));
     VerifySignature("@int",
                     SignatureNameOnly(
                         Name("int")));
     // Type and method name.
     Assert.Null(MemberSignatureParser.Parse("@object.int"));
     Assert.Null(MemberSignatureParser.Parse("@public.private"));
     VerifySignature("@object.@int",
                     SignatureNameOnly(
                         Qualified(
                             Name("object"),
                             "int")));
     // Type parameters.
     Assert.Null(MemberSignatureParser.Parse("F<void>"));
     Assert.Null(MemberSignatureParser.Parse("F<bool>"));
     Assert.Null(MemberSignatureParser.Parse("F<char>"));
     Assert.Null(MemberSignatureParser.Parse("F<sbyte>"));
     Assert.Null(MemberSignatureParser.Parse("F<byte>"));
     Assert.Null(MemberSignatureParser.Parse("F<short>"));
     Assert.Null(MemberSignatureParser.Parse("F<ushort>"));
     VerifySignature("F<@void, @bool, @char, @sbyte, @byte, @short, @ushort, @int, @uint, @long, @ulong, @float, @double, @string, @object, @decimal>()",
                     Signature(
                         Generic(Name("F"),
                                 "void",
                                 "bool",
                                 "char",
                                 "sbyte",
                                 "byte",
                                 "short",
                                 "ushort",
                                 "int",
                                 "uint",
                                 "long",
                                 "ulong",
                                 "float",
                                 "double",
                                 "string",
                                 "object",
                                 "decimal")));
 }
        private static void VerifySignature(string str, RequestSignature expectedSignature)
        {
            var actualSignature = MemberSignatureParser.Parse(str);

            VerifySignature(actualSignature, expectedSignature);
        }
Esempio n. 10
0
        public void LanguageId()
        {
            var source =
                @"class C
{
    static void F() { }
}";
            var bytes            = CreateCompilation(source).EmitToArray();
            var resolver         = Resolver.VisualBasicResolver;
            var unknownId        = Guid.Parse("F02FB87B-64EC-486E-B039-D4A97F48858C");
            var csharpLanguageId = Guid.Parse("3f5162f8-07c6-11d3-9053-00c04fa302a1");
            var vbLanguageId     = Guid.Parse("3a12d0b8-c26c-11d0-b442-00a0244a1dd2");
            var cppLanguageId    = Guid.Parse("3a12d0b7-c26c-11d0-b442-00a0244a1dd2");

            // Module loaded before requests.
            var module = new Module(bytes);

            using (var process = new Process(module))
            {
                var requestDefaultId = new Request(
                    null,
                    MemberSignatureParser.Parse("F"),
                    Guid.Empty
                    );
                var requestUnknown             = new Request(null, MemberSignatureParser.Parse("F"), unknownId);
                var requestCausalityBreakpoint = new Request(
                    null,
                    MemberSignatureParser.Parse("F"),
                    DkmLanguageId.CausalityBreakpoint
                    );
                var requestMethodId = new Request(
                    null,
                    MemberSignatureParser.Parse("F"),
                    DkmLanguageId.MethodId
                    );
                var requestCSharp = new Request(
                    null,
                    MemberSignatureParser.Parse("F"),
                    csharpLanguageId
                    );
                var requestVB  = new Request(null, MemberSignatureParser.Parse("F"), vbLanguageId);
                var requestCPP = new Request(null, MemberSignatureParser.Parse("F"), cppLanguageId);
                resolver.EnableResolution(process, requestDefaultId);
                VerifySignatures(requestDefaultId, "C.F()");
                resolver.EnableResolution(process, requestUnknown);
                VerifySignatures(requestUnknown);
                resolver.EnableResolution(process, requestCausalityBreakpoint);
                VerifySignatures(requestCausalityBreakpoint, "C.F()");
                resolver.EnableResolution(process, requestMethodId);
                VerifySignatures(requestMethodId);
                resolver.EnableResolution(process, requestCSharp);
                VerifySignatures(requestCSharp);
                resolver.EnableResolution(process, requestVB);
                VerifySignatures(requestVB, "C.F()");
                resolver.EnableResolution(process, requestCPP);
                VerifySignatures(requestCPP);
            }

            // Module loaded after requests.
            module = new Module(bytes);
            using (var process = new Process())
            {
                var requestDefaultId = new Request(
                    null,
                    MemberSignatureParser.Parse("F"),
                    Guid.Empty
                    );
                var requestUnknown             = new Request(null, MemberSignatureParser.Parse("F"), unknownId);
                var requestCausalityBreakpoint = new Request(
                    null,
                    MemberSignatureParser.Parse("F"),
                    DkmLanguageId.CausalityBreakpoint
                    );
                var requestMethodId = new Request(
                    null,
                    MemberSignatureParser.Parse("F"),
                    DkmLanguageId.MethodId
                    );
                var requestCSharp = new Request(
                    null,
                    MemberSignatureParser.Parse("F"),
                    csharpLanguageId
                    );
                var requestVB  = new Request(null, MemberSignatureParser.Parse("F"), vbLanguageId);
                var requestCPP = new Request(null, MemberSignatureParser.Parse("F"), cppLanguageId);
                resolver.EnableResolution(process, requestCPP);
                resolver.EnableResolution(process, requestVB);
                resolver.EnableResolution(process, requestCSharp);
                resolver.EnableResolution(process, requestMethodId);
                resolver.EnableResolution(process, requestCausalityBreakpoint);
                resolver.EnableResolution(process, requestUnknown);
                resolver.EnableResolution(process, requestDefaultId);
                process.AddModule(module);
                resolver.OnModuleLoad(process, module);
                VerifySignatures(requestDefaultId, "C.F()");
                VerifySignatures(requestUnknown);
                VerifySignatures(requestCausalityBreakpoint, "C.F()");
                VerifySignatures(requestMethodId);
                VerifySignatures(requestCSharp);
                VerifySignatures(requestVB, "C.F()");
                VerifySignatures(requestCPP);
            }
        }