summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/SMAPI.ModBuildConfig.Analyzer.Tests/UnitTests.cs24
-rw-r--r--src/SMAPI.ModBuildConfig.Analyzer/NetFieldAnalyzer.cs4
2 files changed, 13 insertions, 15 deletions
diff --git a/src/SMAPI.ModBuildConfig.Analyzer.Tests/UnitTests.cs b/src/SMAPI.ModBuildConfig.Analyzer.Tests/UnitTests.cs
index b4f54234..92fc9074 100644
--- a/src/SMAPI.ModBuildConfig.Analyzer.Tests/UnitTests.cs
+++ b/src/SMAPI.ModBuildConfig.Analyzer.Tests/UnitTests.cs
@@ -34,7 +34,9 @@ namespace SMAPI.ModBuildConfig.Analyzer.Tests
{
class Item
{
- public NetInt category { get; } = new NetInt { Value = 42 };
+ public NetInt category { get; } = new NetInt { Value = 42 }; // SMAPI002: use Category instead
+ public NetInt type { get; } = new NetInt { Value = 42 };
+ public NetRef refField { get; } = null;
}
}
@@ -44,15 +46,13 @@ namespace SMAPI.ModBuildConfig.Analyzer.Tests
{
public void Entry()
{
- NetInt intField = new NetInt { Value = 42 };
- NetRef refField = new NetRef { Value = null };
Item item = null;
// this line should raise diagnostics
{{test-code}} // line 36
// these lines should not
- if ((int)intField != 42);
+ if (item.type.Value != 42);
}
}
}
@@ -85,14 +85,14 @@ namespace SMAPI.ModBuildConfig.Analyzer.Tests
/// <param name="expression">The expression which should be reported.</param>
/// <param name="fromType">The source type name which should be reported.</param>
/// <param name="toType">The target type name which should be reported.</param>
- [TestCase("if (intField < 42);", 4, "intField", "NetInt", "Int32")]
- [TestCase("if (intField <= 42);", 4, "intField", "NetInt", "Int32")]
- [TestCase("if (intField > 42);", 4, "intField", "NetInt", "Int32")]
- [TestCase("if (intField >= 42);", 4, "intField", "NetInt", "Int32")]
- [TestCase("if (intField == 42);", 4, "intField", "NetInt", "Int32")]
- [TestCase("if (intField != 42);", 4, "intField", "NetInt", "Int32")]
- [TestCase("if (refField != null);", 4, "refField", "NetRef", "Object")]
- [TestCase("if (item?.category != 42);", 4, "item?.category", "NetInt", "Int32")]
+ [TestCase("if (item.type < 42);", 4, "item.type", "NetInt", "int")]
+ [TestCase("if (item.type <= 42);", 4, "item.type", "NetInt", "int")]
+ [TestCase("if (item.type > 42);", 4, "item.type", "NetInt", "int")]
+ [TestCase("if (item.type >= 42);", 4, "item.type", "NetInt", "int")]
+ [TestCase("if (item.type == 42);", 4, "item.type", "NetInt", "int")]
+ [TestCase("if (item.type != 42);", 4, "item.type", "NetInt", "int")]
+ [TestCase("if (item.refField != null);", 4, "item.refField", "NetRef", "object")]
+ [TestCase("if (item?.type != 42);", 4, "item?.type", "NetInt", "int")]
public void AvoidImplicitNetFieldComparisons_RaisesDiagnostic(string codeText, int column, string expression, string fromType, string toType)
{
// arrange
diff --git a/src/SMAPI.ModBuildConfig.Analyzer/NetFieldAnalyzer.cs b/src/SMAPI.ModBuildConfig.Analyzer/NetFieldAnalyzer.cs
index d64b1486..a9987733 100644
--- a/src/SMAPI.ModBuildConfig.Analyzer/NetFieldAnalyzer.cs
+++ b/src/SMAPI.ModBuildConfig.Analyzer/NetFieldAnalyzer.cs
@@ -246,9 +246,7 @@ namespace StardewModdingAPI.ModBuildConfig.Analyzer
TypeInfo operandType = context.SemanticModel.GetTypeInfo(operand);
if (this.IsNetType(operandType.Type) && !this.IsNetType(operandType.ConvertedType))
{
- string fromTypeName = operandType.Type.Name;
- string toTypeName = operandType.ConvertedType.Name;
- context.ReportDiagnostic(Diagnostic.Create(this.Rules["SMAPI001"], context.Node.GetLocation(), operand, fromTypeName, toTypeName));
+ context.ReportDiagnostic(Diagnostic.Create(this.Rules["SMAPI001"], context.Node.GetLocation(), operand, operandType.Type.Name, operandType.ConvertedType));
return true;
}