/// <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)); }
private static int FitsOnOneLine(IFunctionOrConstructorTypeNode expression, int remainingSpace) { return(FitsOnOneLine((IFunctionLikeDeclaration)expression, remainingSpace)); }