Exemplo n.º 1
0
    public override void Resolve(SyntaxTreeNode_Leaf leaf, int numTypeArgs, bool asTypeOnly)
    {
        leaf.ResolvedSymbol = null;

        if (definition != null)
        {
            definition.ResolveMember(leaf, this, numTypeArgs, asTypeOnly);

            if (leaf.ResolvedSymbol != null)
            {
                return;
            }

            if (numTypeArgs == 0 && leaf.ResolvedSymbol == null)
            {
                var typeParams = definition.GetTypeParameters();
                if (typeParams != null)
                {
                    var id = SymbolDefinition.DecodeId(leaf.token.text);
                    for (var i = typeParams.Count; i-- > 0;)
                    {
                        if (typeParams[i].GetName() == id)
                        {
                            leaf.ResolvedSymbol = typeParams[i];
                            return;
                        }
                    }
                }
            }
        }

        base.Resolve(leaf, numTypeArgs, asTypeOnly);
    }