InlineParser: `@rbs @ivar` annotation is reported as unused unless it is the first thing in the class body
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 82/100
Línea de trabajo
Empieza en lib/rbs/inline_parser.rb, en InlineParser#visit_class_or_module_body, y reproduce el ejemplo de clase mostrado con RBS::InlineParser.parse. Sigue cómo each_enclosed_block gestiona el body y las anotaciones a nivel de clase. La tarea está terminada cuando la anotación después de def bar ya no produce UnusedInlineAnnotation y produce un InstanceVariableMember.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
rbs 4.2.0
class Foo
def bar; end
# @rbs @a: Integer
X = 1
end
RBS::InlineParser.parse reports UnusedInlineAnnotation for @rbs @a: Integer and no InstanceVariableMember is created. Moving the annotation above def bar makes it work.
Cause: InlineParser#visit_class_or_module_body calls comments.each_enclosed_block(child_node) on the body StatementsNode (whose line range spans from the first member to the last) and reports every block inside it as unused, before the class-level each_enclosed_block(node) that handles InstanceVariableAnnotation runs. Only blocks located before the first member survive.
https://github.com/ruby/rbs/blob/v4.2.0/lib/rbs/inline_parser.rb (visit_class_or_module_body)
- Lenguaje dominante
- Ruby
- Estrellas
- 2.2k
- Forks
- 258
- Merge medio
- 1 d 4 h
- PR fusionados (30 d)
- 52
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin 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 ruby/rbs
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 57/100
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
Issues similares
-
message-patterns
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
sisimai/rb-sisimai#468 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 7 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 7 días
-
NoMethodError in auth#createAbiertobugsnag
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
JoeMcB/improvcoaches#827 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
TheOdinProject/curriculum#31465 ·
Los mantenedores suelen responder en 1 día