Tags: m31coding/M31.FluentAPI
Tags
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
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>
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
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
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
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
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
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
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
PreviousNext