private void ResolveSignatureTypesInField(FieldDeclarationSyntax field) { var resolver = new ExpressionTypeResolver(field.File, diagnostics); field.Type.BeginFulfilling(); var type = resolver.CheckAndEvaluateTypeExpression(field.TypeExpression); field.Type.Fulfill(type); }
private FixedList<DataType> ResolveTypesInParameters( FunctionDeclarationSyntax function, ExpressionTypeResolver expressionResolver) { var types = new List<DataType>(); foreach (var parameter in function.Parameters) switch (parameter) { case NamedParameterSyntax namedParameter: { parameter.Type.BeginFulfilling(); var type = expressionResolver.CheckAndEvaluateTypeExpression(namedParameter .TypeExpression); types.Add(parameter.Type.Fulfill(type)); } break; case SelfParameterSyntax _: // Skip, we have already handled the self parameter break; case FieldParameterSyntax fieldParameter: throw new NotImplementedException(); default: throw NonExhaustiveMatchException.For(parameter); } return types.ToFixedList(); }
private static DataType ResolveReturnType( FunctionDeclarationSyntax function, ExpressionSyntax returnTypeExpression, ExpressionTypeResolver expressionResolver) { var returnType = returnTypeExpression != null ? expressionResolver.CheckAndEvaluateTypeExpression(returnTypeExpression) : DataType.Void; return function.ReturnType.Fulfill(returnType); }
private static void ResolveTypesInGenericParameters( FixedList<GenericParameterSyntax> genericParameters, ExpressionTypeResolver expressionResolver) { foreach (var parameter in genericParameters) { parameter.Type.BeginFulfilling(); var type = parameter.TypeExpression == null ? DataType.Type : expressionResolver.CheckAndEvaluateTypeExpression(parameter.TypeExpression); parameter.Type.Fulfill(type); } }