Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
*.verified.txt text eol=lf working-tree-encoding=UTF-8
*.verified.xml text eol=lf working-tree-encoding=UTF-8
*.verified.json text eol=lf working-tree-encoding=UTF-8
*.verified.bin binary
*.verified.cs text eol=lf working-tree-encoding=UTF-8
*.verified.bin binary

# Force LF for test case source files so Roslyn's GetInterceptableLocation()
# produces the same data hash on all platforms (CRLF vs LF changes the hash)
test/LayeredCraft.DecoWeaver.Generator.Tests/Cases/**/*.cs text eol=lf
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<Import Project="releasenotes.props" />

<PropertyGroup>
<VersionPrefix>1.0.6</VersionPrefix>
<VersionPrefix>1.0.0</VersionPrefix>
<!-- SPDX license identifier for MIT -->
<PackageLicenseExpression>MIT</PackageLicenseExpression>

Expand Down
15 changes: 6 additions & 9 deletions samples/DecoWeaver.Sample/DecoWeaver.Sample.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<InterceptorsPreviewNamespaces>DecoWeaver.Generated</InterceptorsPreviewNamespaces>
<InterceptorsNamespaces>DecoWeaver.Generated</InterceptorsNamespaces>
<InterceptorsPreviewNamespaces>LayeredCraft.DecoWeaver.Generated</InterceptorsPreviewNamespaces>
<InterceptorsNamespaces>LayeredCraft.DecoWeaver.Generated</InterceptorsNamespaces>
<IsPackable>false</IsPackable>
<LangVersion>Preview</LangVersion>
</PropertyGroup>
Expand All @@ -17,13 +17,10 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.3" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="10.0.3" />
<PackageReference Update="Microsoft.SourceLink.GitHub" Version="10.0.103">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.5" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.5" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="10.0.5" />
<PackageReference Remove="Microsoft.SourceLink.GitHub" />
</ItemGroup>
<!-- Only write generated files to disk in Debug builds (nice for inspection) -->
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
Expand Down
4 changes: 2 additions & 2 deletions samples/DecoWeaver.Sample/Globals.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
using DecoWeaver.Sample;
using DecoWeaver.Sample;

[assembly: DecoWeaver.Attributes.DecorateService(typeof(IRepository<>), typeof(CachingRepository<>))]
[assembly: LayeredCraft.DecoWeaver.Attributes.DecorateService(typeof(IRepository<>), typeof(CachingRepository<>))]
2 changes: 1 addition & 1 deletion samples/DecoWeaver.Sample/Repository.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using DecoWeaver.Attributes;
using LayeredCraft.DecoWeaver.Attributes;
using Microsoft.Extensions.Logging;

namespace DecoWeaver.Sample;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using System;
using System;
using System.ComponentModel;
using System.Diagnostics;

namespace DecoWeaver.Attributes;
namespace LayeredCraft.DecoWeaver.Attributes;

/// <summary>
/// Declares that <typeparamref name="TDecorator"/> should wrap the decorated implementation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@
<IsPackable>false</IsPackable>
<LangVersion>default</LangVersion>
<TargetFramework>netstandard2.0</TargetFramework>
<PackageId>DecoWeaver.Attributes</PackageId>
<PackageId>LayeredCraft.DecoWeaver.Attributes</PackageId>
<AssemblyName>$(PackageId)</AssemblyName>
<RootNamespace>$(PackageId)</RootNamespace>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Polyfill" Version="9.17.0">
<PackageReference Include="Polyfill" Version="9.23.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Update="Microsoft.SourceLink.GitHub" Version="10.0.103">
<PackageReference Update="Microsoft.SourceLink.GitHub" Version="10.0.201">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
Expand Down
12 changes: 6 additions & 6 deletions src/LayeredCraft.DecoWeaver.Generators/AttributeNames.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
namespace DecoWeaver;
namespace LayeredCraft.DecoWeaver;

internal static class AttributeNames
{
// Full names with namespace (for ToDisplayString() comparisons)
public const string DecoratedByAttribute = $"DecoWeaver.Attributes.{DecoratedByMetadataName}";
public const string GenericDecoratedByAttribute = $"DecoWeaver.Attributes.{GenericDecoratedByMetadataName}";
public const string ServiceDecoratedByAttribute = $"DecoWeaver.Attributes.{ServiceDecoratedByMetadataName}";
public const string SkipAssemblyDecorationAttribute = $"DecoWeaver.Attributes.{SkipAssemblyDecorationMetadataName}";
public const string DoNotDecorateAttribute = $"DecoWeaver.Attributes.{DoNotDecorateMetadataName}";
public const string DecoratedByAttribute = $"LayeredCraft.DecoWeaver.Attributes.{DecoratedByMetadataName}";
public const string GenericDecoratedByAttribute = $"LayeredCraft.DecoWeaver.Attributes.{GenericDecoratedByMetadataName}";
public const string ServiceDecoratedByAttribute = $"LayeredCraft.DecoWeaver.Attributes.{ServiceDecoratedByMetadataName}";
public const string SkipAssemblyDecorationAttribute = $"LayeredCraft.DecoWeaver.Attributes.{SkipAssemblyDecorationMetadataName}";
public const string DoNotDecorateAttribute = $"LayeredCraft.DecoWeaver.Attributes.{DoNotDecorateMetadataName}";

// Metadata names only (for pattern matching)
public const string DecoratedByMetadataName = "DecoratedByAttribute";
Expand Down
18 changes: 9 additions & 9 deletions src/LayeredCraft.DecoWeaver.Generators/DecoWeaverGenerator.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
using System.Collections.Immutable;
using DecoWeaver.Emit;
using DecoWeaver.Model;
using DecoWeaver.Providers;
using DecoWeaver.Util;
using System.Collections.Immutable;
using LayeredCraft.DecoWeaver.Emit;
using LayeredCraft.DecoWeaver.Model;
using LayeredCraft.DecoWeaver.Providers;
using LayeredCraft.DecoWeaver.Util;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;

namespace DecoWeaver;
namespace LayeredCraft.DecoWeaver;

[Generator]
public sealed class DecoWeaverGenerator : IIncrementalGenerator
Expand Down Expand Up @@ -109,7 +109,7 @@ compilation is CSharpCompilation
.Select(static (x, _) => x!.Value)
.WithTrackingName(TrackingNames.Attr_DoNotDecorate_Stream);

// Gate each VALUES stream before Collect()
// ✅ Gate each VALUES stream before Collect()
var genericGated = genericDecorations
.Combine(csharpSufficient)
.Where(static pair => pair.Right)
Expand Down Expand Up @@ -202,7 +202,7 @@ compilation is CSharpCompilation
// Build a fast lookup of implementations that opted out via [SkipAssemblyDecorators]
var skipped = new HashSet<TypeDefId>(inputs.SkipMarkers.Select(m => m.ImplementationDef));

// Convert ServiceDecoration DecoratorToIntercept by matching service types with registrations
// Convert ServiceDecoration → DecoratorToIntercept by matching service types with registrations
var assemblyDecos = new List<DecoratorToIntercept>();
foreach (var matchingDecos in inputs.Registrations.Select(reg => inputs.ServiceDecos
.Where(sd =>
Expand Down Expand Up @@ -233,7 +233,7 @@ compilation is CSharpCompilation
registrations: regsWithDecorators,
decoratorsByImplementation: byImpl);

spc.AddSource("DecoWeaver.Interceptors.ClosedGenerics.g.cs", source);
spc.AddSource("LayeredCraft.DecoWeaver.Interceptors.ClosedGenerics.g.cs", source);
});
}

Expand Down
4 changes: 2 additions & 2 deletions src/LayeredCraft.DecoWeaver.Generators/Descriptors.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis;

namespace DecoWeaver;
namespace LayeredCraft.DecoWeaver;

internal static class Descriptors
{
Expand All @@ -8,7 +8,7 @@
/// DECOW010: The project's C# language version is too low for DecoWeaver's interceptors.
/// </summary>
public static readonly DiagnosticDescriptor CSharpVersionTooLow = new(
id: "DECOW010",

Check warning on line 11 in src/LayeredCraft.DecoWeaver.Generators/Descriptors.cs

View workflow job for this annotation

GitHub Actions / build / build

Enable analyzer release tracking for the analyzer project containing rule 'DECOW010' (https://github.com/dotnet/roslyn/blob/main/src/RoslynAnalyzers/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md)

Check warning on line 11 in src/LayeredCraft.DecoWeaver.Generators/Descriptors.cs

View workflow job for this annotation

GitHub Actions / build / build

Enable analyzer release tracking for the analyzer project containing rule 'DECOW010' (https://github.com/dotnet/roslyn/blob/main/src/RoslynAnalyzers/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md)
title: "C# language version too low",
messageFormat: "DecoWeaver requires C# 11 or newer (or LanguageVersion=default with a modern SDK). " +
"Set <LangVersion>latest</LangVersion> or enable preview features.",
Expand All @@ -21,7 +21,7 @@
/// DECOW020: Decorated implementation registered with factory delegate or additional parameters.
/// </summary>
public static readonly DiagnosticDescriptor UnsupportedRegistrationSignature = new(
id: "DECOW020",

Check warning on line 24 in src/LayeredCraft.DecoWeaver.Generators/Descriptors.cs

View workflow job for this annotation

GitHub Actions / build / build

Enable analyzer release tracking for the analyzer project containing rule 'DECOW020' (https://github.com/dotnet/roslyn/blob/main/src/RoslynAnalyzers/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md)

Check warning on line 24 in src/LayeredCraft.DecoWeaver.Generators/Descriptors.cs

View workflow job for this annotation

GitHub Actions / build / build

Enable analyzer release tracking for the analyzer project containing rule 'DECOW020' (https://github.com/dotnet/roslyn/blob/main/src/RoslynAnalyzers/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md)
title: "Unsupported DI registration signature for decorator",
messageFormat: "The type '{0}' has [DecoratedBy] attributes but is registered using a factory delegate or additional parameters. " +
"DecoWeaver only supports the parameterless registration: AddScoped<TService, TImplementation>(). " +
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// DecoWeaver/Emit/InterceptorEmitter.cs
// DecoWeaver/Emit/InterceptorEmitter.cs

using DecoWeaver.Model;
using DecoWeaver.OutputGenerators;
using DecoWeaver.Providers;
using DecoWeaver.Util;
using LayeredCraft.DecoWeaver.Model;
using LayeredCraft.DecoWeaver.OutputGenerators;
using LayeredCraft.DecoWeaver.Providers;
using LayeredCraft.DecoWeaver.Util;
using Microsoft.CodeAnalysis.CSharp;

namespace DecoWeaver.Emit;
namespace LayeredCraft.DecoWeaver.Emit;

/// <summary>Emits the interceptor source for DecoWeaver's open-generic decoration rewrite.</summary>
internal static class InterceptorEmitter
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// DecoWeaver/Emit/TemplateConstants.cs
// DecoWeaver/Emit/TemplateConstants.cs

namespace DecoWeaver.Emit;
namespace LayeredCraft.DecoWeaver.Emit;

/// <summary>
/// Constants for Scriban template resource paths.
Expand Down
4 changes: 2 additions & 2 deletions src/LayeredCraft.DecoWeaver.Generators/Emit/TemplateHelper.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
// DecoWeaver/Emit/TemplateHelper.cs
// DecoWeaver/Emit/TemplateHelper.cs

using System.Collections.Concurrent;
using System.Reflection;
using Scriban;

namespace DecoWeaver.Emit;
namespace LayeredCraft.DecoWeaver.Emit;

/// <summary>
/// Helper class for loading, caching, and rendering Scriban templates from embedded resources.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<IncludeBuildOutput>false</IncludeBuildOutput>
<IsPackable>true</IsPackable>
<ImplicitUsings>true</ImplicitUsings>
<PackageId>DecoWeaver</PackageId>
<PackageId>LayeredCraft.DecoWeaver</PackageId>
<AssemblyName>$(PackageId)</AssemblyName>
<RootNamespace>$(PackageId)</RootNamespace>
<Title>$(PackageId)</Title>
Expand All @@ -18,16 +18,16 @@

<ItemGroup>
<!-- Keep Roslyn deps private so they don't leak to consumers -->
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.11.0" PrivateAssets="all"/>
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="5.3.0" PrivateAssets="all" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="5.0.0" PrivateAssets="all" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" PrivateAssets="all" />
<PackageReference Include="Polyfill" Version="9.17.0">
<PackageReference Include="Polyfill" Version="9.23.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Scriban" Version="6.5.5" IncludeAssets="build" PrivateAssets="all" />
<PackageReference Include="Scriban" Version="7.0.5" IncludeAssets="build" PrivateAssets="all" />
<ProjectReference Include="..\LayeredCraft.DecoWeaver.Attributes\LayeredCraft.DecoWeaver.Attributes.csproj" PrivateAssets="All" />
<PackageReference Update="Microsoft.SourceLink.GitHub" Version="10.0.103">
<PackageReference Update="Microsoft.SourceLink.GitHub" Version="10.0.201">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
Expand All @@ -47,13 +47,22 @@
<!-- Pack this generator DLL as an analyzer so consumers pick it up automatically -->
<ItemGroup>
<None Include="$(OutputPath)\$(AssemblyName).dll" Pack="true" PackagePath="analyzers/dotnet/cs" Visible="false" />
<None Include="..\LayeredCraft.DecoWeaver.Attributes\bin\$(Configuration)\netstandard2.0\DecoWeaver.Attributes.dll" Pack="true" PackagePath="lib/netstandard2.0" Visible="true" />
<None Include="..\LayeredCraft.DecoWeaver.Attributes\bin\$(Configuration)\netstandard2.0\DecoWeaver.Attributes.xml" Pack="true" PackagePath="lib/netstandard2.0" Visible="false" />
<None Include="DecoWeaver.props" Pack="true" PackagePath="build" />
<None Include="DecoWeaver.targets" Pack="true" PackagePath="build" />
<None Include="..\LayeredCraft.DecoWeaver.Attributes\bin\$(Configuration)\netstandard2.0\LayeredCraft.DecoWeaver.Attributes.dll" Pack="true" PackagePath="lib/netstandard2.0" Visible="true" />
<None Include="..\LayeredCraft.DecoWeaver.Attributes\bin\$(Configuration)\netstandard2.0\LayeredCraft.DecoWeaver.Attributes.xml" Pack="true" PackagePath="lib/netstandard2.0" Visible="false" />
<None Include="LayeredCraft.DecoWeaver.props" Pack="true" PackagePath="build" />
<None Include="LayeredCraft.DecoWeaver.targets" Pack="true" PackagePath="build" />
</ItemGroup>
<ItemGroup>
<Folder Include="Roslyn\" />
</ItemGroup>

<ItemGroup>
<!-- Scriban 7 source include already provides these AOT/trimming attributes.
Remove Polyfill's copies to avoid duplicate type definitions. -->
<Compile Remove="$(NuGetPackageRoot)polyfill\9.23.0\contentFiles\cs\netstandard2.0\Trimming\DynamicallyAccessedMembersAttribute.cs" />
<Compile Remove="$(NuGetPackageRoot)polyfill\9.23.0\contentFiles\cs\netstandard2.0\Trimming\DynamicallyAccessedMemberTypes.cs" />
<Compile Remove="$(NuGetPackageRoot)polyfill\9.23.0\contentFiles\cs\netstandard2.0\Trimming\RequiresDynamicCodeAttribute.cs" />
<Compile Remove="$(NuGetPackageRoot)polyfill\9.23.0\contentFiles\cs\netstandard2.0\Trimming\RequiresUnreferencedCodeAttribute.cs" />
<Compile Remove="$(NuGetPackageRoot)polyfill\9.23.0\contentFiles\cs\netstandard2.0\Trimming\UnconditionalSuppressMessageAttribute.cs" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
<!-- Ensure both properties get our namespace; some SDKs gate on either -->
<InterceptorsNamespaces>$(InterceptorsNamespaces);DecoWeaver.Generated</InterceptorsNamespaces>
<InterceptorsPreviewNamespaces>$(InterceptorsPreviewNamespaces);DecoWeaver.Generated</InterceptorsPreviewNamespaces>
<InterceptorsNamespaces>$(InterceptorsNamespaces);LayeredCraft.DecoWeaver.Generated</InterceptorsNamespaces>
<InterceptorsPreviewNamespaces>$(InterceptorsPreviewNamespaces);LayeredCraft.DecoWeaver.Generated</InterceptorsPreviewNamespaces>
</PropertyGroup>
</Project>
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<Project>
<Target Name="DecoWeaver_EnableInterceptors" BeforeTargets="CoreCompile">
<Target Name="LayeredCraft_DecoWeaver_EnableInterceptors" BeforeTargets="CoreCompile">
<!-- Optional friendly check: your generator already has a language gate,
so leave errors commented unless you want a hard MSBuild failure.

<Error Condition="'$(LangVersion)' == 'default'"
Text="DecoWeaver requires C# 11+ compiler. Set <LangVersion>latest</LangVersion> or a supported version." />
Text="LayeredCraft_DecoWeaver requires C# 11+ compiler. Set <LangVersion>latest</LangVersion> or a supported version." />
-->
</Target>
</Project>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace DecoWeaver.Model;
namespace LayeredCraft.DecoWeaver.Model;

/// <summary>
/// One decoration declared on an implementation type definition (works great for open generics).
Expand Down
4 changes: 2 additions & 2 deletions src/LayeredCraft.DecoWeaver.Generators/Model/TypeDefId.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using DecoWeaver.Util;
using LayeredCraft.DecoWeaver.Util;
using Microsoft.CodeAnalysis;

namespace DecoWeaver.Model;
namespace LayeredCraft.DecoWeaver.Model;

/// <summary>
/// Identity of a type definition (no type arguments).
Expand Down
6 changes: 3 additions & 3 deletions src/LayeredCraft.DecoWeaver.Generators/Model/TypeId.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis;

namespace DecoWeaver.Model;
namespace LayeredCraft.DecoWeaver.Model;

/// <summary>
/// A (possibly generic) type: definition + zero or more type arguments.
Expand All @@ -24,7 +24,7 @@ internal static TypeId Create(ITypeSymbol t)
// Normalize: for constructed generics keep args; for unbound keep definition.
case INamedTypeSymbol nt:
{
var def = nt.ConstructedFrom; // canonical definition (`N)
var def = nt.ConstructedFrom; // canonical definition (…`N)
var defId = TypeDefId.Create(def);

// Open generic via typeof(Foo<>) or IsUnboundGenericType:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// DecoWeaver/OutputGenerators/DecoWeaverInterceptorsSources.cs
// DecoWeaver/OutputGenerators/DecoWeaverInterceptorsSources.cs

using DecoWeaver.Emit;
using DecoWeaver.Providers;
using LayeredCraft.DecoWeaver.Emit;
using LayeredCraft.DecoWeaver.Providers;

namespace DecoWeaver.OutputGenerators;
namespace LayeredCraft.DecoWeaver.OutputGenerators;

/// <summary>
/// Generates the complete DecoWeaverInterceptors source file using the unified Scriban template.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis;

namespace DecoWeaver.Providers;
namespace LayeredCraft.DecoWeaver.Providers;

/// <summary>
/// Shared helper methods for reading attribute arguments across all providers.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using DecoWeaver.Model;
using LayeredCraft.DecoWeaver.Model;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;

namespace DecoWeaver.Providers;
namespace LayeredCraft.DecoWeaver.Providers;

internal enum RegistrationKind
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using DecoWeaver.Model;
using LayeredCraft.DecoWeaver.Model;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp.Syntax;

namespace DecoWeaver.Providers;
namespace LayeredCraft.DecoWeaver.Providers;

internal static class DecoratedByGenericProvider
{
Expand Down Expand Up @@ -37,7 +37,7 @@ internal static bool Predicate(SyntaxNode node, CancellationToken _)
ContainingNamespace:
{
Name: "Attributes",
ContainingNamespace: { Name: "DecoWeaver", ContainingNamespace.IsGlobalNamespace: true }
ContainingNamespace: { Name: "DecoWeaver", ContainingNamespace: { Name: "LayeredCraft", ContainingNamespace.IsGlobalNamespace: true } }
}
})
continue;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using DecoWeaver.Model;
using LayeredCraft.DecoWeaver.Model;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp.Syntax;

namespace DecoWeaver.Providers;
namespace LayeredCraft.DecoWeaver.Providers;

internal static class DecoratedByNonGenericProvider
{
Expand Down Expand Up @@ -36,7 +36,7 @@ internal static bool Predicate(SyntaxNode node, CancellationToken _)
ContainingNamespace:
{
Name: "Attributes",
ContainingNamespace: { Name: "DecoWeaver", ContainingNamespace.IsGlobalNamespace: true }
ContainingNamespace: { Name: "DecoWeaver", ContainingNamespace: { Name: "LayeredCraft", ContainingNamespace.IsGlobalNamespace: true } }
}
})
continue;
Expand Down
Loading