Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Inconsistent expression evaluation for nested expressions

Abierto
#1,260 1 comentario 2 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
68/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
java
Área
compilers

Línea de trabajo

Comienza en src/main/java/com/hubspot/jinjava/el/ext/ExtendedParser.java alrededor de las líneas 305-316 y reproduce las cuatro expresiones del issue. Compara el análisis sintáctico del literal de lista dentro de la expresión anidada con el análisis sintáctico a través de la variable categories. Se considera terminado cuando la negación produce el mismo resultado esperado en ambas formas.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Consider following case:

{{ "c" in ["a", "b"] }} // outputs false
{{ !("c" in ["a", "b"]) }} // also outputs false


{% set categories = ["a", "b"] %}
{{  "c" in categories }} // outputs false
{{  !("c" in categories) }} // correctly outputs true

I'd expect expression evaluation to behave the same both for versions - with or without variables used, but it does not.

I've tracked this down to what i believe is a bug in parser https://github.com/HubSpot/jinjava/blob/43bbea7e772a961316f575f26297f198eb3c655a/src/main/java/com/hubspot/jinjava/el/ext/ExtendedParser.java#L305-L316

If there is a coma between ( and ) token parser will interpret it as a tuple declaration and otherwise as nested expression. However this seems incorrect in the above case as I am not trying to declare a tuple, just using a list literal in nested comparison

Lenguaje dominante
Java
Estrellas
787
Forks
184
Merge medio
6 d 22 h
PR fusionados (30 d)
1

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de HubSpot/jinjava

Todos los issues de HubSpot/jinjava

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.