Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        internal void EmitToken(
            Cci.ISignature value,
            SyntaxNode syntaxNode,
            DiagnosticBag diagnostics
            )
        {
            uint token = module?.GetFakeSymbolTokenForIL(value, syntaxNode, diagnostics) ?? 0xFFFF;

            this.GetCurrentWriter().WriteUInt32(token);
        }
Esempio n. 3
0
        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);
            }
        }