Skip to content
This repository was archived by the owner on Apr 14, 2022. It is now read-only.

Commit 45f8796

Browse files
author
Mikhail Arkhipov
authored
Merge pull request #287 from MikhailArkhipov/master
Fix null reference in OverloadResultComparer
2 parents 18e25f1 + 7923aa4 commit 45f8796

File tree

1 file changed

+10
-20
lines changed

1 file changed

+10
-20
lines changed

src/Analysis/Engine/Impl/OverloadResult.cs

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public OverloadResult(ParameterResult[] parameters, string name, string document
3636

3737
public string Name { get; }
3838
public virtual IReadOnlyList<string> ReturnType => _returnType;
39-
public virtual string Documentation { get; }
39+
public virtual string Documentation { get; } = string.Empty;
4040
public virtual ParameterResult[] Parameters => _parameters;
4141

4242
internal virtual OverloadResult WithNewParameters(ParameterResult[] newParameters)
@@ -138,7 +138,7 @@ public override string ToString() {
138138
}
139139

140140
public override bool Equals(object obj) {
141-
if(obj is OverloadResult other) {
141+
if (obj is OverloadResult other) {
142142
return OverloadResultComparer.Instance.Equals(this, other);
143143
}
144144
return base.Equals(obj);
@@ -156,7 +156,7 @@ class AccumulatedOverloadResult {
156156

157157
public AccumulatedOverloadResult(string name, string documentation, int parameters) {
158158
_name = name;
159-
_doc = documentation;
159+
_doc = documentation ?? string.Empty;
160160
_pnames = new string[parameters];
161161
_ptypes = new string[parameters];
162162
_pdefaults = new string[parameters];
@@ -435,35 +435,25 @@ private OverloadResultComparer(bool weak) {
435435
}
436436

437437
public override bool Equals(OverloadResult x, OverloadResult y) {
438-
if (x == null | y == null) {
439-
return x == null & y == null;
438+
if (x == null || y == null) {
439+
return x == null && y == null;
440440
}
441441

442442
if (x.Name != y.Name || (!_weak && x.Documentation != y.Documentation)) {
443443
return false;
444444
}
445445

446-
if (x.Parameters == null | y.Parameters == null) {
447-
return x.Parameters == null & y.Parameters == null;
446+
if (x.Parameters == null || y.Parameters == null) {
447+
return x.Parameters == null && y.Parameters == null;
448448
}
449449

450450
if (x.Parameters.Length != y.Parameters.Length) {
451451
return false;
452452
}
453453

454-
for (var i = 0; i < x.Parameters.Length; ++i) {
455-
if (_weak) {
456-
if (!x.Parameters[i].Name.Equals(y.Parameters[i].Name)) {
457-
return false;
458-
}
459-
} else {
460-
if (!x.Parameters[i].Equals(y.Parameters[i])) {
461-
return false;
462-
}
463-
}
464-
}
465-
466-
return true;
454+
return _weak
455+
? x.Parameters.Select(p => p.Name).SequenceEqual(y.Parameters.Select(p => p.Name))
456+
: x.Parameters.SequenceEqual(y.Parameters);
467457
}
468458

469459
public override int GetHashCode(OverloadResult obj) {

0 commit comments

Comments
 (0)