コード例 #1
0
        /// <summary>
        /// Gets a function signature from the given symbol
        /// </summary>
        /// <param name="symbol">Function's symbol</param>
        /// <returns>The symbol broken down into a friendlier representation</returns>
        public static DScriptFunctionSignature FromSymbol(ISymbol symbol)
        {
            var declaration = symbol.GetFirstDeclarationOrDefault();

            if (declaration == null)
            {
                return(null);
            }

            var functionLikeDeclaration = NodeUtilities.IsFunctionLike(declaration);

            if (functionLikeDeclaration != null)
            {
                return(GetSymbolFromFunction(symbol.Name, functionLikeDeclaration.Parameters));
            }

            // check to see if this is a property that's really just a function reference - if so treat it like a function
            // instead of a property
            IPropertySignature propertySignature = declaration.As <IPropertySignature>();

            if (propertySignature == null)
            {
                return(null);
            }

            IFunctionOrConstructorTypeNode functionTypeNode = propertySignature?.Type.As <IFunctionOrConstructorTypeNode>();

            if (functionTypeNode == null)
            {
                return(null);
            }

            return(GetSymbolFromFunction(symbol.Name, functionTypeNode.Parameters));
        }
コード例 #2
0
 private static int FitsOnOneLine(IFunctionOrConstructorTypeNode expression, int remainingSpace)
 {
     return(FitsOnOneLine((IFunctionLikeDeclaration)expression, remainingSpace));
 }