Skip to content

[Pituguês] Inconsistência no truthiness de listas vazias com o operador '!' fora de estruturas condicionais #1344

@lele-sf

Description

@lele-sf

Descrição

Existe uma inconsistência na coerção booleana (truthiness) de listas vazias ao utilizar o operador !. O interpretador avalia corretamente uma lista vazia como falsa quando ela está dentro de uma estrutura condicional se ! pilha. No entanto, fora de uma condicional (como na instrução retorna ! pilha), a lista vazia é avaliada como um objeto existente/verdadeiro, fazendo com que a negação ! resulte incorretamente em falso.

Nota: Embora o operador ! seja uma particularidade do dialeto e não exista nativamente no Python (que utiliza not), o comportamento de avaliação do conteúdo da lista deveria ser consistente em todas as estruturas do Pituguês.

Como reproduzir

Executar uma função que use a negação de uma lista vazia no retorno:

funcao teste():
    pilha = []
    retorna ! pilha

Comportamento esperado

O operador ! deve se comportar de forma consistente com o comportamento de truthiness do Python (onde listas vazias são avaliadas como falsas). Se se ! pilha entende que a pilha vazia é falsa (e executa o bloco), a expressão retorna ! pilha deveria resolver de forma idêntica e retornar verdadeiro.

Comportamento real

O retorna ! pilha avalia o objeto existente da lista e retorna falso, ignorando se ela possui ou não elementos.

Workaround

Usar explicitamente a checagem de tamanho: retorna tamanho(pilha) == 0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    💎 recompensa-6Pagamos recompensa: 6 dólarespituguêsItem específico do dialeto Pituguês

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions