Skip to content

[Repo Assist] Add comprehensive type provider guide and improve index page (closes #453)#455

Merged
dsyme merged 2 commits intomasterfrom
repo-assist/fix-issue-453-overhaul-docs-449fb1c1bb0a11a3
Feb 26, 2026
Merged

[Repo Assist] Add comprehensive type provider guide and improve index page (closes #453)#455
dsyme merged 2 commits intomasterfrom
repo-assist/fix-issue-453-overhaul-docs-449fb1c1bb0a11a3

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

🤖 This PR was created by Repo Assist, an automated AI assistant.

Addresses #453 — "Completely overhaul docs".

What this PR does

New file: docs/guide.md — a 700-line comprehensive guide covering:

  • Erased vs generative type providers — comparison table, when to use each
  • Your first erased type provider — step-by-step from the minimal skeleton to properties, methods, and constructors with state
  • Static parameters — required, optional with defaults, the warning when all params have defaults
  • Quotations in type providers — quotation literals, ProvidedTypeBuilder.MakeGenericType, UncheckedQuotations, cross-targeting rules
  • Your first generative type providerProvidedAssembly, isErased = false, key differences from erased
  • Members in depth — constructors (erased vs generative args semantics), events, fields, AddMembersDelayed
  • Interfaces (generative) — isInterface = true, AddInterfaceImplementation, DefineMethodOverride
  • Enumerations (generative) — SetEnumUnderlyingType, ProvidedField.Literal
  • Nested types — erased and generative, AddNestedTypes
  • XML documentationAddXmlDoc, AddXmlDocDelayed
  • Custom attributesAddCustomAttribute on types, methods, properties, parameters
  • Units of measureProvidedMeasureBuilder, compound units
  • nonNullable and hideObjectMethods
  • Abstract classes and base constructorsIsImplicitConstructor, BaseConstructorCall
  • TestingProvidedTypesTesting, MakeSimulatedTypeProviderConfig, GenerateProvidedTypeInstantiation
  • Packaging — NuGet layout, bundling dependencies, assembly replacement map
  • Common pitfalls summary table

Each section includes a "Test coverage" note pointing to the matching test file in tests/.

Updated: docs/index.md — rewritten as a navigation landing page with a table linking to the guide, technical notes, and debugging pages, and a summary of what the SDK is.

Test Status

Documentation-only change — no compilation artifacts affected. The code samples in the guide are backed by existing tests:

  • Erased providers: tests/BasicErasedProvisionTests.fs
  • Generative providers: tests/BasicGenerativeProvisionTests.fs
  • Interfaces: tests/GenerativeInterfacesTests.fs
  • Enumerations: tests/GenerativeEnumsProvisionTests.fs
  • Abstract classes: tests/GenerativeAbstractClassesTests.fs

Notes for maintainer

This is a first substantial pass. Follow-on work tracked in #453 could include:

  • Adding more examples to examples/
  • Expanding the testing section with a walkthrough of cross-targeting snapshot tests
  • Adding a page specifically for the "split provider" project structure with a worked example

Generated by Repo Assist

To install this workflow, run gh aw add githubnext/agentics/workflows/repo-assist.md@f2c5cf1e4af58e09a93ba0703c6bf084711b265f. View source at https://github.com/githubnext/agentics/tree/f2c5cf1e4af58e09a93ba0703c6bf084711b265f/workflows/repo-assist.md.

Addresses #453: overhaul documentation to be a clear, authoritative
technical guide to creating type providers.

Changes:
- docs/guide.md (new): 700-line comprehensive guide covering:
  - Erased vs generative type providers
  - Step-by-step erased provider (properties, methods, constructors, state)
  - Static parameters (required and optional with defaults)
  - Quotations, cross-targeting, UncheckedQuotations
  - Generative provider basics and differences from erased
  - Interfaces, enumerations, nested types, events, fields
  - XML documentation, custom attributes, units of measure
  - nonNullable and hideObjectMethods
  - Abstract classes and base constructor calls
  - Testing with ProvidedTypesTesting
  - Packaging (NuGet layout, bundling dependencies)
  - Common pitfalls summary table
  Each section references the matching test file in tests/

- docs/index.md: rewritten as a navigation landing page with table
  linking to guide, technical-notes, and debugging pages

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dsyme dsyme marked this pull request as ready for review February 26, 2026 10:57
@dsyme dsyme merged commit 080cafa into master Feb 26, 2026
2 checks passed
dsyme pushed a commit that referenced this pull request Mar 7, 2026
🤖 *This PR was created by Repo Assist, an automated AI assistant.*

Prepares the RELEASE_NOTES.md for version **8.3.0** — a minor release
capturing significant improvements merged since 8.2.0 (February 24).

## Changes since 8.2.0

| Type | PR | Description |
|------|----|-------------|
| 🐛 Bug fix | #432 | Fix custom attributes on nested erased types |
| 🐛 Bug fix | #458 | Fix `GetNestedType` on
`TypeSymbol`/`ProvidedTypeSymbol` for generic provided types |
| 🐛 Bug fix | #459 | Fix mutable variable captures in
`QuotationSimplifier` — promote to ref cells |
| ⚡ Performance | #443 | Memoize `transType` in `AssemblyCompiler` to
reduce redundant type translation |
| ⚡ Performance | #457 | Cache `transTypeRef` and `transMethRef` in
assembly compiler |
| ✨ Feature | #428 | New warning when all static parameters in a type
provider are optional |
| 📚 Docs | #455 | Documentation guide overhaul |
| 🧪 Tests | #442 | Add coverage tests and Coverage build target |
| 🔧 Toolchain | #431 | Update to .NET 8 SDK and toolchain |

This is a minor version bump (8.2.0 → 8.3.0) due to the new feature
(#428) and significant improvements. If preferred, a patch release
(8.2.1) is also reasonable given the emphasis on bug fixes.

## Test Status

This PR only modifies RELEASE_NOTES.md. The build/test status for the
underlying changes is tracked in the individual PRs listed above (all
passed CI before merging).

---

*To release: merge this PR, then tag `v8.3.0` and publish the NuGet
package via the existing build pipeline.*




> Generated by [Repo
Assist](https://github.com/fsprojects/FSharp.TypeProviders.SDK/actions/runs/22448247879)
>
> To install this [agentic
workflow](https://github.com/githubnext/agentics/tree/afb00b92a9514fee9a14c583f059a03d05738f70/workflows/repo-assist.md),
run
> ```
> gh aw add
githubnext/agentics@afb00b9
> ```

<!-- gh-aw-agentic-workflow: Repo Assist, engine: copilot, id:
22448247879, workflow_id: repo-assist, run:
https://github.com/fsprojects/FSharp.TypeProviders.SDK/actions/runs/22448247879
-->

<!-- gh-aw-workflow-id: repo-assist -->

---------

Co-authored-by: Repo Assist <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant