private static INonMemberDeclaration BuildNonMemberDeclaration(INonMemberEntityDeclarationSyntax entity)
 {
     return(entity switch
     {
         IClassDeclarationSyntax syn => BuildClass(syn),
         IFunctionDeclarationSyntax syn => BuildFunction(syn),
         _ => throw ExhaustiveMatch.Failed(entity)
     });
示例#2
0
        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);
        }