private static INonMemberDeclaration BuildNonMemberDeclaration(INonMemberEntityDeclarationSyntax entity) { return(entity switch { IClassDeclarationSyntax syn => BuildClass(syn), IFunctionDeclarationSyntax syn => BuildFunction(syn), _ => throw ExhaustiveMatch.Failed(entity) });
private void BuildFunctionSymbol(IFunctionDeclarationSyntax function) { function.Symbol.BeginFulfilling(); var resolver = new TypeResolver(function.File, diagnostics); var parameterTypes = ResolveParameterTypes(resolver, function.Parameters, null); var returnType = ResolveReturnType(function.ReturnType, resolver); var symbol = new FunctionSymbol(function.ContainingNamespaceSymbol, function.Name, parameterTypes, returnType); function.Symbol.Fulfill(symbol); symbolTree.Add(symbol); BuildParameterSymbols(symbol, function.Parameters, parameterTypes); ResolveReachabilityAnnotations(function); }