public uint GetFakeSymbolTokenForIL(Cci.ISignature symbol, SyntaxNode syntaxNode, DiagnosticBag diagnostics) { uint token = _referencesInILMap.GetOrAddTokenFor(symbol, out bool added); if (added) { ReferenceDependencyWalker.VisitSignature(symbol, new EmitContext(this, syntaxNode, diagnostics, metadataOnly: false, includePrivateMembers: true)); } return(token); }
internal void EmitToken( Cci.ISignature value, SyntaxNode syntaxNode, DiagnosticBag diagnostics ) { uint token = module?.GetFakeSymbolTokenForIL(value, syntaxNode, diagnostics) ?? 0xFFFF; this.GetCurrentWriter().WriteUInt32(token); }
internal static void VisitSignature(Cci.ISignature signature, EmitContext context) { // Visit parameter types VisitParameters(signature.GetParameters(context), context); // Visit return value type VisitTypeReference(signature.GetType(context), context); VisitCustomModifiers(signature.RefCustomModifiers, context); foreach (var typeModifier in signature.ReturnValueCustomModifiers) { VisitTypeReference(typeModifier.GetModifier(context), context); } }