Skip to content

Releases: TimeWarpEngineering/timewarp-source-generators

v1.0.0-beta.7

17 Oct 17:03
16664ae

Choose a tag to compare

Changes

Bug Fixes

  • Fix inherited interface members generation (Closes #27)

    • Interface delegation now generates members from ALL inherited interfaces
    • For example, IList<T> now generates all 13+ members from IList<T>, ICollection<T>, and IEnumerable<T>
    • Previously only generated 4 members from the direct interface
  • Fix indexer generation (Closes #25)

    • Indexers now generate with correct parameter syntax: public T this[int index]
    • Fixes CS1551 error ("Indexers must have at least one parameter")
    • Enables delegation for interfaces like IList<T>, IDictionary<K,V>, etc.

Improvements

  • Local NuGet cache - Added RestorePackagesPath to use local cache instead of global
  • Improved duplicate detection - Method keys now include return types to handle overloads properly
  • Version management - Use $(Version) variable for single source of truth

Documentation

  • Comprehensive documentation for interface delegation generator
  • Usage examples with code samples
  • Requirements and constraints
  • Diagnostic error descriptions (TW1001, TW1002, TW1003)

Generated Code Example

Interface delegation with inherited members:

public partial class ListWrapper<T> : IList<T>
{
    [Implements]
    private readonly List<T> InnerList = new();
}

Generates all inherited members:

  • ICollection: Add, Clear, Contains, CopyTo, Remove, Count, IsReadOnly
  • IEnumerable: GetEnumerator
  • IList: IndexOf, Insert, RemoveAt, this[int index]

Known Limitations

  • IEnumerable.GetEnumerator() (non-generic) requires explicit interface implementation due to return type conflict. This will be addressed in a future update.

Full Changelog

  • Fix indexer generation with proper parameters
  • Add inherited interface member processing
  • Add local NuGet cache configuration
  • Update documentation with examples
  • Bump version to beta.7
  • Use variable for centralized version management

🤖 Generated with Claude Code

v1.0.0-beta.6

17 Oct 13:48
b51ac46

Choose a tag to compare

Changes

Bug Fixes

  • Fix indexer generation in interface delegation (Closes #25)
    • Indexers now generate with correct parameter syntax: public T this[int index]
    • Fixes CS1551 error ("Indexers must have at least one parameter")
    • Enables delegation for interfaces like IList<T>, IDictionary<K,V>, etc.

Documentation

  • Add comprehensive documentation for interface delegation generator
    • Usage examples with code samples
    • Requirements and constraints
    • Diagnostic error descriptions (TW1001, TW1002, TW1003)
  • Add file name rule analyzer documentation

Before/After

Before (broken):

public T this[]  // CS1551 error
{
    get => field.this[];
}

After (fixed):

public T this[int index]
{
    get => field[index];
    set => field[index] = value;
}

Full Changelog

  • Fix indexer generation in GeneratePropertyDelegation method
  • Add property.IsIndexer check to detect indexers
  • Generate correct parameter lists and indexer access syntax
  • Add documentation to readme.md
  • Bump version to beta.6

🤖 Generated with Claude Code

v1.0.0-beta.5

17 Oct 12:32
1a6838e

Choose a tag to compare

Changes

  • Add interface delegation generator infrastructure with [Implements] attribute
  • Refactor build configuration following timewarp-nuru patterns
  • Simplify NuGet configuration and remove package lock files
  • Update CI/CD workflow for new build structure
  • Add MSBuild variables for better path management
  • Refactor coding style with explicit type declarations and improved formatting

Features

Interface Delegation Generator

  • New [Implements] attribute for Delphi-style interface delegation
  • Automatically generates forwarding methods for interface members
  • Supports both fields and properties
  • Includes diagnostics for proper usage (TW1001, TW1002, TW1003)

Build System Improvements

  • Centralized package version management with Directory.Packages.props
  • Simplified nuget.config without packageSourceMapping
  • MSBuild variables: $(RepositoryRoot), $(PackagesDirectory), $(Version)
  • Clean separation of source and test configurations

🤖 Generated with Claude Code

v1.0.0-beta.4

21 Aug 11:45
8d8e148

Choose a tag to compare

v1.0.0-beta.4 Pre-release
Pre-release

What's Changed

🔄 Refactored

  • Removed HelloWorldGenerator (example code no longer needed)
  • Refactored diagnostic IDs for clarity:
    • TWG prefix for Source Generators (TWG001)
    • TWA prefix for Analyzers (TWA001, TWA002)

✨ Improvements

  • Added *.razor.cs files to default exclusions for FileNameRuleAnalyzer
    • Razor component code-behind files must match their .razor file names

📦 Version

  • Bumped to v1.0.0-beta.4

Full Changelog: v1.0.0-beta.3...v1.0.0-beta.4

v1.0.0-beta.3 - TW0003 Analyzer Fix

02 Aug 19:17
152fbf6

Choose a tag to compare

What's Changed

  • Fixed TW0003 file name analyzer to properly handle editorconfig exclusions
  • Changed behavior to merge configured exclusions with defaults instead of replacing them
  • Added missing default exclusions for common generated files

Bug Fixes

  • Fixed editorconfig reading: Changed from GlobalOptions to file-specific options
  • Now merges user-configured exclusions with built-in defaults instead of replacing them

Improvements

  • Added default exclusions for:
    • *.AssemblyInfo.cs
    • *.AssemblyAttributes.cs
    • *.GlobalUsings.g.cs
  • Fixed code style warnings in analyzer
  • Updated test project configuration

Full Changelog: v1.0.0-beta.2...v1.0.0-beta.3

v1.0.0-beta.2 - Symbol Package Fix

02 Aug 17:17
a6534de

Choose a tag to compare

Pre-release

🐛 Bug Fixes

  • Fixed NuGet publish error by disabling symbol package generation
  • Symbol packages (.snupkg) are no longer created, preventing the 400 error from NuGet.org

📦 Installation

dotnet add package TimeWarp.SourceGenerators --version 1.0.0-beta.2

🔧 Technical Details

  • Set <IncludeSymbols>false</IncludeSymbols> in Directory.Build.props
  • Removed <SymbolPackageFormat> property
  • Main package continues to publish as TimeWarp.SourceGenerators

🤖 Generated with Claude Code

v1.0.0-beta.1 - Initial Beta Release

02 Aug 16:57
f5be198

Choose a tag to compare

Pre-release

🎉 Initial Beta Release

This is the first beta release of TimeWarp.SourceGenerators, providing powerful C# source generation utilities.

✨ Features

  • Delegate generation for high-performance method invocation
  • Automatic source code generation for common patterns
  • Seamless integration with .NET build process

📦 Installation

dotnet add package TimeWarp.SourceGenerators --version 1.0.0-beta.1

🔧 Requirements

  • .NET Standard 2.0 compatible
  • C# 9.0 or later

📝 Notes

This is a beta release. Please report any issues or feedback on our GitHub repository.

🤖 Generated with Claude Code