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>()); }
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); }