Our website uses cookies to enhance your browsing experience.
Accept
to the top
>
>
>
Examples of errors detected by the...

Examples of errors detected by the V3004 diagnostic

V3004. The 'then' statement is equivalent to the 'else' statement.


AvalonStudio

V3004 The 'then' statement is equivalent to the 'else' statement. InvocationContext.cs 400


private static Signature BuildSignature(IMethodSymbol symbol)
{
  ....
  var returnTypeInfo = CheckForStaticExtension.GetReturnType(symbol);
  if(returnTypeInfo.HasValue)
  {
    if(returnTypeInfo.Value.inbuilt)
    {
      signature.BuiltInReturnType = returnTypeInfo.Value.name;
    }
    else
    {
      signature.ReturnType = returnTypeInfo.Value.name;
    }
  }
  signature.Parameters = symbol.Parameters.Select(parameter =>
  {
    var info = CheckForStaticExtension.GetReturnType(parameter);
    ....
    if(info.HasValue)
    {
      if(info.Value.inbuilt)
      {
        result.BuiltInType = info.Value.name;   // <=
      }
      else
      {
        result.BuiltInType = info.Value.name;   // <=
      }
    }
    ....
  }).ToList();
  ....
}

Orleans

V3004 The 'then' statement is equivalent to the 'else' statement. TransactionalStateStorageTestRunner.cs 327


public virtual async Task ConfirmOneAndCancelOne(bool useTwoSteps = false,
                                                 bool reverseOrder = false)
{
  ....
  if (useTwoSteps)
  {
    if (reverseOrder)                                                 // <=
    {
      etag = await stateStorage.Store(etag, metadata,
                                      emptyPendingStates, 1, null);

      _ = await stateStorage.Store(etag, metadata,
                                         emptyPendingStates, null, 1);
    }
    else
    {
      etag = await stateStorage.Store(etag, metadata,
                                      emptyPendingStates, 1, null);

      _ = await stateStorage.Store(etag, metadata,
                                   emptyPendingStates, null, 1);
    }
  }
  else
  {
    _ = await stateStorage.Store(etag, metadata,
                                 emptyPendingStates, 1, 1);
  }
  ....
}

Barotrauma

V3004 The 'then' statement is equivalent to the 'else' statement. ServerEntityEventManager.cs 314


public void Write(Client client, IWriteMessage msg,
                  out List<NetEntityEvent> sentEvents)
{
  List<NetEntityEvent> eventsToSync = null;
  if (client.NeedsMidRoundSync)
  {
    eventsToSync = GetEventsToSync(client);
  }
  else
  {
    eventsToSync = GetEventsToSync(client);
  }
  ....
}

Umbraco

V3004 The 'then' statement is equivalent to the 'else' statement. UrlProviderExtensions.cs 274


private static async Task<Attempt<UrlInfo>> DetectCollisionAsync(....)
{
  ....
  if (pcr.IgnorePublishedContentCollisions)
  {
    logger.LogDebug(logMsg, url, uri, culture);
  }
  else
  {
    logger.LogDebug(logMsg, url, uri, culture);
  }
}

DotNetNuke

V3004 The 'then' statement is equivalent to the 'else' statement. Search.ascx.cs 432


protected void ExecuteSearch(string searchText, string searchType)
{
  ....
  if (Host.UseFriendlyUrls)
  {
    this.Response.Redirect(this._navigationManager.NavigateURL(searchTabId));
  }
  else
  {
    this.Response.Redirect(this._navigationManager.NavigateURL(searchTabId));
  }
  ....
}

DotNetNuke

V3004 The 'then' statement is equivalent to the 'else' statement. DNNListEditControl.cs 380


protected override void RenderEditMode(HtmlTextWriter writer)
{
  ....
  // Add the Not Specified Option
  if (this.ValueField == ListBoundField.Text)
  {
    writer.AddAttribute(HtmlTextWriterAttribute.Value, Null.NullString);
  }
  else
  {
    writer.AddAttribute(HtmlTextWriterAttribute.Value, Null.NullString);
  }
  ....
}

ONLYOFFICE Community Server

V3004 The 'then' statement is equivalent to the 'else' statement. SelectelStorage.cs 461


public override string[] ListFilesRelative(....)
{
    var paths = new List<String>();
    var client = GetClient().Result;

    if (recursive)
    {
        paths = client.GetContainerFilesAsync(_private_container, int.MaxValue,
            null, MakePath(domain, path)).Result.Select(x => x.Name).ToList();
    }
    else
    {
        paths = client.GetContainerFilesAsync(_private_container, int.MaxValue,
            null, MakePath(domain, path)).Result.Select(x => x.Name).ToList();
    }
    ....
}

QuantConnect Lean

V3004 The 'then' statement is equivalent to the 'else' statement. FuturesExpiryFunctions.cs 1561


public static readonly Dictionary<....>
  FuturesExpiryDictionary = new Dictionary<....>()
{
  ....
  if (twoMonthsPriorToContractMonth.Month == 2)
  {
    lastBusinessDay = FuturesExpiryUtilityFunctions
                      .NthLastBusinessDay(twoMonthsPriorToContractMonth, 1);
  }
  else
  {
    lastBusinessDay = FuturesExpiryUtilityFunctions
                      .NthLastBusinessDay(twoMonthsPriorToContractMonth, 1);
  }
  ....
}

Nethermind

V3004 The 'then' statement is equivalent to the 'else' statement. Nethermind.BeaconNode BeaconNodeFacade.cs 177


public async Task<ApiResponse>
PublishBlockAsync(SignedBeaconBlock signedBlock,
                  CancellationToken cancellationToken)
{
  bool acceptedLocally = false;
  ....
  if (acceptedLocally)
  {
    return new ApiResponse(StatusCode.Success);
  }
  else
  {
    return new ApiResponse(StatusCode.Success);
  }
  ....
}

Similar errors can be found in some other places:

  • V3004 The 'then' statement is equivalent to the 'else' statement. Nethermind.Overseer.Test TestBuilder.cs 46

RunUO

V3004 The 'then' statement is equivalent to the 'else' statement. Serialization.cs 1571


public override void WriteDeltaTime( DateTime value )
{
  ....
  try
  {
    d = new TimeSpan( ticks-now );
  }
  catch
  {
    if( ticks < now )
      d = TimeSpan.MaxValue;
    else
      d = TimeSpan.MaxValue;
  }
  ....
}

Similar errors can be found in some other places:

  • V3004 The 'then' statement is equivalent to the 'else' statement. Item.cs 2103
  • V3004 The 'then' statement is equivalent to the 'else' statement. Serialization.cs 383

Emby

V3004 The 'then' statement is equivalent to the 'else' statement. SqliteItemRepository.cs 5648


private QueryResult<Tuple<BaseItem, ItemCounts>> GetItemValues(....)
{
  ....
  if (typesToCount.Length == 0)
  {
    whereText += " And CleanName In (Select CleanValue
                                    from ItemValues where "
    + typeClause + " AND ItemId in (select guid from TypedBaseItems"
    + innerWhereText + "))";
  }
  else
  {
    //whereText += " And itemTypes not null";
    whereText += " And CleanName In (Select CleanValue
                                    from ItemValues where "
    + typeClause + " AND ItemId in (select guid from TypedBaseItems"
    + innerWhereText + "))";
  }
  ....
}

AvaloniaUI

V3004 The 'then' statement is equivalent to the 'else' statement. DataGridSortDescription.cs 235


public override
  IOrderedEnumerable<object> ThenBy(IOrderedEnumerable<object> seq)
{
  if (_descending)
  {
    return seq.ThenByDescending(o => GetValue(o), InternalComparer);
  }
  else
  {
    return seq.ThenByDescending(o => GetValue(o), InternalComparer);
  }
}

.NET Core Libraries (CoreFX)

V3004 The 'then' statement is equivalent to the 'else' statement. QueryOutputWriterV1.cs 242


public override void WriteBase64(byte[] buffer, int index, int count)
{
  if (!_inAttr && (_inCDataSection || StartCDataSection()))
    _wrapped.WriteBase64(buffer, index, count);
  else
    _wrapped.WriteBase64(buffer, index, count);
}

.NET Core Libraries (CoreFX)

V3004 The 'then' statement is equivalent to the 'else' statement. DirectorySearcher.cs 629


private SearchResultCollection FindAll(bool findMoreThanOne)
{
  searchResult = null;

  DirectoryEntry clonedRoot = null;
  if (_assertDefaultNamingContext == null)
  {
    clonedRoot = SearchRoot.CloneBrowsable();
  }
  else
  {
    clonedRoot = SearchRoot.CloneBrowsable();
  }
  ....
}

FastReport

V3004 The 'then' statement is equivalent to the 'else' statement. HtmlTextRenderer.cs 2092


public override Run Split(float availableWidth, out Run secondPart)
{
  ....
  if (r.Width > availableWidth)
  {
    List<CharWithIndex> list = new List<CharWithIndex>();
    for (int i = point; i < size; i++)
      list.Add(chars[i]);
    secondPart = new RunText(renderer, word, style, list,
                             left + r.Width, charIndex);
    list.Clear();
    for (int i = 0; i < point; i++)
        list.Add(chars[i]);
    r = new RunText(renderer, word, style, list, left, charIndex);

    return r;
  }
  else
  {
    List<CharWithIndex> list = new List<CharWithIndex>();
    for (int i = point; i < size; i++)
        list.Add(chars[i]);
    secondPart = new RunText(renderer, word, style, list,
                             left + r.Width, charIndex);
    list.Clear();
    for (int i = 0; i < point; i++)
        list.Add(chars[i]);
    r = new RunText(renderer, word, style, list, left, charIndex);
    return r;
  }
  ....
}

Infer.NET

V3004 The 'then' statement is equivalent to the 'else' statement. Runtime RegexpTreeBuilder.cs 1080


public int Compare(Pair<int, int> x, Pair<int, int> y)
{
  if (x.First < y.First)
  {
    if (x.Second >= y.Second)
    {
      return 1;
    }
    else
    {
      return 1;
    }
  }
  else if (x.First > y.First)
  {
    if (x.Second <= y.Second)
    {
      return -1;
    }
    else
    {
      return -1;
    }
  }
  ....
}

Similar errors can be found in some other places:

  • V3004 The 'then' statement is equivalent to the 'else' statement. Runtime RegexpTreeBuilder.cs 1093

PascalABC.NET

V3004 The 'then' statement is equivalent to the 'else' statement. VisualPascalABCNET CodeCompletionWindow.cs 204


public void HandleMouseWheel(....)
{
  ....
  if (System.Windows.Forms.SystemInformation.
      MouseWheelScrollLines > 0) {
    newValue = this.vScrollBar.Value -
      (control.TextEditorProperties.MouseWheelScrollDown ? 1 :
       -1) * multiplier;
  } else {
    newValue = this.vScrollBar.Value -
      (control.TextEditorProperties.MouseWheelScrollDown ? 1 :
       -1) * multiplier;
  }
  ....
}

Similar errors can be found in some other places:

  • V3004 The 'then' statement is equivalent to the 'else' statement. NETGenerator NETGenerator.cs 439
  • V3004 The 'then' statement is equivalent to the 'else' statement. NETGenerator NETGenerator.cs 2338
  • V3004 The 'then' statement is equivalent to the 'else' statement. NETGenerator NETGenerator.cs 4062
  • And 7 additional diagnostic messages.

Mono

V3004 The 'then' statement is equivalent to the 'else' statement. System.Windows.Forms-net_4_x TextBoxTextRenderer.cs 79


public static void DrawText (....)
{
  ....
  if (showNonPrint)
    TextRenderer.DrawTextInternal (g, text, font,
      new Rectangle (new Point ((int)x, (int)y), max_size),
      color,
      TextFormatFlags.NoPadding |
      TextFormatFlags.NoPrefix, false);
  else
    TextRenderer.DrawTextInternal (g, text, font,
      new Rectangle (new Point ((int)x, (int)y), max_size),
      color,
      TextFormatFlags.NoPadding |
      TextFormatFlags.NoPrefix, false);
  ....
}

Space Engineers

V3004 The 'then' statement is equivalent to the 'else' statement. Sandbox.Game MyThrust.cs 149


public void UpdateLight()
{
  ....
  if (((MyCubeGrid)Parent).GridSizeEnum == MyCubeSize.Large)
    Light.GlareIntensity = 0.5f + length * 2;
  else
    Light.GlareIntensity = 0.5f + length * 2;
  ....
}

Space Engineers

V3004 The 'then' statement is equivalent to the 'else' statement. Sandbox.Game MyNavigationTriangle.cs 189


private static bool IsTriangleDangerous(int triIndex)
{
  if (MyPerGameSettings.NavmeshPresumesDownwardGravity)
  {
    return triIndex == -1;
  }
  else
  {
    return triIndex == -1;
  }
}

Space Engineers

V3004 The 'then' statement is equivalent to the 'else' statement. Sandbox.Game MyAgentBot.cs 260


private void StartRespawn()
{
  m_lastCountdownTime = MySandboxGame
                          .TotalGamePlayTimeInMilliseconds;
  if (m_removeAfterDeath)
    m_deathCountdownMs = AgentDefinition.RemoveTimeMs;
  else
    m_deathCountdownMs = AgentDefinition.RemoveTimeMs;
}

Sony ATF

V3004 The 'then' statement is equivalent to the 'else' statement. Atf.Gui.WinForms.vs2010 DropDescriptionHelper.cs 199


public static void DefaultGiveFeedback(IComDataObject data,
                                       GiveFeedbackEventArgs e)
{
  ....
  if (setDefaultDropDesc &&
      (DropImageType)e.Effect != currentType)
  {
    if (e.Effect != DragDropEffects.None)
    {
      SetDropDescription(data,
        (DropImageType)e.Effect, e.Effect.ToString(), null);
    }
    else
    {
      SetDropDescription(data,
        (DropImageType)e.Effect, e.Effect.ToString(), null);
    }
    ....
  }
}

.NET Compiler Platform ("Roslyn")

V3004 The 'then' statement is equivalent to the 'else' statement. GetSemanticInfoTests.cs 2269


public void IndexerMemberRace()
{
  ....
  for (int i = 0; i < 20; i++)
  {
    ....
    if (i % 2 == 0)
    {
      thread1.Start();
      thread2.Start();
    }
    else
    {
      thread1.Start();
      thread2.Start();
    }
    ....
  }
  ....
}

.NET Core Libraries (CoreFX)

V3004 The 'then' statement is equivalent to the 'else' statement. SqlUtil.cs 93


internal static void ContinueTask(....)
{
  ....
  if (connectionToDoom != null || connectionToAbort != null)
  {
    try
    {
      onSuccess();
    }
    catch (Exception e)
    {
      completion.SetException(e);
    }
  }
  else
  { // no connection to doom - reliability section not required
    try
    {
      onSuccess();
    }
    catch (Exception e)
    {
      completion.SetException(e);
    }
  }
  ....
}

.NET Core Libraries (CoreFX)

V3004 The 'then' statement is equivalent to the 'else' statement. XmlSerializationWriterILGen.cs 1213


private void WriteMember(...., TypeDesc memberTypeDesc, ....)
{
  ....
  if (memberTypeDesc.IsArray)
  {
    LocalBuilder localI = ilg.DeclareOrGetLocal(...., iVar);
    ilg.For(localI, 0, ilg.GetLocal(aVar));
  }
  else
  {
    LocalBuilder localI = ilg.DeclareOrGetLocal(...., iVar);
    ilg.For(localI, 0, ilg.GetLocal(aVar));
  }
  ....
}

Microsoft Code Contracts

V3004 The 'then' statement is equivalent to the 'else' statement. Metadata.cs 2602


private void SerializeFieldRvaTable(....)
{
  ....
  switch (row.TargetSection){
    case PESection.SData:
    case PESection.TLS:
      Fixup fixup = new Fixup();
      fixup.fixupLocation = writer.BaseStream.Position;
      fixup.addressOfNextInstruction = row.RVA;
      if (row.TargetSection == PESection.SData){
        sdataFixup.nextFixUp = fixup;   // <=
        sdataFixup = fixup;             // <=
      }else{
        sdataFixup.nextFixUp = fixup;   // <=
        sdataFixup = fixup;             // <=
      }
      writer.Write((int)0);
      break;
  ....
}

Similar errors can be found in some other places:

  • V3004 The 'then' statement is equivalent to the 'else' statement. Nodes.cs 6698
  • V3004 The 'then' statement is equivalent to the 'else' statement. Nodes.cs 6713
  • V3004 The 'then' statement is equivalent to the 'else' statement. WarningSuggestionLinkOutput.cs 108
  • And 1 additional diagnostic messages.

SharpDevelop

V3004 The 'then' statement is equivalent to the 'else' statement. Editor.cs 225


new public bool Enabled {
  get { return base.Enabled; }
  set {
    if (this.InvokeRequired) {
      base.Enabled = this.VScrollBar.Enabled =
      this.hexView.Enabled =this.textView.Enabled =
      this.side.Enabled = this.header.Enabled = value;
    } else {
      base.Enabled = this.VScrollBar.Enabled =
      this.hexView.Enabled = this.textView.Enabled =
      this.side.Enabled = this.header.Enabled = value;
    }
  }
}

Umbraco

V3004 The 'then' statement is equivalent to the 'else' statement. TinyMCE.cs 170


public TinyMCE(IData Data, string Configuration)
{
  ....
  if (p.Alias.StartsWith("."))
    styles += p.Text + "=" + p.Alias;
  else
    styles += p.Text + "=" + p.Alias;
  ....
}