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")); }
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); }
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, [)")); }
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>)")); }
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"))); }
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); }
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); } }