private void CompareParameterTypes(IExpression value, IParameterCallable option, int parameter, DocRange errorRange) { if (!CodeType.TypeMatches(option.Parameters[parameter].Type, value.Type())) { // The parameter type does not match. string msg = string.Format("Expected a value of type {0}.", option.Parameters[parameter].Type.Name); optionDiagnostics[option].Add(new Diagnostic(msg, errorRange, Diagnostic.Error)); } else if (value.Type() != null && option.Parameters[parameter].Type == null && value.Type().Constant() == TypeSettable.Constant) { string msg = string.Format($"The type '{value.Type().Name}' cannot be used here."); optionDiagnostics[option].Add(new Diagnostic(msg, errorRange, Diagnostic.Error)); } }