Printed quotations show a struct tuple as `NewTuple`
Los mantenedores suelen responder en 3 días
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 72/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- fsharp
- Área
- developer-experience
Línea de trabajo
Empieza por localizar el código del impresor de quotations y sus pruebas en el repositorio de F#; el issue no indica ningún archivo ni prueba. Reproduce el caso con las dos quotations printfn "%A" proporcionadas e inspecciona cómo se imprime NewTuple junto a Patterns.NewStructTuple. El trabajo estará terminado cuando la tupla struct se imprima como NewStructTuple (Value (1), Value ("a")) y la tupla de referencia siga imprimiéndose como NewTuple.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Expr.ToString () and %A print the construction of a struct tuple exactly like the construction of a reference tuple, so a printed quotation does not show which tuple kind it builds.
Repro steps
printfn "%A" <@ struct (1, "a") @>
printfn "%A" <@ (1, "a") @>
Expected behavior
The struct tuple prints with the name of its active pattern and constructor (#8193): NewStructTuple (Value (1), Value ("a")).
Actual behavior
Both lines print NewTuple (Value (1), Value ("a")). Only Expr.Type tells them apart. Patterns.NewStructTuple matches the first quotation only, so the printer is the one place that hides the difference.
This matters for code that rewrites quotations: Expr.NewTuple always builds System.Tuple, so a rewrite that rebuilds a struct tuple with it changes the type of the tree, and a test that compares printed quotations cannot catch that.
Known workarounds
Compare Expr.Type (IsValueType) instead of the printed text.
Related information
- FSharp.Core 10.1.0.0, .NET SDK 10.0.402 (
dotnet fsi), Windows 11
- Lenguaje dominante
- F#
- Estrellas
- 4.3k
- Forks
- 882
- Merge medio
- 4 d 20 h
- PR fusionados (30 d)
- 134
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de dotnet/fsharp
-
Needs-Triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
Los mantenedores suelen responder en 3 días
-
`FSharpValue.PreComputeTuplePropertyInfo` reports an out-of-range index for every struct tuplePosiblemente ocupada @T-Gro la tomó hace 3 días. AbiertoBug Needs-Triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
Los mantenedores suelen responder en 3 días
-
Semantic classification cache for opened documents is never populated (written to the unopened-documents cache)Posiblemente ocupada @xperiandri la tomó hace 48 días. AbiertoNeeds-Triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
Los mantenedores suelen responder en 3 días
-
Needs-Triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
dotnet/fsharp#20265 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
Bug Needs-Triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 3 días
Todos los issues de dotnet/fsharp
Issues similares
-
docs good first issue
Dificultad 1/5 1-3 horas Aptitud para principiantes 84/100
Usenova-Labs/usenova-backend#35 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
lugassawan/swe-workbench#823 ·
Los mantenedores suelen responder en 1 día
-
clawsweeper:bulk-filed clawsweeper:needs-product-decision clawsweeper:no-new-fix-pr impact:ux-friction issue-rating: 🌊 off-meta tidepool P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
openclaw/openclaw#181158 · 1 comentario · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apify/apify-mcp-server#1684 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Automattic/data-liberation-agent#953 ·
Los mantenedores suelen responder en 1 día