Skip to content

Commit

Permalink
Move ExceptWhen, And, and Or to SyntaxTrackerBase (#8951)
Browse files Browse the repository at this point in the history
  • Loading branch information
martin-strecker-sonarsource committed Mar 20, 2024
1 parent 2e7a8e1 commit f32e9f1
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 36 deletions.
12 changes: 0 additions & 12 deletions analyzers/src/SonarAnalyzer.Common/Trackers/InvocationTracker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,6 @@ public Condition MethodHasParameters(int count) =>
public Condition IsInvalidBuilderInitialization<TInvocationSyntax>(BuilderPatternCondition<TSyntaxKind, TInvocationSyntax> condition) where TInvocationSyntax : SyntaxNode =>
condition.IsInvalidBuilderInitialization;

public Condition ExceptWhen(Condition condition) =>
value => !condition(value);

public Condition And(Condition condition1, Condition condition2) =>
value => condition1(value) && condition2(value);

public Condition Or(Condition condition1, Condition condition2) =>
value => condition1(value) || condition2(value);

public Condition Or(Condition condition1, Condition condition2, Condition condition3) =>
value => condition1(value) || condition2(value) || condition3(value);

internal Condition MethodReturnTypeIs(KnownType returnType) =>
context => context.MethodSymbol.Value != null
&& context.MethodSymbol.Value.ReturnType.DerivesFrom(returnType);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,6 @@ public abstract class ObjectCreationTracker<TSyntaxKind> : SyntaxTrackerBase<TSy
internal abstract Condition ArgumentAtIndexIsConst(int index);
internal abstract object ConstArgumentForParameter(ObjectCreationContext context, string parameterName);

public Condition ExceptWhen(Condition condition) =>
value => !condition(value);

public Condition And(Condition condition1, Condition condition2) =>
value => condition1(value) && condition2(value);

public Condition Or(Condition condition1, Condition condition2) =>
value => condition1(value) || condition2(value);

public Condition Or(Condition condition1, Condition condition2, Condition condition3) =>
value => condition1(value) || condition2(value) || condition3(value);

internal Condition ArgumentIsBoolConstant(string parameterName, bool expectedValue) =>
context => ConstArgumentForParameter(context, parameterName) is bool boolValue && boolValue == expectedValue;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,18 +35,6 @@ public Condition MatchProperty(params MemberDescriptor[] properties) =>
public Condition MatchProperty(bool checkOverridenProperties, params MemberDescriptor[] properties) =>
context => MemberDescriptor.MatchesAny(context.PropertyName, context.PropertySymbol, checkOverridenProperties, Language.NameComparison, properties);

public Condition ExceptWhen(Condition condition) =>
value => !condition(value);

public Condition And(Condition condition1, Condition condition2) =>
value => condition1(value) && condition2(value);

public Condition Or(Condition condition1, Condition condition2) =>
value => condition1(value) || condition2(value);

public Condition Or(Condition condition1, Condition condition2, Condition condition3) =>
value => condition1(value) || condition2(value) || condition3(value);

protected override PropertyAccessContext CreateContext(SonarSyntaxNodeReportingContext context)
{
// We register for both MemberAccess and IdentifierName and we want to
Expand Down
12 changes: 12 additions & 0 deletions analyzers/src/SonarAnalyzer.Common/Trackers/SyntaxTrackerBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,17 @@ void TrackAndReportIfNecessary(SonarSyntaxNodeReportingContext c)
}
}
}

public Condition ExceptWhen(Condition condition) =>
value => !condition(value);

public Condition And(Condition condition1, Condition condition2) =>
value => condition1(value) && condition2(value);

public Condition Or(Condition condition1, Condition condition2) =>
value => condition1(value) || condition2(value);

public Condition Or(Condition condition1, Condition condition2, Condition condition3) =>
value => condition1(value) || condition2(value) || condition3(value);
}
}

0 comments on commit f32e9f1

Please sign in to comment.