/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/UserDefinedConversionAnalysis.cs
84 строки
3 KB
AlekseyTs
Enable consumption of user-defined conversion operators declared in interfaces. (#53619)
27 май 2021, 19:27
Не верифицирован
27 май 2021, 19:27
4264c04
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #nullable disable using Microsoft.CodeAnalysis.CSharp.Symbols; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Text; namespace Microsoft.CodeAnalysis.CSharp { internal enum UserDefinedConversionAnalysisKind : byte { ApplicableInNormalForm, ApplicableInLiftedForm } internal sealed class UserDefinedConversionAnalysis { public readonly TypeSymbol FromType; public readonly TypeSymbol ToType; public readonly TypeParameterSymbol ConstrainedToTypeOpt; public readonly MethodSymbol Operator; public readonly Conversion SourceConversion; public readonly Conversion TargetConversion; public readonly UserDefinedConversionAnalysisKind Kind; public static UserDefinedConversionAnalysis Normal( TypeParameterSymbol constrainedToTypeOpt, MethodSymbol op, Conversion sourceConversion, Conversion targetConversion, TypeSymbol fromType, TypeSymbol toType) { return new UserDefinedConversionAnalysis( UserDefinedConversionAnalysisKind.ApplicableInNormalForm, constrainedToTypeOpt, op, sourceConversion, targetConversion, fromType, toType); } public static UserDefinedConversionAnalysis Lifted( TypeParameterSymbol constrainedToTypeOpt, MethodSymbol op, Conversion sourceConversion, Conversion targetConversion, TypeSymbol fromType, TypeSymbol toType) { return new UserDefinedConversionAnalysis( UserDefinedConversionAnalysisKind.ApplicableInLiftedForm, constrainedToTypeOpt, op, sourceConversion, targetConversion, fromType, toType); } private UserDefinedConversionAnalysis( UserDefinedConversionAnalysisKind kind, TypeParameterSymbol constrainedToTypeOpt, MethodSymbol op, Conversion sourceConversion, Conversion targetConversion, TypeSymbol fromType, TypeSymbol toType) { this.Kind = kind; this.ConstrainedToTypeOpt = constrainedToTypeOpt; this.Operator = op; this.SourceConversion = sourceConversion; this.TargetConversion = targetConversion; this.FromType = fromType; this.ToType = toType; } } }