Skip to content

Commit 5b13f0f

Browse files
authored
Merge pull request #55 from Ted-Jin-Lab/development
✨Only generate once and add the operator %
2 parents 5868bae + 27dfe2e commit 5b13f0f

3 files changed

Lines changed: 26 additions & 1 deletion

File tree

Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project>
33
<PropertyGroup>
4-
<Version>2025.11.19.1</Version>
4+
<Version>2025.11.19.2</Version>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
77
<LangVersion>preview</LangVersion>

src/analyzers/TedToolkit.Quantities.Analyzer/QuantitiesGenerator.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@ private static void Generate(SourceProductionContext context,
9999
try
100100
{
101101
var (compilations, texts) = arg;
102+
103+
if (compilations.GetTypeByMetadataName("TedToolkit.Quantities.QuantitiesAttribute`1")?.BaseType?.GetName()
104+
?.FullName
105+
is "global::System.Attribute") return;
106+
102107
var unitAttribute = ReadUnit(compilations);
103108
var tDataType = unitAttribute?.tDataType!;
104109
var flag = unitAttribute?.flag!;

src/analyzers/TedToolkit.Quantities.Analyzer/QuantityStructGenerator.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,26 @@ public void GenerateCode(SourceProductionContext context)
606606
IdentifierName("right"),
607607
IdentifierName("Value")))))))
608608
.WithSemicolonToken(Token(SyntaxKind.SemicolonToken)),
609+
610+
OperatorDeclaration(IdentifierName(quantity.Name), Token(SyntaxKind.PercentToken))
611+
.WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword), Token(SyntaxKind.StaticKeyword)))
612+
.WithAttributeLists([GeneratedCodeAttribute(typeof(QuantityStructGenerator))])
613+
.WithParameterList(ParameterList(
614+
[
615+
Parameter(Identifier("left")).WithType(IdentifierName(quantity.Name)),
616+
Parameter(Identifier("right")).WithType(IdentifierName(quantity.Name))
617+
]))
618+
.WithExpressionBody(ArrowExpressionClause(CastExpression(IdentifierName(quantity.Name),
619+
ParenthesizedExpression(BinaryExpression(SyntaxKind.ModuloExpression,
620+
MemberAccessExpression(
621+
SyntaxKind.SimpleMemberAccessExpression,
622+
IdentifierName("left"),
623+
IdentifierName("Value")),
624+
MemberAccessExpression(
625+
SyntaxKind.SimpleMemberAccessExpression,
626+
IdentifierName("right"),
627+
IdentifierName("Value")))))))
628+
.WithSemicolonToken(Token(SyntaxKind.SemicolonToken)),
609629

610630
OperatorDeclaration(IdentifierName(quantity.Name), Token(SyntaxKind.SlashToken))
611631
.WithModifiers(TokenList(Token(SyntaxKind.PublicKeyword),

0 commit comments

Comments
 (0)