[SR-15051] Swift should suggest updating existing @available attribute when you use an insufficiently available declaration
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Área
- compilers, testing-qa
Línea de trabajo
Empieza en TypeCheckAvailability.cpp, en fixAvailabilityForDecl(), e inspecciona las pruebas de diagnóstico de availability existentes. Sigue el retorno anticipado para las declaraciones que tienen un atributo @available existente y cubre después los atributos simples, los atributos para varios OS y los atributos de formato largo. La tarea está terminada cuando los diagnósticos sugieren reemplazar la versión de availability insuficiente y pasan las pruebas relevantes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
| Previous ID | SR-15051 |
| Radar | rdar://problem/81802673 |
| Original Reporter | @beccadax |
| Type | Improvement |
Additional Detail from JIRA
| Votes | 0 |
| Component/s | Compiler |
| Labels | Improvement, DiagnosticsQoI, StarterBug |
| Assignee | mininny (JIRA) |
| Priority | Medium |
md5: 9db411fbe711e822a955f04325204e6d
Issue Description:
Currently, fixAvailabilityForDecl() in TypeCheckAvailability.cpp exits early if there is already an @available attribute on the declaration, with a comment noting work that should be done in the future:
/// Emit a diagnostic note and Fix-It to add an @available attribute
/// on the given declaration for the given version range.
static void fixAvailabilityForDecl(SourceRange ReferenceRange, const Decl *D,
const VersionRange &RequiredRange,
ASTContext &Context) {
// ...irrelevant code omitted...
if (getActiveAvailableAttribute(D, Context)) {
// For QoI, in future should emit a fixit to update the existing attribute.
return;
}
Indeed, we should make this change. For instance, if you give the compiler this code:
@available(macOS 42, *) func foo() {}
@available(macOS 12, *) func bar() {
foo()
}
Swift should emit a note with a fix-it replacing "macOS 12" with "macOS 42".
Your implementation, should you choose to commit it, should test not only this easy case with one simple @available attribute, but also cases with multiple OSes and long-form @available attributes. You will certainly need to update some existing tests; those might adequately cover this, but I'm not sure.
- Lenguaje dominante
- Swift
- Estrellas
- 70.4k
- Forks
- 10.8k
- Merge medio
- 2 d 2 h
- PR fusionados (30 d)
- 461
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 swiftlang/swift
-
triage needed
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
triage needed
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
Foundation Windows
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
triage needed
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
triage needed
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Todos los issues de swiftlang/swift
Issues similares
-
type: docs
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
googleapis/google-cloud-swift#971 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
bitcoindevkit/bdk-ffi#1125 ·
-
Move wallpaper setting Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
mozilla-mobile/firefox-ios#35743 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
manaflow-ai/cmux#13417 ·
-
triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
ionic-team/capacitor#8616 ·