Skip to content

Tags: m31coding/M31.FluentAPI

Tags

v1.10.0

Toggle v1.10.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: Suppress collection methods (#41)

* fix(ExampleProject): suppress function not used warning

* feat: suppress withItem and withZeroItems method generation

* test: CollectionMemberClassWithSuppression

* chore: increase nuget versions to 1.10.0

* docs(readme): update

* docs(readme): fix typo

v1.9.1

Toggle v1.9.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Remove M31.FluentApi.Attributes using from generated code file (#38)

* fix: don't add M31.FluentApi.Attributes using to generated code file

* fix: unit tests

* chore: bump nuget versions

v1.9.0

Toggle v1.9.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: Inheritance (#32)

* Inheritance implementation for Fluent API

* refactor(ClassInfoFactory): minor changes

* test: InheritedClass

* fix(ClassInfoFactory): compare to SpecialType in GetMembers

* test: InheritedClassProtectedMembers and InheritedClassProtectedSetters

* docs: mention inheritance in features

* fix: inheritance tests

* test: inherited record

* improve(ExampleProject): add ExchangeStudent example

* test: add failing test CanExecuteInheritedClassPrivateSetters

* fix: make test InheritedClassPrivateSetters work

* fix: InnerBodyForMethodGenerator

* refactor(ClassInfoFactory): use List instead of HashSet

* fix: commit generated file

* chore: bump nuget version

---------

Co-authored-by: Oleh Formaniuk <oformaniuk@microsoft.com>
Co-authored-by: Kevin Schaal <kevin.schaal@m31coding.com>

v1.8.0

Toggle v1.8.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: Constructor selection (#30)

* feat: use constructor with least amount of parameters

* refactor: rename test

* test: GenericClassPrivateConstructor

* fix(ConstructorGenerator): add BindingFlags.NonPublic

* feat: report diagnostics for missing or ambiguous constructor

* chore: adjust analyzer release tracking

* fix(Analyzers): remove MissingConstructor diagnosis

* test: CanDetectAmbiguousConstructors

* chore: increase nuget versions to 1.8

* chore(ConstructorGenerator): add doc comment

* fix(ClassInfoFactory): comment

* refactor(ClassInfoFactory): improve variable name

v1.7.0

Toggle v1.7.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: Lambda methods by default (#24)

* feat: fluent lambda per default

* feat: lambda parameters for compounds

* fix: lambda method parameter names

* feat(LambdaByDefault): LambdaBuilderInfo for the FluentCollectionAttributeInfo

* fix(FluentApiInfoCreator): remove assumptions from TryGetLambdaBuilderInfoOfCollectionType

* feat: WithItem method with lambda parameter

* test(FluentLambdaCollectionClass): add expected result

* test: CanExecuteFluentLambdaCollectionClass

* feat: WithItems method with lambda parameters

* improve(Readme): feature list and acknowledgements

* chore: make FluentLambda obsolete

* fix(Readme)

* chore: replace FluentLambda with FluentMember in exmaples and tests

* chore(Storybook): NestedFluentApis example instead of FluentLambdaExample

* fix(ArrayCreator): remove semicolon in CreateCollectionFromEnumerable

* fix(ArrayCreator): add using only when needed

* test: FluentLambdaCollectionClass2

* test: FluentLambdaManyCollectionsClass and FluentLambdaManyPrivateCollectionsClass

* improve: property order in FluentLambdaManyPrivateCollectionsClass and FluentLambdaManyCollectionsClass

* fix: execution tests

* improve(CodeGenerationExecutionTests): blocks between different subtests

* test: add failing test TryBreakFluentApiClass3

* refactor(CollectionMethodCreator): cleanup

* fix: make TryBreakFluentApiClass3 test work

* chore: adjust storybook and readme

* chore: increase package version to 1.7.0

* fix: minor change

v1.6.0

Toggle v1.6.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: FluentSkippable (#19)

* feat(FluentSkippable): FluentSkippable attribute

* feat(FluentSkippable): make SkippableMemberClass test work

* refactor(BuilderStepMethodCreator): create static methods from BuilderStepMethods

* refactor(BuilderStepMethodCreator): cleanup

* feat(FluentSkippable): make SkippableFirstMemberClass test work

* test: SkippableSeveralMembersClass

* fix(SkippableSeveralMembersClass): remove blank line

* feat(FluentSkippable): last step cannot be skipped diagnostic

* test: add failing test SkippableLoopClass

* Test(SkippableLoopClass): add expected code

* test(SkippableLoopClass): add desired CreatedStudent.g.cs

* feat(FluentSkippable): BuilderStepsGenerator new version

* feat(FluentSkippable): loop handling classes

* feat(FluentSkippable): make SkippableLoopClass test work

* fix: remove obsolete EmptyInterfaceBuilderMethod class

* refactor: rename BuilderStepsGeneration folder and namespace

* fix: rename file

* test: CanExecuteSkippableLoopClass

* fix: rename FirstStepBuilderMethod and SingleStepBuilderMethod classes

* test: TarjansSccAlgorithmTests

* test: ContinueWithInForkClass

* test: SkippableFirstTwoMembersClass

* test: SkippableTwoLoopsClass

* test: SkippableForkMembersClass

* fix: address resharper warnings

* feat(FluentSkippable): adjust examples and storybook

* docs(Readme): add FluentSkippable

* chore: increase nuget versions to 1.6.0

v1.5.0

Toggle v1.5.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: Support partial classes (#18)

* improve(SourceGenerator): comments

* feat: support partial classes

* test: PartialClass

* refactor(TestClassCodeGenerator): improve naming

* improve(FluentLambdaTestClass): Address class in separate file

* fix(M31.FluentApi.Tests.csproj): remove item group

* fix(FluentLambdaClassInDifferentNamespace): move Address to separate file

* fix(FluentLambdaNullablePropertyClass): move Address into separate file

* fix(FluentLambdaSingleStepClass): move address to separate file

* fix: address Resharper warnings

* test(FluentApiAnalyzer): structs, records, and record structs

* test: DuplicateMethodPartialClass

* chore: increase nuget version to 1.5.0

* fix: minor improvements

* improve(ListAndDictionary): NotSupportedException instead of NotImplementedException

* refactor: minor change

v1.4.0

Toggle v1.4.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: FluentLambda and InitialStep (#17)

* fix(Readme): add media from githubusercontent

* feat: add FluentLambdaAttribute

* test: add test class FluentLambdaClass

* feat: explicit interface implementations for the generated builder

* refactor(MethodSignature): rename isStandAlone to isSignatureForInterface

* fix(MethodSignature): no default parameter values for explicit interface implementations

* test: rerun tests and write results with explicit interface implementations

* refactor(MethodSignature): don't erase values in copy constructor

* test: EmptyClass

* feat: implement InitialStep method and test with OneMemberClass, TwoMemberClass and ThreeMemberClass

* fix(TestDataProvider): remove single test filter method

* fix: GenericClassWithConstraints test

* test: rerun tests and write generated code as expected code

* fix: names of test classes

* fix(Readme): typo

* feat(DuplicateMethodsChecker): check for reserved method names

* chore: add M31FA021 (reserved method name) to shipped analyzer releases

* test: ThreePrivateMembersClass

* test: add more code generation execution tests

* test: add CanExecutePrivateConstructorClass

* feat(FluentLambda): make FluentLambdaClass test work

* feat(FluentLambda): FluentLambdaMemberWithoutFluentApi diagnostic

* test: CanDetectFluentLambdaMemberWithoutFluentApiClass

* test: CanExecuteFluentLambdaClass

* test: FluentLambdaSingleStepClass and CanExecuteFluentLambdaSingleStepClass

* test: FluentLambdaNullablePropertyClass

* test: add failing test FluentLambdaRecursiveClass

* test(FluentLambdaRecursiveClass): add name property

* refactor(BuilderClassFields): single GetNewFieldName method

* refactor(BuilderClassFields): rename to ReservedVariableNames

* feat: make test FluentLambdaRecursiveClass work

* test: CanExecuteFluentLambdaRecursiveClass

* test: add failing test TryBreakFluentApiClass1

* fix: make test TryBreakFluentApiClass1 work

* test: TryBreakFluentApiClass2

* test(FluentLambdaRecursiveClass): add name property

* fix: don't use builder type prefix for info fields in the constructor

* test: rerun tests and write results as expected results

* test: FluentLambdaClassInDifferentNamespace

* fix: address resharper warnings

* fix: address more resharper warnings

* fix: failing tests due to resharper annotations

* fix: remove obsolete comment

* chore: optimize description and package tags

* improve(ExampleProject): add person examples to Program.cs

* fix: nullable private method property

* improve(ExampleProject): add HashCode class

* improve(ExampleProject): add DockerFile example

* fix(ExampleProject): rename file

* docs(Readme): add FluentLambda

* fix: InitialStep for empty class

* fix: remove obsolete NoMember class

* improve: add city to FluentLambda tests

* fix(TestDataProvider): remove NoMemberClass

* fix(CodeGenerationTests): adjust for new Address model

* improve(FluentLambda): also generate normal member builder method

* fix(FluentLambdaClassInDifferentNamespace): take normal builder method into account

* improve(Storybook): add FluentLambda

* docs(Readme): minor changes

* improve(Storybook): revise texts

* chore: increase nuget versions to 1.4.0

v1.3.0

Toggle v1.3.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: FluentResult (#13)

* fix(Readme): typo

* fix(Readme): typos in code example

* feat(FluentReturn): add FluentReturnAttribute

* feat(FluentReturn): bookkeep return type and respectReturnType values

* refactor(InnerBodyCreation): rename classes

* refactor(InnerBodyGeneration): rename methods

* refactor(InnerBodyGeneration): rename method

* test: add FluentReturnSingleStepClass

* feat(TestDataProvider): add filter method for running a single test

* feat(Generics): make FluentReturnSingleStepClass test work

* refactor(BuilderStepMethod): add CreateMethod and CreateInterfaceMethod methods

* fix(InnerBodyForMethodGenerator): use parameter returnType

* test: FluentReturnSingleStepPrivateMethodsClass

* feat(FluentReturn): adjust BuildReflectionCodeWithRefAndOutParameters method

* test: FluentReturn method with ref parameter

* fix(InnerBodyForMethodGenerator): suppress nullability for methods that return a result

* test: FluentReturnMultiStepClass and FluentReturnMultiStepPrivateMethodsClass

* feat(CodeGenerationTests): write generated code only if it changed

* fix(FluentReturnMultiStepClass): remove unused using

* test: CanExecuteFluentReturnSingleStepPrivateMethodsClass and CanExecuteFluentReturnMultiStepPrivateMethodsClass

* feat: detect conflicting control attributes FluentBreak and FluentReturn

* docs(Readme): fix typo

* test: ContinueWithOfOverloadedMethodClass

* feat(Storybook): add FluentReturn example

* docs(Readme): add FluentReturn description and example

* chore: increase nuget versions to 1.3.0

* chore(Nuget): add readme

v1.2.0

Toggle v1.2.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: generics (#11)

* feat(Generics): remove UnsupportedGenericType diagnostic and test

* feat(Generics): add failing test and augment TypeData class

* chore: move warning in FullyQualifiedTypeClass.Student

* feat(Generics): add generic type parameters to builder class

* improve(Modifiers)

* feat(Generics): generic fluent API classes

* test: GenericClassPrivateConstructor

* refactor: rename GenericsInfo to GenericInfo

* test: add failing test GenericClassWithConstraints

* feat(Generics): add GenericTypeConstraint class

* refactor(GenericInfo): make constructor internal

* refactor: move generic classes to separate folder

* feat(Generics): GenericConstraints and GenericTypeParameter abstractions

* feat(Generics): class generics work

* feat: split implemented interfaces across several lines

* test: add GenericClassWithGenericMethod and GenericMethodWithConstraintsClass tests

* docs(Readme): remove youtube and twitter reference

* refactor: introduce Generics class

* feat(Generics): add GenericInfo to MethodSymbolInfo

* feat(Generics): generic methods

* refactor: rename GenericsInfo to GenericInfo

* fix(GenericConstraints): remove unused property ParametersWithConstraints

* refactor: add GenericConstraintClause class

* fix: formatting

* refactor: memberToSetMemberCode and methodToCallMethodCode (wip)

* refactor: introduce class InnerBodyCreationDelegates

* docs: improve clarifying comments

* feat(Generics): method overloads

* test: improve GenericClassWithGenericMethod test

* feat(Generics): get generic method via reflection

* test: CanExecuteGenericClassWithGenericMethods

* fix: MakeGenericMethod before Invoke for generic methods

* test: CanExecuteGenericClassWithOverloadedGenericMethod

* test: CanExecuteGenericClassWithPrivateOverloadedGenericMethod

* test: rerun tests with new generated GetMethod code for private methods

* test: detect duplicate overloaded methods

* fix(InnerBodyCreationDelegates): don't compute method identities

* improve: add blank lines between interface method signatures

* fix: formatting

* docs: add fluent api logo

* chore: increase nuget versions to 1.2.0