Example #1
0
        private IEnumerable <Diagnostic> ValidateDefaultValue(ParameterDefaultValueSyntax defaultValueSyntax, TypeSymbol assignedType)
        {
            // figure out type of the default value
            var defaultValueType = typeManager.GetTypeInfo(defaultValueSyntax.DefaultValue);

            // this type is not a property in a symbol so the semantic error visitor won't collect the errors automatically
            if (defaultValueType is ErrorTypeSymbol)
            {
                return(defaultValueType.GetDiagnostics());
            }

            if (TypeValidator.AreTypesAssignable(defaultValueType, assignedType) == false)
            {
                return(DiagnosticBuilder.ForPosition(defaultValueSyntax.DefaultValue).ParameterTypeMismatch(assignedType.Name, defaultValueType.Name).AsEnumerable());
            }

            return(Enumerable.Empty <Diagnostic>());
        }
Example #2
0
        private IEnumerable <ErrorDiagnostic> ValidateDefaultValue(ParameterDefaultValueSyntax defaultValueSyntax)
        {
            // figure out type of the default value
            TypeSymbol?defaultValueType = this.Context.TypeManager.GetTypeInfo(defaultValueSyntax.DefaultValue, new TypeManagerContext());

            // this type is not a property in a symbol so the semantic error visitor won't collect the errors automatically
            if (defaultValueType is ErrorTypeSymbol)
            {
                return(defaultValueType.GetDiagnostics());
            }

            if (TypeValidator.AreTypesAssignable(defaultValueType, this.Type) == false)
            {
                return(this.CreateError(defaultValueSyntax.DefaultValue, b => b.ParameterTypeMismatch(this.Type.Name, defaultValueType.Name)).AsEnumerable());
            }

            return(Enumerable.Empty <ErrorDiagnostic>());
        }
 public override void VisitParameterDefaultValueSyntax(ParameterDefaultValueSyntax syntax)
 {
     AddCodeFixIfSingleInterpolatedString(syntax.DefaultValue);
     base.VisitParameterDefaultValueSyntax(syntax);
 }